pi-harness-runtime 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (612) hide show
  1. package/.pi/plugins/herdr-clipboard/herdr-plugin.toml +22 -0
  2. package/.pi/plugins/herdr-clipboard/start-bridge.sh +29 -0
  3. package/.pi/plugins/herdr-clipboard/tmux-watch.sh +39 -0
  4. package/CHANGELOG.md +175 -13
  5. package/README.md +87 -1
  6. package/config.toml.example +35 -0
  7. package/harness/autonomous-review.ts +5 -2
  8. package/harness/e2e/chatgpt-quota-scraper.ts +478 -0
  9. package/harness/e2e/glm-quota-scraper.ts +449 -0
  10. package/harness/herdr-agents.ts +6 -2
  11. package/harness/loop-code-agent.ts +4 -1
  12. package/harness/loop-review-agent.ts +5 -6
  13. package/harness/notification-events.ts +2 -2
  14. package/harness/task-graph.d.ts +51 -0
  15. package/index.ts +147 -2
  16. package/package.json +17 -16
  17. package/packages/a2a-adapter/dist/index.d.ts +1 -0
  18. package/packages/a2a-adapter/dist/index.d.ts.map +1 -1
  19. package/packages/a2a-adapter/dist/index.js +1 -0
  20. package/packages/a2a-adapter/dist/index.js.map +1 -1
  21. package/packages/a2a-adapter/package.json +1 -1
  22. package/packages/a2a-adapter/src/discovery.ts +106 -0
  23. package/packages/a2a-adapter/src/index.ts +8 -0
  24. package/packages/architecture-generator/package.json +21 -0
  25. package/packages/architecture-generator/src/adr.ts +51 -0
  26. package/packages/architecture-generator/src/index.ts +9 -0
  27. package/packages/architecture-generator/src/mermaid.ts +76 -0
  28. package/packages/architecture-generator/src/types.ts +30 -0
  29. package/packages/auth/package.json +1 -1
  30. package/packages/autonomous-refactor/package.json +1 -1
  31. package/packages/autonomous-runtime/package.json +1 -1
  32. package/packages/cache-strategy/package.json +1 -1
  33. package/packages/capability-registry/package.json +1 -1
  34. package/packages/checkpoint/package.json +1 -1
  35. package/packages/cli-plugin-sdk/package.json +2 -2
  36. package/packages/clipboard/package.json +1 -1
  37. package/packages/clipboard/src/copy-sync.ts +52 -3
  38. package/packages/clipboard/src/index.ts +1 -0
  39. package/packages/clipboard/src/paste-bridge.ts +86 -0
  40. package/packages/clipboard-plugin/package.json +17 -0
  41. package/packages/clipboard-plugin/src/index.ts +74 -0
  42. package/packages/clipboard-plugin/src/types.ts +30 -0
  43. package/packages/code-generation/package.json +1 -1
  44. package/packages/code-review/package.json +1 -1
  45. package/packages/codex-adapter/package.json +2 -2
  46. package/packages/config-capture/package.json +23 -0
  47. package/packages/config-capture/src/index.ts +357 -0
  48. package/packages/context-compiler/package.json +1 -1
  49. package/packages/context-discovery/package.json +1 -1
  50. package/packages/context-manager/package.json +1 -1
  51. package/packages/cookie-sanitizer/package.json +1 -1
  52. package/packages/cost-optimizer/package.json +1 -1
  53. package/packages/dependency-analyzer/package.json +1 -1
  54. package/packages/django-plugin/package.json +1 -1
  55. package/packages/doc-generator/package.json +1 -1
  56. package/packages/evaluation-engine/package.json +1 -1
  57. package/packages/evaluation-runner/package.json +1 -1
  58. package/packages/event-bus/package.json +1 -1
  59. package/packages/event-bus/src/herdr-bus.ts +4 -1
  60. package/packages/event-store/package.json +1 -1
  61. package/packages/experience-replay/package.json +1 -1
  62. package/packages/feedback-collector/package.json +1 -1
  63. package/packages/file-copy-helper/package.json +17 -0
  64. package/packages/file-copy-helper/src/extension.debug.ts +226 -0
  65. package/packages/file-copy-helper/src/extension.ts +226 -0
  66. package/packages/file-copy-helper/src/index.ts +1 -0
  67. package/packages/framework-detector/package.json +1 -1
  68. package/packages/framework-plugin-sdk/package.json +1 -1
  69. package/packages/frappe-plugin/package.json +1 -1
  70. package/packages/generic-web-plugin/package.json +1 -1
  71. package/packages/health-monitor/package.json +1 -1
  72. package/packages/intent-analyzer/package.json +1 -1
  73. package/packages/knowledge-graph/package.json +24 -0
  74. package/packages/knowledge-graph/src/graph-extractor.ts +338 -0
  75. package/packages/knowledge-graph/src/index.ts +27 -0
  76. package/packages/knowledge-graph/src/mcp-client.ts +237 -0
  77. package/packages/knowledge-graph/src/provenance-linker.ts +101 -0
  78. package/packages/knowledge-graph/src/types.ts +86 -0
  79. package/packages/knowledge-retrieval/package.json +25 -0
  80. package/packages/knowledge-retrieval/src/index.ts +18 -0
  81. package/packages/knowledge-retrieval/src/mcp-client.ts +212 -0
  82. package/packages/knowledge-retrieval/src/types.ts +112 -0
  83. package/packages/laravel-plugin/package.json +1 -1
  84. package/packages/learning-engine/package.json +1 -1
  85. package/packages/mcp-adapter/package.json +1 -1
  86. package/packages/memory-engine/package.json +1 -1
  87. package/packages/milestone-manager/package.json +21 -0
  88. package/packages/milestone-manager/src/engine.ts +105 -0
  89. package/packages/milestone-manager/src/index.ts +6 -0
  90. package/packages/milestone-manager/src/types.ts +28 -0
  91. package/packages/model-registry/package.json +1 -1
  92. package/packages/nextjs-plugin/package.json +1 -1
  93. package/packages/notification/package.json +1 -1
  94. package/packages/notification/src/adapters/line-adapter.ts +119 -0
  95. package/packages/notification/src/index.ts +1 -0
  96. package/packages/notification/src/notification-center.ts +6 -0
  97. package/packages/notification/src/types.ts +7 -2
  98. package/packages/observability/package.json +1 -1
  99. package/packages/okf-indexer/package.json +12 -0
  100. package/packages/okf-indexer/src/cli.ts +25 -0
  101. package/packages/okf-indexer/src/indexer.ts +186 -0
  102. package/packages/performance-optimizer/package.json +1 -1
  103. package/packages/privilege-broker/package.json +1 -1
  104. package/packages/project-analyzer/package.json +1 -1
  105. package/packages/project-bootstrap/package.json +24 -0
  106. package/packages/project-bootstrap/src/bootstrap.ts +166 -0
  107. package/packages/project-bootstrap/src/frappe.ts +97 -0
  108. package/packages/project-bootstrap/src/index.ts +27 -0
  109. package/packages/project-bootstrap/src/minimal.ts +45 -0
  110. package/packages/project-bootstrap/src/types.ts +66 -0
  111. package/packages/project-bootstrap/src/typescript.ts +114 -0
  112. package/packages/projection-engine/package.json +1 -1
  113. package/packages/prompt-compiler/package.json +1 -1
  114. package/packages/prompt-versioning/package.json +1 -1
  115. package/packages/provider-adapter-sdk/package.json +1 -1
  116. package/packages/provider-router/dist/src/types.js +1 -1
  117. package/packages/provider-router/package.json +1 -1
  118. package/packages/provider-selector/package.json +1 -1
  119. package/packages/providers/package.json +1 -1
  120. package/packages/providers/src/adapters.ts +1 -1
  121. package/packages/providers/src/deepagents-adapter.ts +2 -2
  122. package/packages/quota-manager/package.json +1 -1
  123. package/packages/quota-manager/src/quota-manager.ts +1 -4
  124. package/packages/rate-limiter/package.json +1 -1
  125. package/packages/react-vite-plugin/package.json +1 -1
  126. package/packages/release-manager/package.json +1 -1
  127. package/packages/requirement-compiler/package.json +1 -1
  128. package/packages/runtime/package.json +1 -1
  129. package/packages/runtime/src/runtime-api.ts +16 -16
  130. package/packages/scheduler/package.json +1 -1
  131. package/packages/scheduler-adapter/package.json +1 -1
  132. package/packages/session/dist/manager.d.ts.map +1 -1
  133. package/packages/session/dist/manager.js +3 -1
  134. package/packages/session/dist/manager.js.map +1 -1
  135. package/packages/session/package.json +1 -1
  136. package/packages/session/src/manager.ts +4 -1
  137. package/packages/session-api/package.json +1 -1
  138. package/packages/session-export/package.json +1 -1
  139. package/packages/shared-context/package.json +1 -1
  140. package/packages/skill-registry/package.json +1 -1
  141. package/packages/sprint-planner/package.json +1 -1
  142. package/packages/subscription-engine/package.json +1 -1
  143. package/packages/task-compiler/package.json +1 -1
  144. package/packages/tencentdb-memory/package.json +23 -0
  145. package/packages/tencentdb-memory/src/client.ts +130 -0
  146. package/packages/tencentdb-memory/src/index.ts +32 -0
  147. package/packages/tencentdb-memory/src/loader.ts +150 -0
  148. package/packages/tencentdb-memory/src/mcp-tools.ts +213 -0
  149. package/packages/tencentdb-memory/src/types.ts +101 -0
  150. package/packages/tencentdb-sync/package.json +26 -0
  151. package/packages/tencentdb-sync/src/cli.ts +363 -0
  152. package/packages/tencentdb-sync/src/client.ts +268 -0
  153. package/packages/tencentdb-sync/src/config.ts +139 -0
  154. package/packages/tencentdb-sync/src/index.ts +15 -0
  155. package/packages/test-data-generator/package.json +1 -1
  156. package/packages/test-generator/package.json +1 -1
  157. package/packages/todo-bd-sync/package.json +1 -1
  158. package/packages/todo-bd-sync/src/detector.ts +25 -4
  159. package/packages/todo-bd-sync/src/extension.ts +8 -86
  160. package/packages/todo-bd-sync/src/task-analyzer.ts +314 -0
  161. package/packages/token-estimation/package.json +1 -1
  162. package/packages/token-optimizer/package.json +1 -1
  163. package/packages/tui/package.json +1 -1
  164. package/packages/types/package.json +1 -1
  165. package/packages/types/src/agent-worker-types.d.ts +206 -0
  166. package/packages/types/src/ai-providers.d.ts +36 -0
  167. package/packages/types/src/runtime-types.d.ts +6 -0
  168. package/packages/workflow-events/package.json +1 -1
  169. package/packages/workspace-scanner/package.json +1 -1
  170. package/packages/worktree/package.json +1 -1
  171. package/packages/worktree/src/worktree.ts +1 -4
  172. package/packages/write-review/package.json +22 -0
  173. package/packages/write-review/src/blackboard.ts +249 -0
  174. package/packages/write-review/src/gate.ts +169 -0
  175. package/packages/write-review/src/index.ts +65 -0
  176. package/packages/write-review/src/injection.ts +190 -0
  177. package/packages/write-review/src/review.ts +206 -0
  178. package/packages/write-review/src/trigger.ts +133 -0
  179. package/packages/write-review/src/types.ts +90 -0
  180. package/prompts/agents/reviewer.md +57 -0
  181. package/prompts/agents/writer.md +42 -0
  182. package/prompts/slash-commands.md +40 -0
  183. package/prompts/tencentdb-connect.md +35 -0
  184. package/prompts/tencentdb-setup.md +101 -0
  185. package/prompts/tencentdb.md +88 -0
  186. package/prompts/write-review.md +50 -0
  187. package/scripts/check-version-sync.ts +80 -0
  188. package/scripts/convert-skills-to-okf.ts +168 -0
  189. package/scripts/copy-plugins.js +56 -0
  190. package/scripts/gist-auth.ts +64 -0
  191. package/scripts/gist-poll.sh +127 -0
  192. package/scripts/release/actions-monitor.ts +357 -0
  193. package/scripts/release/adapters/base.ts +95 -0
  194. package/scripts/release/adapters/detector.ts +181 -0
  195. package/scripts/release/adapters/node-workspace.ts +230 -0
  196. package/scripts/release/adapters/python.ts +236 -0
  197. package/scripts/release/adapters/rust.ts +129 -0
  198. package/scripts/release/adapters/tauri.ts +298 -0
  199. package/scripts/release/orchestrator.ts +278 -0
  200. package/scripts/release-all.ts +211 -0
  201. package/scripts/scan-secrets.sh +68 -0
  202. package/scripts/skills-sync.ts +487 -0
  203. package/packages/a2a-adapter/tsconfig.json +0 -5
  204. package/packages/auth/dist/minimax-browser-auth.d.ts +0 -89
  205. package/packages/auth/dist/minimax-browser-auth.d.ts.map +0 -1
  206. package/packages/auth/dist/minimax-browser-auth.js +0 -890
  207. package/packages/auth/dist/minimax-browser-auth.js.map +0 -1
  208. package/packages/auth/dist/run-minimax-auth.d.ts +0 -19
  209. package/packages/auth/dist/run-minimax-auth.d.ts.map +0 -1
  210. package/packages/auth/dist/run-minimax-auth.js +0 -112
  211. package/packages/auth/dist/run-minimax-auth.js.map +0 -1
  212. package/packages/auth/tsconfig.json +0 -9
  213. package/packages/autonomous-refactor/tsconfig.json +0 -5
  214. package/packages/autonomous-runtime/test/inbox.test.mjs +0 -266
  215. package/packages/autonomous-runtime/tsconfig.json +0 -22
  216. package/packages/autonomous-runtime/tsconfig.tsbuildinfo +0 -1
  217. package/packages/cache-strategy/tsconfig.json +0 -5
  218. package/packages/capability-registry/src/types.d.ts.map +0 -1
  219. package/packages/capability-registry/src/types.js +0 -10
  220. package/packages/capability-registry/src/types.js.map +0 -1
  221. package/packages/capability-registry/tsconfig.json +0 -22
  222. package/packages/checkpoint/tsconfig.json +0 -33
  223. package/packages/checkpoint/tsconfig.tsbuildinfo +0 -1
  224. package/packages/cli-plugin-sdk/tsconfig.json +0 -11
  225. package/packages/clipboard/dist/src/clipboard.d.ts +0 -11
  226. package/packages/clipboard/dist/src/clipboard.d.ts.map +0 -1
  227. package/packages/clipboard/dist/src/clipboard.js +0 -51
  228. package/packages/clipboard/dist/src/clipboard.js.map +0 -1
  229. package/packages/clipboard/dist/src/copy-sync.d.ts +0 -27
  230. package/packages/clipboard/dist/src/copy-sync.d.ts.map +0 -1
  231. package/packages/clipboard/dist/src/copy-sync.js +0 -170
  232. package/packages/clipboard/dist/src/copy-sync.js.map +0 -1
  233. package/packages/clipboard/dist/src/gist-relay.d.ts +0 -48
  234. package/packages/clipboard/dist/src/gist-relay.d.ts.map +0 -1
  235. package/packages/clipboard/dist/src/gist-relay.js +0 -186
  236. package/packages/clipboard/dist/src/gist-relay.js.map +0 -1
  237. package/packages/clipboard/dist/src/github-login.d.ts +0 -16
  238. package/packages/clipboard/dist/src/github-login.d.ts.map +0 -1
  239. package/packages/clipboard/dist/src/github-login.js +0 -69
  240. package/packages/clipboard/dist/src/github-login.js.map +0 -1
  241. package/packages/clipboard/dist/src/index.d.ts +0 -4
  242. package/packages/clipboard/dist/src/index.d.ts.map +0 -1
  243. package/packages/clipboard/dist/src/index.js +0 -3
  244. package/packages/clipboard/dist/src/index.js.map +0 -1
  245. package/packages/clipboard/dist/src/types.d.ts +0 -13
  246. package/packages/clipboard/dist/src/types.d.ts.map +0 -1
  247. package/packages/clipboard/dist/src/types.js +0 -5
  248. package/packages/clipboard/dist/src/types.js.map +0 -1
  249. package/packages/clipboard/test/mojibake.test.mjs +0 -143
  250. package/packages/clipboard/tsconfig.json +0 -10
  251. package/packages/code-generation/tsconfig.json +0 -33
  252. package/packages/code-generation/tsconfig.tsbuildinfo +0 -1
  253. package/packages/code-review/tsconfig.json +0 -33
  254. package/packages/code-review/tsconfig.tsbuildinfo +0 -1
  255. package/packages/codex-adapter/tsconfig.json +0 -5
  256. package/packages/context-compiler/tsconfig.json +0 -17
  257. package/packages/context-discovery/dist/src/discover.d.ts +0 -3
  258. package/packages/context-discovery/dist/src/discover.d.ts.map +0 -1
  259. package/packages/context-discovery/dist/src/discover.js +0 -42
  260. package/packages/context-discovery/dist/src/discover.js.map +0 -1
  261. package/packages/context-discovery/dist/src/discovery.d.ts +0 -28
  262. package/packages/context-discovery/dist/src/discovery.d.ts.map +0 -1
  263. package/packages/context-discovery/dist/src/discovery.js +0 -21
  264. package/packages/context-discovery/dist/src/discovery.js.map +0 -1
  265. package/packages/context-discovery/dist/src/index.d.ts +0 -3
  266. package/packages/context-discovery/dist/src/index.d.ts.map +0 -1
  267. package/packages/context-discovery/dist/src/index.js +0 -2
  268. package/packages/context-discovery/dist/src/index.js.map +0 -1
  269. package/packages/context-discovery/dist/src/types.d.ts +0 -16
  270. package/packages/context-discovery/dist/src/types.d.ts.map +0 -1
  271. package/packages/context-discovery/dist/src/types.js +0 -2
  272. package/packages/context-discovery/dist/src/types.js.map +0 -1
  273. package/packages/context-discovery/tsconfig.json +0 -10
  274. package/packages/context-manager/tsconfig.json +0 -6
  275. package/packages/cookie-sanitizer/tsconfig.json +0 -8
  276. package/packages/cost-optimizer/tsconfig.json +0 -22
  277. package/packages/dependency-analyzer/dist/src/analyzer.d.ts +0 -17
  278. package/packages/dependency-analyzer/dist/src/analyzer.d.ts.map +0 -1
  279. package/packages/dependency-analyzer/dist/src/analyzer.js +0 -119
  280. package/packages/dependency-analyzer/dist/src/analyzer.js.map +0 -1
  281. package/packages/dependency-analyzer/dist/src/imports.d.ts +0 -12
  282. package/packages/dependency-analyzer/dist/src/imports.d.ts.map +0 -1
  283. package/packages/dependency-analyzer/dist/src/imports.js +0 -73
  284. package/packages/dependency-analyzer/dist/src/imports.js.map +0 -1
  285. package/packages/dependency-analyzer/dist/src/index.d.ts +0 -4
  286. package/packages/dependency-analyzer/dist/src/index.d.ts.map +0 -1
  287. package/packages/dependency-analyzer/dist/src/index.js +0 -3
  288. package/packages/dependency-analyzer/dist/src/index.js.map +0 -1
  289. package/packages/dependency-analyzer/dist/src/types.d.ts +0 -28
  290. package/packages/dependency-analyzer/dist/src/types.d.ts.map +0 -1
  291. package/packages/dependency-analyzer/dist/src/types.js +0 -5
  292. package/packages/dependency-analyzer/dist/src/types.js.map +0 -1
  293. package/packages/dependency-analyzer/test/analyzer.test.js +0 -37
  294. package/packages/dependency-analyzer/tsconfig.json +0 -10
  295. package/packages/django-plugin/tsconfig.json +0 -12
  296. package/packages/doc-generator/tsconfig.json +0 -6
  297. package/packages/evaluation-engine/tsconfig.json +0 -8
  298. package/packages/evaluation-runner/tsconfig.json +0 -5
  299. package/packages/event-bus/dist/src/bus.d.ts +0 -15
  300. package/packages/event-bus/dist/src/bus.d.ts.map +0 -1
  301. package/packages/event-bus/dist/src/bus.js +0 -98
  302. package/packages/event-bus/dist/src/bus.js.map +0 -1
  303. package/packages/event-bus/dist/src/herdr-bus.d.ts +0 -121
  304. package/packages/event-bus/dist/src/herdr-bus.d.ts.map +0 -1
  305. package/packages/event-bus/dist/src/herdr-bus.js +0 -322
  306. package/packages/event-bus/dist/src/herdr-bus.js.map +0 -1
  307. package/packages/event-bus/dist/src/index.d.ts +0 -6
  308. package/packages/event-bus/dist/src/index.d.ts.map +0 -1
  309. package/packages/event-bus/dist/src/index.js +0 -4
  310. package/packages/event-bus/dist/src/index.js.map +0 -1
  311. package/packages/event-bus/dist/src/types.d.ts +0 -27
  312. package/packages/event-bus/dist/src/types.d.ts.map +0 -1
  313. package/packages/event-bus/dist/src/types.js +0 -10
  314. package/packages/event-bus/dist/src/types.js.map +0 -1
  315. package/packages/event-bus/tsconfig.json +0 -10
  316. package/packages/event-store/dist/src/index.d.ts +0 -3
  317. package/packages/event-store/dist/src/index.d.ts.map +0 -1
  318. package/packages/event-store/dist/src/index.js +0 -2
  319. package/packages/event-store/dist/src/index.js.map +0 -1
  320. package/packages/event-store/dist/src/store.d.ts +0 -15
  321. package/packages/event-store/dist/src/store.d.ts.map +0 -1
  322. package/packages/event-store/dist/src/store.js +0 -139
  323. package/packages/event-store/dist/src/store.js.map +0 -1
  324. package/packages/event-store/dist/src/types.d.ts +0 -48
  325. package/packages/event-store/dist/src/types.d.ts.map +0 -1
  326. package/packages/event-store/dist/src/types.js +0 -5
  327. package/packages/event-store/dist/src/types.js.map +0 -1
  328. package/packages/event-store/src/types.d.ts.map +0 -1
  329. package/packages/event-store/src/types.js +0 -5
  330. package/packages/event-store/src/types.js.map +0 -1
  331. package/packages/event-store/tsconfig.json +0 -10
  332. package/packages/experience-replay/tsconfig.json +0 -8
  333. package/packages/feedback-collector/tsconfig.json +0 -5
  334. package/packages/framework-detector/tsconfig.json +0 -33
  335. package/packages/framework-detector/tsconfig.tsbuildinfo +0 -1
  336. package/packages/framework-plugin-sdk/tsconfig.json +0 -33
  337. package/packages/framework-plugin-sdk/tsconfig.tsbuildinfo +0 -1
  338. package/packages/frappe-plugin/tsconfig.json +0 -12
  339. package/packages/generic-web-plugin/tsconfig.json +0 -12
  340. package/packages/health-monitor/tsconfig.json +0 -5
  341. package/packages/intent-analyzer/dist/src/analyzer.d.ts +0 -13
  342. package/packages/intent-analyzer/dist/src/analyzer.d.ts.map +0 -1
  343. package/packages/intent-analyzer/dist/src/analyzer.js +0 -239
  344. package/packages/intent-analyzer/dist/src/analyzer.js.map +0 -1
  345. package/packages/intent-analyzer/dist/src/index.d.ts +0 -3
  346. package/packages/intent-analyzer/dist/src/index.d.ts.map +0 -1
  347. package/packages/intent-analyzer/dist/src/index.js +0 -2
  348. package/packages/intent-analyzer/dist/src/index.js.map +0 -1
  349. package/packages/intent-analyzer/dist/src/types.d.ts +0 -26
  350. package/packages/intent-analyzer/dist/src/types.d.ts.map +0 -1
  351. package/packages/intent-analyzer/dist/src/types.js +0 -7
  352. package/packages/intent-analyzer/dist/src/types.js.map +0 -1
  353. package/packages/intent-analyzer/tsconfig.json +0 -10
  354. package/packages/laravel-plugin/tsconfig.json +0 -12
  355. package/packages/learning-engine/tsconfig.json +0 -8
  356. package/packages/mcp-adapter/tsconfig.json +0 -8
  357. package/packages/memory-engine/tsconfig.json +0 -8
  358. package/packages/model-registry/src/types.d.ts.map +0 -1
  359. package/packages/model-registry/src/types.js +0 -5
  360. package/packages/model-registry/src/types.js.map +0 -1
  361. package/packages/model-registry/tsconfig.json +0 -22
  362. package/packages/nextjs-plugin/tsconfig.json +0 -12
  363. package/packages/notification/dist/adapters/email-adapter.d.ts +0 -17
  364. package/packages/notification/dist/adapters/email-adapter.d.ts.map +0 -1
  365. package/packages/notification/dist/adapters/email-adapter.js +0 -89
  366. package/packages/notification/dist/adapters/email-adapter.js.map +0 -1
  367. package/packages/notification/dist/adapters/ntfy-adapter.d.ts +0 -17
  368. package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +0 -1
  369. package/packages/notification/dist/adapters/ntfy-adapter.js +0 -84
  370. package/packages/notification/dist/adapters/ntfy-adapter.js.map +0 -1
  371. package/packages/notification/dist/adapters/telegram-adapter.d.ts +0 -17
  372. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +0 -1
  373. package/packages/notification/dist/adapters/telegram-adapter.js +0 -88
  374. package/packages/notification/dist/adapters/telegram-adapter.js.map +0 -1
  375. package/packages/notification/dist/adapters/webhook-adapter.d.ts +0 -15
  376. package/packages/notification/dist/adapters/webhook-adapter.d.ts.map +0 -1
  377. package/packages/notification/dist/adapters/webhook-adapter.js +0 -64
  378. package/packages/notification/dist/adapters/webhook-adapter.js.map +0 -1
  379. package/packages/notification/dist/base-adapter.d.ts +0 -36
  380. package/packages/notification/dist/base-adapter.d.ts.map +0 -1
  381. package/packages/notification/dist/base-adapter.js +0 -39
  382. package/packages/notification/dist/base-adapter.js.map +0 -1
  383. package/packages/notification/dist/index.d.ts +0 -9
  384. package/packages/notification/dist/index.d.ts.map +0 -1
  385. package/packages/notification/dist/index.js +0 -9
  386. package/packages/notification/dist/index.js.map +0 -1
  387. package/packages/notification/dist/notification-center.d.ts +0 -46
  388. package/packages/notification/dist/notification-center.d.ts.map +0 -1
  389. package/packages/notification/dist/notification-center.js +0 -228
  390. package/packages/notification/dist/notification-center.js.map +0 -1
  391. package/packages/notification/dist/types.d.ts +0 -65
  392. package/packages/notification/dist/types.d.ts.map +0 -1
  393. package/packages/notification/dist/types.js +0 -7
  394. package/packages/notification/dist/types.js.map +0 -1
  395. package/packages/notification/tsconfig.json +0 -8
  396. package/packages/observability/tsconfig.json +0 -33
  397. package/packages/observability/tsconfig.tsbuildinfo +0 -1
  398. package/packages/performance-optimizer/tsconfig.json +0 -8
  399. package/packages/privilege-broker/config/privileges.yaml.example +0 -172
  400. package/packages/privilege-broker/tsconfig.json +0 -22
  401. package/packages/privilege-broker/tsconfig.tsbuildinfo +0 -1
  402. package/packages/project-analyzer/tsconfig.json +0 -33
  403. package/packages/project-analyzer/tsconfig.tsbuildinfo +0 -1
  404. package/packages/projection-engine/dist/src/engine.d.ts +0 -61
  405. package/packages/projection-engine/dist/src/engine.d.ts.map +0 -1
  406. package/packages/projection-engine/dist/src/engine.js +0 -87
  407. package/packages/projection-engine/dist/src/engine.js.map +0 -1
  408. package/packages/projection-engine/dist/src/index.d.ts +0 -2
  409. package/packages/projection-engine/dist/src/index.d.ts.map +0 -1
  410. package/packages/projection-engine/dist/src/index.js +0 -2
  411. package/packages/projection-engine/dist/src/index.js.map +0 -1
  412. package/packages/projection-engine/dist/src/project.d.ts +0 -3
  413. package/packages/projection-engine/dist/src/project.d.ts.map +0 -1
  414. package/packages/projection-engine/dist/src/project.js +0 -24
  415. package/packages/projection-engine/dist/src/project.js.map +0 -1
  416. package/packages/projection-engine/dist/src/types.d.ts +0 -55
  417. package/packages/projection-engine/dist/src/types.d.ts.map +0 -1
  418. package/packages/projection-engine/dist/src/types.js +0 -5
  419. package/packages/projection-engine/dist/src/types.js.map +0 -1
  420. package/packages/projection-engine/src/types.d.ts.map +0 -1
  421. package/packages/projection-engine/src/types.js +0 -5
  422. package/packages/projection-engine/src/types.js.map +0 -1
  423. package/packages/projection-engine/tsconfig.json +0 -10
  424. package/packages/prompt-compiler/tsconfig.json +0 -19
  425. package/packages/prompt-versioning/tsconfig.json +0 -5
  426. package/packages/provider-adapter-sdk/dist/tsconfig.tsbuildinfo +0 -1
  427. package/packages/provider-adapter-sdk/tsconfig.json +0 -34
  428. package/packages/provider-adapter-sdk/tsconfig.tsbuildinfo +0 -1
  429. package/packages/provider-router/tsconfig.json +0 -20
  430. package/packages/provider-selector/tsconfig.json +0 -6
  431. package/packages/providers/dist/adapters.d.ts +0 -133
  432. package/packages/providers/dist/adapters.d.ts.map +0 -1
  433. package/packages/providers/dist/adapters.js +0 -236
  434. package/packages/providers/dist/adapters.js.map +0 -1
  435. package/packages/providers/dist/deepagents-adapter.d.ts +0 -78
  436. package/packages/providers/dist/deepagents-adapter.d.ts.map +0 -1
  437. package/packages/providers/dist/deepagents-adapter.js +0 -323
  438. package/packages/providers/dist/deepagents-adapter.js.map +0 -1
  439. package/packages/providers/dist/glm-usage.d.ts +0 -102
  440. package/packages/providers/dist/glm-usage.d.ts.map +0 -1
  441. package/packages/providers/dist/glm-usage.js +0 -197
  442. package/packages/providers/dist/glm-usage.js.map +0 -1
  443. package/packages/providers/dist/index.d.ts +0 -11
  444. package/packages/providers/dist/index.d.ts.map +0 -1
  445. package/packages/providers/dist/index.js +0 -11
  446. package/packages/providers/dist/index.js.map +0 -1
  447. package/packages/providers/dist/openai-usage.d.ts +0 -103
  448. package/packages/providers/dist/openai-usage.d.ts.map +0 -1
  449. package/packages/providers/dist/openai-usage.js +0 -208
  450. package/packages/providers/dist/openai-usage.js.map +0 -1
  451. package/packages/providers/dist/provider-id.d.ts +0 -46
  452. package/packages/providers/dist/provider-id.d.ts.map +0 -1
  453. package/packages/providers/dist/provider-id.js +0 -113
  454. package/packages/providers/dist/provider-id.js.map +0 -1
  455. package/packages/providers/tsconfig.json +0 -8
  456. package/packages/quota-manager/dist/examples/tui-usage-integration.d.ts +0 -35
  457. package/packages/quota-manager/dist/examples/tui-usage-integration.d.ts.map +0 -1
  458. package/packages/quota-manager/dist/examples/tui-usage-integration.js +0 -73
  459. package/packages/quota-manager/dist/examples/tui-usage-integration.js.map +0 -1
  460. package/packages/quota-manager/dist/index.d.ts +0 -8
  461. package/packages/quota-manager/dist/index.d.ts.map +0 -1
  462. package/packages/quota-manager/dist/index.js +0 -8
  463. package/packages/quota-manager/dist/index.js.map +0 -1
  464. package/packages/quota-manager/dist/quota-manager.d.ts +0 -70
  465. package/packages/quota-manager/dist/quota-manager.d.ts.map +0 -1
  466. package/packages/quota-manager/dist/quota-manager.js +0 -260
  467. package/packages/quota-manager/dist/quota-manager.js.map +0 -1
  468. package/packages/quota-manager/dist/tui-usage-monitor.d.ts +0 -96
  469. package/packages/quota-manager/dist/tui-usage-monitor.d.ts.map +0 -1
  470. package/packages/quota-manager/dist/tui-usage-monitor.js +0 -268
  471. package/packages/quota-manager/dist/tui-usage-monitor.js.map +0 -1
  472. package/packages/quota-manager/tsconfig.json +0 -8
  473. package/packages/rate-limiter/tsconfig.json +0 -5
  474. package/packages/react-vite-plugin/tsconfig.json +0 -12
  475. package/packages/release-manager/tsconfig.json +0 -5
  476. package/packages/requirement-compiler/tsconfig.json +0 -22
  477. package/packages/runtime/dist/command-executor.d.ts +0 -129
  478. package/packages/runtime/dist/command-executor.d.ts.map +0 -1
  479. package/packages/runtime/dist/command-executor.js +0 -383
  480. package/packages/runtime/dist/command-executor.js.map +0 -1
  481. package/packages/runtime/dist/index.d.ts +0 -11
  482. package/packages/runtime/dist/index.d.ts.map +0 -1
  483. package/packages/runtime/dist/index.js +0 -11
  484. package/packages/runtime/dist/index.js.map +0 -1
  485. package/packages/runtime/dist/local-runtime-agent.d.ts +0 -111
  486. package/packages/runtime/dist/local-runtime-agent.d.ts.map +0 -1
  487. package/packages/runtime/dist/local-runtime-agent.js +0 -356
  488. package/packages/runtime/dist/local-runtime-agent.js.map +0 -1
  489. package/packages/runtime/dist/policy-engine.d.ts +0 -203
  490. package/packages/runtime/dist/policy-engine.d.ts.map +0 -1
  491. package/packages/runtime/dist/policy-engine.js +0 -592
  492. package/packages/runtime/dist/policy-engine.js.map +0 -1
  493. package/packages/runtime/dist/runtime-api.d.ts +0 -137
  494. package/packages/runtime/dist/runtime-api.d.ts.map +0 -1
  495. package/packages/runtime/dist/runtime-api.js +0 -454
  496. package/packages/runtime/dist/runtime-api.js.map +0 -1
  497. package/packages/runtime/dist/workspace-manager.d.ts +0 -162
  498. package/packages/runtime/dist/workspace-manager.d.ts.map +0 -1
  499. package/packages/runtime/dist/workspace-manager.js +0 -451
  500. package/packages/runtime/dist/workspace-manager.js.map +0 -1
  501. package/packages/runtime/tsconfig.json +0 -8
  502. package/packages/scheduler-adapter/tsconfig.json +0 -22
  503. package/packages/scheduler-adapter/tsconfig.tsbuildinfo +0 -1
  504. package/packages/session/tsconfig.json +0 -33
  505. package/packages/session/tsconfig.tsbuildinfo +0 -1
  506. package/packages/session-api/dist/src/api.d.ts +0 -83
  507. package/packages/session-api/dist/src/api.d.ts.map +0 -1
  508. package/packages/session-api/dist/src/api.js +0 -49
  509. package/packages/session-api/dist/src/api.js.map +0 -1
  510. package/packages/session-api/dist/src/index.d.ts +0 -2
  511. package/packages/session-api/dist/src/index.d.ts.map +0 -1
  512. package/packages/session-api/dist/src/index.js +0 -2
  513. package/packages/session-api/dist/src/index.js.map +0 -1
  514. package/packages/session-api/dist/src/types.d.ts +0 -22
  515. package/packages/session-api/dist/src/types.d.ts.map +0 -1
  516. package/packages/session-api/dist/src/types.js +0 -5
  517. package/packages/session-api/dist/src/types.js.map +0 -1
  518. package/packages/session-api/tsconfig.json +0 -10
  519. package/packages/session-export/dist/src/exporter.d.ts +0 -28
  520. package/packages/session-export/dist/src/exporter.d.ts.map +0 -1
  521. package/packages/session-export/dist/src/exporter.js +0 -42
  522. package/packages/session-export/dist/src/exporter.js.map +0 -1
  523. package/packages/session-export/dist/src/index.d.ts +0 -2
  524. package/packages/session-export/dist/src/index.d.ts.map +0 -1
  525. package/packages/session-export/dist/src/index.js +0 -2
  526. package/packages/session-export/dist/src/index.js.map +0 -1
  527. package/packages/session-export/dist/src/types.d.ts +0 -20
  528. package/packages/session-export/dist/src/types.d.ts.map +0 -1
  529. package/packages/session-export/dist/src/types.js +0 -5
  530. package/packages/session-export/dist/src/types.js.map +0 -1
  531. package/packages/session-export/tsconfig.json +0 -10
  532. package/packages/skill-registry/tsconfig.json +0 -22
  533. package/packages/sprint-planner/tsconfig.json +0 -5
  534. package/packages/subscription-engine/dist/src/engine.d.ts +0 -13
  535. package/packages/subscription-engine/dist/src/engine.d.ts.map +0 -1
  536. package/packages/subscription-engine/dist/src/engine.js +0 -40
  537. package/packages/subscription-engine/dist/src/engine.js.map +0 -1
  538. package/packages/subscription-engine/dist/src/index.d.ts +0 -2
  539. package/packages/subscription-engine/dist/src/index.d.ts.map +0 -1
  540. package/packages/subscription-engine/dist/src/index.js +0 -2
  541. package/packages/subscription-engine/dist/src/index.js.map +0 -1
  542. package/packages/subscription-engine/dist/src/subscriptions.d.ts +0 -19
  543. package/packages/subscription-engine/dist/src/subscriptions.d.ts.map +0 -1
  544. package/packages/subscription-engine/dist/src/subscriptions.js +0 -39
  545. package/packages/subscription-engine/dist/src/subscriptions.js.map +0 -1
  546. package/packages/subscription-engine/dist/src/types.d.ts +0 -24
  547. package/packages/subscription-engine/dist/src/types.d.ts.map +0 -1
  548. package/packages/subscription-engine/dist/src/types.js +0 -5
  549. package/packages/subscription-engine/dist/src/types.js.map +0 -1
  550. package/packages/subscription-engine/tsconfig.json +0 -10
  551. package/packages/task-compiler/tsconfig.json +0 -24
  552. package/packages/test-data-generator/tsconfig.json +0 -33
  553. package/packages/test-data-generator/tsconfig.tsbuildinfo +0 -1
  554. package/packages/test-generator/tsconfig.json +0 -6
  555. package/packages/token-optimizer/tsconfig.json +0 -6
  556. package/packages/tui/tsconfig.json +0 -8
  557. package/packages/types/src/runtime-types.d.ts.map +0 -1
  558. package/packages/types/src/runtime-types.js +0 -2
  559. package/packages/types/src/runtime-types.js.map +0 -1
  560. package/packages/types/tsconfig.json +0 -21
  561. package/packages/types/tsconfig.tsbuildinfo +0 -1
  562. package/packages/workflow-events/dist/src/events.d.ts +0 -38
  563. package/packages/workflow-events/dist/src/events.d.ts.map +0 -1
  564. package/packages/workflow-events/dist/src/events.js +0 -55
  565. package/packages/workflow-events/dist/src/events.js.map +0 -1
  566. package/packages/workflow-events/dist/src/index.d.ts +0 -2
  567. package/packages/workflow-events/dist/src/index.d.ts.map +0 -1
  568. package/packages/workflow-events/dist/src/index.js +0 -2
  569. package/packages/workflow-events/dist/src/index.js.map +0 -1
  570. package/packages/workflow-events/dist/src/pipeline.d.ts +0 -21
  571. package/packages/workflow-events/dist/src/pipeline.d.ts.map +0 -1
  572. package/packages/workflow-events/dist/src/pipeline.js +0 -36
  573. package/packages/workflow-events/dist/src/pipeline.js.map +0 -1
  574. package/packages/workflow-events/dist/src/types.d.ts +0 -110
  575. package/packages/workflow-events/dist/src/types.d.ts.map +0 -1
  576. package/packages/workflow-events/dist/src/types.js +0 -5
  577. package/packages/workflow-events/dist/src/types.js.map +0 -1
  578. package/packages/workflow-events/src/types.d.ts.map +0 -1
  579. package/packages/workflow-events/src/types.js +0 -5
  580. package/packages/workflow-events/src/types.js.map +0 -1
  581. package/packages/workflow-events/tsconfig.json +0 -10
  582. package/packages/workspace-scanner/dist/src/detect.d.ts +0 -3
  583. package/packages/workspace-scanner/dist/src/detect.d.ts.map +0 -1
  584. package/packages/workspace-scanner/dist/src/detect.js +0 -60
  585. package/packages/workspace-scanner/dist/src/detect.js.map +0 -1
  586. package/packages/workspace-scanner/dist/src/git.d.ts +0 -7
  587. package/packages/workspace-scanner/dist/src/git.d.ts.map +0 -1
  588. package/packages/workspace-scanner/dist/src/git.js +0 -75
  589. package/packages/workspace-scanner/dist/src/git.js.map +0 -1
  590. package/packages/workspace-scanner/dist/src/index.d.ts +0 -5
  591. package/packages/workspace-scanner/dist/src/index.d.ts.map +0 -1
  592. package/packages/workspace-scanner/dist/src/index.js +0 -4
  593. package/packages/workspace-scanner/dist/src/index.js.map +0 -1
  594. package/packages/workspace-scanner/dist/src/scanner.d.ts +0 -11
  595. package/packages/workspace-scanner/dist/src/scanner.d.ts.map +0 -1
  596. package/packages/workspace-scanner/dist/src/scanner.js +0 -59
  597. package/packages/workspace-scanner/dist/src/scanner.js.map +0 -1
  598. package/packages/workspace-scanner/dist/src/types.d.ts +0 -35
  599. package/packages/workspace-scanner/dist/src/types.d.ts.map +0 -1
  600. package/packages/workspace-scanner/dist/src/types.js +0 -5
  601. package/packages/workspace-scanner/dist/src/types.js.map +0 -1
  602. package/packages/workspace-scanner/test/scanner.test.js +0 -31
  603. package/packages/workspace-scanner/tsconfig.json +0 -10
  604. package/packages/worktree/dist/index.d.ts +0 -7
  605. package/packages/worktree/dist/index.d.ts.map +0 -1
  606. package/packages/worktree/dist/index.js +0 -7
  607. package/packages/worktree/dist/index.js.map +0 -1
  608. package/packages/worktree/dist/worktree.d.ts +0 -88
  609. package/packages/worktree/dist/worktree.d.ts.map +0 -1
  610. package/packages/worktree/dist/worktree.js +0 -242
  611. package/packages/worktree/dist/worktree.js.map +0 -1
  612. package/packages/worktree/tsconfig.json +0 -8
@@ -0,0 +1,449 @@
1
+ /**
2
+ * GLM/z.ai Quota Scraper — API Key Authentication
3
+ *
4
+ * Scrapes quota/usage data from z.ai API using API key authentication.
5
+ * Unlike cookie-based scrapers (MiniMax, OpenAI), this uses Bearer token auth.
6
+ *
7
+ * Target: https://api.z.ai/api/monitor/usage/model-usage
8
+ *
9
+ * Response shape:
10
+ * {
11
+ * "code": 200,
12
+ * "data": {
13
+ * "x_time": ["2026-08-10 00:00", ...],
14
+ * "modelCallCount": [0, 0, 42, ...],
15
+ * "tokensUsage": [0, 0, 1200785, ...],
16
+ * "totalUsage": {
17
+ * "totalModelCallCount": 190,
18
+ * "totalTokensUsage": 6170914
19
+ * },
20
+ * "modelSummaryList": [{"modelName": "GLM-5.2", "totalTokens": 6170914}],
21
+ * "granularity": "hourly"
22
+ * },
23
+ * "success": true
24
+ * }
25
+ *
26
+ * Also fetches subscription info from: /biz/subscription/list
27
+ */
28
+
29
+ import { existsSync, readFileSync } from "node:fs";
30
+ import { join } from "node:path";
31
+ import { homedir } from "node:os";
32
+
33
+ export interface GLMQuotaData {
34
+ provider: "glm";
35
+ /** Total model calls in the period */
36
+ totalCalls: number;
37
+ /** Total tokens used in the period */
38
+ totalTokens: number;
39
+ /** Model name (e.g., "GLM-5.2") */
40
+ modelName: string;
41
+ /** Hourly timestamps */
42
+ hourlyTimestamps: string[];
43
+ /** Hourly call counts */
44
+ hourlyCalls: number[];
45
+ /** Hourly token usage */
46
+ hourlyTokens: number[];
47
+ /** Raw API response for diagnostics */
48
+ apiEndpoint?: string;
49
+ /** Timestamp of scrape */
50
+ scrapedAt: string;
51
+ }
52
+
53
+ export interface GLMSubscriptionData {
54
+ /** Product name (e.g., "GLM Coding Lite") */
55
+ productName: string;
56
+ /** Subscription status (e.g., "VALID") */
57
+ status: string;
58
+ /** Purchase date */
59
+ purchaseTime: string;
60
+ /** Valid period (e.g., "2026-08-28 15:25:25-2026-09-28 15:25:25") */
61
+ valid: string;
62
+ /** Current period number */
63
+ currentPeriod: number;
64
+ /** Next renewal time */
65
+ nextRenewTime: string;
66
+ /** Billing cycle (e.g., "monthly") */
67
+ billingCycle: string;
68
+ /** Renewal price */
69
+ renewPrice: number;
70
+ }
71
+
72
+ export interface GLMScraperConfig {
73
+ /** Path to API key file (default: ~/.pi-harness-runtime/keys/zai-api-key.txt) */
74
+ apiKeyFile?: string;
75
+ /** Direct API key (optional, takes precedence over file) */
76
+ apiKey?: string;
77
+ /** Suppress console output */
78
+ quiet?: boolean;
79
+ }
80
+
81
+ const DEFAULT_API_KEY_DIR = join(homedir(), ".pi-harness-runtime", "keys");
82
+ const DEFAULT_API_KEY_FILE = join(DEFAULT_API_KEY_DIR, "zai-api-key.txt");
83
+
84
+ // Also check legacy location
85
+ const LEGACY_API_KEY_FILE = join(homedir(), ".config", "zai-api-key.txt");
86
+ const API_BASE_URL = "https://api.z.ai/api";
87
+ const USAGE_ENDPOINT = "/monitor/usage/model-usage";
88
+ const SUBSCRIPTION_ENDPOINT = "/biz/subscription/list";
89
+
90
+ /**
91
+ * Load API key from file, checking multiple locations
92
+ */
93
+ function loadApiKey(path: string): string | null {
94
+ if (existsSync(path)) {
95
+ try {
96
+ const key = readFileSync(path, "utf-8").trim();
97
+ if (key && key.length > 10) return key;
98
+ } catch {
99
+ // ignore
100
+ }
101
+ }
102
+ // Fallback to legacy location
103
+ if (existsSync(LEGACY_API_KEY_FILE)) {
104
+ try {
105
+ const key = readFileSync(LEGACY_API_KEY_FILE, "utf-8").trim();
106
+ if (key && key.length > 10) return key;
107
+ } catch {
108
+ // ignore
109
+ }
110
+ }
111
+ return null;
112
+ }
113
+
114
+ /**
115
+ * Format remaining seconds into human-readable string
116
+ */
117
+ function formatRemainsSeconds(seconds: number): string {
118
+ if (seconds <= 0) return "soon";
119
+
120
+ const days = Math.floor(seconds / 86400);
121
+ const hr = Math.floor((seconds % 86400) / 3600);
122
+ const min = Math.floor((seconds % 3600) / 60);
123
+
124
+ const parts: string[] = [];
125
+ if (days > 0) parts.push(`${days}d`);
126
+ if (hr > 0) parts.push(`${hr}h`);
127
+ if (min > 0 && days === 0) parts.push(`${min}m`);
128
+
129
+ return parts.join(" ") || "0m";
130
+ }
131
+
132
+ /**
133
+ * GLM/z.ai Quota Scraper
134
+ *
135
+ * Uses API key authentication to fetch quota data from z.ai.
136
+ */
137
+ export class GLMQuotaScraper {
138
+ private config: {
139
+ apiKeyFile: string;
140
+ apiKey: string | null;
141
+ quiet: boolean;
142
+ };
143
+
144
+ constructor(config: GLMScraperConfig = {}) {
145
+ // Resolve API key: direct value > file > null
146
+ const apiKey = config.apiKey ?? loadApiKey(config.apiKeyFile ?? DEFAULT_API_KEY_FILE);
147
+
148
+ this.config = {
149
+ apiKeyFile: config.apiKeyFile ?? DEFAULT_API_KEY_FILE,
150
+ apiKey: apiKey ?? null,
151
+ quiet: config.quiet ?? false,
152
+ };
153
+ }
154
+
155
+ /**
156
+ * Set API key directly
157
+ */
158
+ setApiKey(key: string): this {
159
+ this.config.apiKey = key;
160
+ return this;
161
+ }
162
+
163
+ /**
164
+ * Set API key file path
165
+ */
166
+ setApiKeyFile(path: string): this {
167
+ this.config.apiKeyFile = path;
168
+ this.config.apiKey = loadApiKey(path) ?? null;
169
+ return this;
170
+ }
171
+
172
+ /**
173
+ * Check if any API key source exists
174
+ */
175
+ hasApiKey(): boolean {
176
+ if (this.config.apiKey && this.config.apiKey.length > 10) {
177
+ return true;
178
+ }
179
+ // Try loading from default location
180
+ const key = loadApiKey(this.config.apiKeyFile);
181
+ return key !== null && key.length > 10;
182
+ }
183
+
184
+ /**
185
+ * Get the current API key
186
+ */
187
+ getApiKey(): string | null {
188
+ return this.config.apiKey ?? loadApiKey(this.config.apiKeyFile);
189
+ }
190
+
191
+ /**
192
+ * Fetch usage data from z.ai API
193
+ */
194
+ async fetchUsage(startDate?: Date, endDate?: Date): Promise<GLMQuotaData | null> {
195
+ const apiKey = this.getApiKey();
196
+ if (!apiKey) {
197
+ if (!this.config.quiet) {
198
+ console.error(
199
+ `[DEBUG GLMQuotaScraper] No API key found. ` +
200
+ `Set ZAI_API_KEY env var or drop key into ${DEFAULT_API_KEY_FILE}`,
201
+ );
202
+ }
203
+ return null;
204
+ }
205
+
206
+ // Default to last 7 days
207
+ const end = endDate ?? new Date();
208
+ const start = startDate ?? new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
209
+
210
+ const startStr = start.toISOString().replace("T", " ").replace("Z", "");
211
+ const endStr = end.toISOString().replace("T", " ").replace("Z", "");
212
+
213
+ const url = `${API_BASE_URL}${USAGE_ENDPOINT}?startTime=${encodeURIComponent(startStr)}&endTime=${encodeURIComponent(endStr)}`;
214
+
215
+ try {
216
+ if (!this.config.quiet) {
217
+ console.log(`[DEBUG GLMQuotaScraper] Fetching usage from ${startStr} to ${endStr}`);
218
+ }
219
+
220
+ const response = await fetch(url, {
221
+ method: "GET",
222
+ headers: {
223
+ Authorization: `Bearer ${apiKey}`,
224
+ "Content-Type": "application/json",
225
+ },
226
+ });
227
+
228
+ if (!response.ok) {
229
+ if (!this.config.quiet) {
230
+ console.error(
231
+ `[DEBUG GLMQuotaScraper] API returned ${response.status}: ${response.statusText}`,
232
+ );
233
+ }
234
+ return null;
235
+ }
236
+
237
+ const data = await response.json() as {
238
+ code?: number;
239
+ success?: boolean;
240
+ data?: {
241
+ x_time?: string[];
242
+ modelCallCount?: number[];
243
+ tokensUsage?: number[];
244
+ totalUsage?: {
245
+ totalModelCallCount?: number;
246
+ totalTokensUsage?: number;
247
+ };
248
+ modelSummaryList?: Array<{
249
+ modelName?: string;
250
+ totalTokens?: number;
251
+ }>;
252
+ };
253
+ msg?: string;
254
+ };
255
+
256
+ if (!data.success || !data.data) {
257
+ if (!this.config.quiet) {
258
+ console.error(`[DEBUG GLMQuotaScraper] API error: ${data.msg ?? "Unknown error"}`);
259
+ }
260
+ return null;
261
+ }
262
+
263
+ const d = data.data;
264
+ const totalUsage = d.totalUsage ?? {};
265
+ const modelSummary = d.modelSummaryList?.[0];
266
+
267
+ const result: GLMQuotaData = {
268
+ provider: "glm",
269
+ totalCalls: totalUsage.totalModelCallCount ?? 0,
270
+ totalTokens: totalUsage.totalTokensUsage ?? 0,
271
+ modelName: modelSummary?.modelName ?? "Unknown",
272
+ hourlyTimestamps: d.x_time ?? [],
273
+ hourlyCalls: d.modelCallCount ?? [],
274
+ hourlyTokens: d.tokensUsage ?? [],
275
+ apiEndpoint: url,
276
+ scrapedAt: new Date().toISOString(),
277
+ };
278
+
279
+ if (!this.config.quiet) {
280
+ console.log(
281
+ `[DEBUG GLMQuotaScraper] Total calls: ${result.totalCalls}, ` +
282
+ `Total tokens: ${result.totalTokens.toLocaleString()}, ` +
283
+ `Model: ${result.modelName}`,
284
+ );
285
+ }
286
+
287
+ return result;
288
+ } catch (error) {
289
+ if (!this.config.quiet) {
290
+ console.error(
291
+ "[DEBUG GLMQuotaScraper] Fetch error:",
292
+ error instanceof Error ? error.message : String(error),
293
+ );
294
+ }
295
+ return null;
296
+ }
297
+ }
298
+
299
+ /**
300
+ * Fetch subscription info from z.ai API
301
+ */
302
+ async fetchSubscription(): Promise<GLMSubscriptionData | null> {
303
+ const apiKey = this.getApiKey();
304
+ if (!apiKey) {
305
+ return null;
306
+ }
307
+
308
+ const url = `${API_BASE_URL}${SUBSCRIPTION_ENDPOINT}`;
309
+
310
+ try {
311
+ const response = await fetch(url, {
312
+ method: "GET",
313
+ headers: {
314
+ Authorization: `Bearer ${apiKey}`,
315
+ "Content-Type": "application/json",
316
+ },
317
+ });
318
+
319
+ if (!response.ok) {
320
+ return null;
321
+ }
322
+
323
+ const data = await response.json() as {
324
+ code?: number;
325
+ success?: boolean;
326
+ data?: Array<{
327
+ productName?: string;
328
+ status?: string;
329
+ purchaseTime?: string;
330
+ valid?: string;
331
+ currentPeriod?: number;
332
+ nextRenewTime?: string;
333
+ billingCycle?: string;
334
+ renewPrice?: number;
335
+ }>;
336
+ };
337
+
338
+ if (!data.success || !data.data || data.data.length === 0) {
339
+ return null;
340
+ }
341
+
342
+ const sub = data.data[0];
343
+ return {
344
+ productName: sub.productName ?? "Unknown",
345
+ status: sub.status ?? "Unknown",
346
+ purchaseTime: sub.purchaseTime ?? "",
347
+ valid: sub.valid ?? "",
348
+ currentPeriod: sub.currentPeriod ?? 0,
349
+ nextRenewTime: sub.nextRenewTime ?? "",
350
+ billingCycle: sub.billingCycle ?? "monthly",
351
+ renewPrice: sub.renewPrice ?? 0,
352
+ };
353
+ } catch {
354
+ return null;
355
+ }
356
+ }
357
+
358
+ /**
359
+ * Convenience method: get both usage and subscription data
360
+ */
361
+ async scrape(): Promise<{
362
+ usage: GLMQuotaData | null;
363
+ subscription: GLMSubscriptionData | null;
364
+ }> {
365
+ const [usage, subscription] = await Promise.all([
366
+ this.fetchUsage(),
367
+ this.fetchSubscription(),
368
+ ]);
369
+ return { usage, subscription };
370
+ }
371
+
372
+ /**
373
+ * Get weekly usage percentage (calls vs quota)
374
+ * For GLM, this calculates based on typical weekly allocation
375
+ */
376
+ async getWeeklyUsagePercentage(): Promise<number | null> {
377
+ const usage = await this.fetchUsage();
378
+ if (!usage || usage.totalTokens === 0) {
379
+ return null;
380
+ }
381
+
382
+ // GLM Coding Lite typically has a weekly token quota
383
+ // Based on the subscription (monthly), we estimate weekly allocation
384
+ // Typical allocation: ~50M tokens/month = ~12.5M tokens/week
385
+ const WEEKLY_TOKEN_QUOTA = 12_500_000;
386
+ const pct = Math.min(100, (usage.totalTokens / WEEKLY_TOKEN_QUOTA) * 100);
387
+ return Math.round(pct);
388
+ }
389
+
390
+ /**
391
+ * Get when the quota resets (typically weekly on Sunday midnight or monthly)
392
+ */
393
+ getQuotaResetInfo(): { resetsAt: string; resetAfterSeconds: number } {
394
+ // GLM quotas typically reset weekly (Sunday midnight UTC) or monthly
395
+ const now = new Date();
396
+ const nextSunday = new Date(now);
397
+ nextSunday.setDate(now.getDate() + (7 - now.getDay()));
398
+ nextSunday.setUTCHours(0, 0, 0, 0);
399
+
400
+ const diffMs = nextSunday.getTime() - now.getTime();
401
+ const diffSeconds = Math.max(0, Math.floor(diffMs / 1000));
402
+
403
+ return {
404
+ resetsAt: formatRemainsSeconds(diffSeconds),
405
+ resetAfterSeconds: diffSeconds,
406
+ };
407
+ }
408
+ }
409
+
410
+ /**
411
+ * Integration helper for index.ts
412
+ */
413
+ export class GLMQuotaManager {
414
+ private scraper: GLMQuotaScraper;
415
+ private lastQuota?: GLMQuotaData;
416
+ private lastFetchTime = 0;
417
+ private readonly cacheDurationMs: number;
418
+
419
+ constructor(config: GLMScraperConfig & { cacheDurationMs?: number } = {}) {
420
+ this.scraper = new GLMQuotaScraper(config);
421
+ this.cacheDurationMs = config.cacheDurationMs ?? 15 * 60 * 1000; // 15 min default
422
+ }
423
+
424
+ /**
425
+ * Get current quota (uses cache)
426
+ */
427
+ async getQuota(forceRefresh = false): Promise<GLMQuotaData | null> {
428
+ const now = Date.now();
429
+
430
+ if (
431
+ !forceRefresh &&
432
+ this.lastQuota &&
433
+ now - this.lastFetchTime < this.cacheDurationMs
434
+ ) {
435
+ return this.lastQuota;
436
+ }
437
+
438
+ this.lastQuota = await this.scraper.fetchUsage() ?? undefined;
439
+ this.lastFetchTime = now;
440
+ return this.lastQuota ?? null;
441
+ }
442
+
443
+ /**
444
+ * Check if quota is available
445
+ */
446
+ isAvailable(): boolean {
447
+ return this.scraper.hasApiKey();
448
+ }
449
+ }
@@ -9,6 +9,10 @@ import {
9
9
  ensureHerdrWorkspace,
10
10
  } from "../packages/event-bus/src/herdr-bus.js";
11
11
 
12
+ // Suppress stack traces — only show error message to keep TUI clean
13
+ const logError = (err: unknown) =>
14
+ console.error(`[herdr] Error: ${err instanceof Error ? err.message : String(err)}`);
15
+
12
16
  async function startReviewAgent(): Promise<void> {
13
17
  console.log("[herdr:review] Starting review agent...");
14
18
  const bus = createHerdrBus("review-agent");
@@ -78,10 +82,10 @@ function showStatus(): void {
78
82
  const [command] = process.argv.slice(2);
79
83
  switch (command) {
80
84
  case "review":
81
- startReviewAgent().catch(console.error);
85
+ startReviewAgent().catch(logError);
82
86
  break;
83
87
  case "code":
84
- startCodeAgent().catch(console.error);
88
+ startCodeAgent().catch(logError);
85
89
  break;
86
90
  case "status":
87
91
  showStatus();
@@ -20,6 +20,9 @@ import type { BlackboardRecord } from "../packages/types/src/runtime-types.js";
20
20
  const AGENT_ID = "code-agent";
21
21
  const AGENT_TYPE = "code";
22
22
  const POLL_MS = 1000;
23
+ // Suppress stack traces — only show error message to keep TUI clean
24
+ const logError = (err: unknown) =>
25
+ console.error(`[${AGENT_ID}] Error: ${err instanceof Error ? err.message : String(err)}`);
23
26
 
24
27
  async function main(): Promise<void> {
25
28
  console.log(`[${AGENT_ID}] Starting...`);
@@ -281,4 +284,4 @@ function sleep(ms: number): Promise<void> {
281
284
  return new Promise((r) => setTimeout(r, ms));
282
285
  }
283
286
 
284
- main().catch(console.error);
287
+ main().catch(logError);
@@ -16,7 +16,6 @@ import {
16
16
  import { SharedBlackboard } from "./blackboard.js";
17
17
  import type {
18
18
  LoopNextAction,
19
- LoopAgentReport,
20
19
  LoopVerdict,
21
20
  } from "./loop-types.js";
22
21
 
@@ -24,6 +23,9 @@ const AGENT_ID = "review-agent";
24
23
  const AGENT_TYPE = "review";
25
24
  const POLL_MS = 1000;
26
25
  const REVIEW_TIMEOUT_MS = 5 * 60 * 1000;
26
+ // Suppress stack traces — only show error message to keep TUI clean
27
+ const logError = (err: unknown) =>
28
+ console.error(`[${AGENT_ID}] Error: ${err instanceof Error ? err.message : String(err)}`);
27
29
 
28
30
  async function main(): Promise<void> {
29
31
  console.log(`[${AGENT_ID}] Starting...`);
@@ -231,7 +233,7 @@ function updateTaskStatus(
231
233
  verdict: LoopVerdict,
232
234
  ): void {
233
235
  const node = record.tasks.nodes[taskId] as
234
- | { status: string; result?: string }
236
+ | { status: string; result?: string; updatedAt?: string }
235
237
  | undefined;
236
238
  if (node) {
237
239
  node.status = verdict === "blocked" ? "blocked" : "done";
@@ -268,9 +270,6 @@ function getNextWriteTask(
268
270
  record: { tasks: { nodes: Record<string, { status: string }> } },
269
271
  currentReviewIteration: number,
270
272
  ): string | null {
271
- const writeCount = Object.keys(record.tasks.nodes).filter((id) =>
272
- id.startsWith("write-"),
273
- ).length;
274
273
  // After review N, next write is N+1
275
274
  const nextWrite = currentReviewIteration + 1;
276
275
  const taskId = `write-${nextWrite}`;
@@ -292,4 +291,4 @@ function sleep(ms: number): Promise<void> {
292
291
  return new Promise((r) => setTimeout(r, ms));
293
292
  }
294
293
 
295
- main().catch(console.error);
294
+ main().catch(logError);
@@ -10,12 +10,12 @@
10
10
  * E2EFailed, HumanReviewNeeded, ReadyForClient, JobCancelled, Error
11
11
  */
12
12
 
13
- import { NotificationCenter } from "../packages/notification/notification-center.js";
13
+ import { NotificationCenter } from "../packages/notification/dist/notification-center.js";
14
14
  import type {
15
15
  NotificationConfig,
16
16
  NotificationEvent,
17
17
  NotificationContext,
18
- } from "../packages/notification/types.js";
18
+ } from "../packages/notification/dist/types.js";
19
19
  import type { JobStateMachine } from "./job-state-machine.js";
20
20
  import type { TaskGraphManager } from "./task-graph.js";
21
21
 
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Task Graph Manager — RFC-0028 Phase 3
3
+ *
4
+ * Manages task dependency graph for compact-aware scheduling.
5
+ * Currently a stub — integrates with CompactOrchestrator for
6
+ * dependency-aware compaction prioritization.
7
+ *
8
+ * Future work:
9
+ * - Track task dependencies (blocking/ready tasks)
10
+ * - Prioritize compaction to keep blocking path messages
11
+ * - Track which tasks depend on which checkpoint artifacts
12
+ */
13
+ import type { RuntimeTask } from "../packages/types/src/runtime-types.js";
14
+ export interface TaskNode {
15
+ task: RuntimeTask;
16
+ dependencies: Set<string>;
17
+ dependents: Set<string>;
18
+ status: "pending" | "ready" | "running" | "done" | "blocked";
19
+ }
20
+ export interface TaskGraphManager {
21
+ /** Add a task to the graph */
22
+ addTask(task: RuntimeTask): void;
23
+ /** Mark a task as done and update dependents */
24
+ completeTask(taskId: string): void;
25
+ /** Get tasks ready for execution */
26
+ getReadyTasks(): RuntimeTask[];
27
+ /** Get tasks blocked by a given task */
28
+ getBlockedTasks(taskId: string): RuntimeTask[];
29
+ /** Get all pending tasks */
30
+ getPendingTasks(): RuntimeTask[];
31
+ /** Get all tasks */
32
+ getAllTasks(): RuntimeTask[];
33
+ /** Get current progress summary */
34
+ getProgressSummary(): {
35
+ total: number;
36
+ done: number;
37
+ running: number;
38
+ failed: number;
39
+ };
40
+ /** Get compact priority: tasks to keep in context vs prune */
41
+ getCompactPriority(): {
42
+ keep: string[];
43
+ prune: string[];
44
+ };
45
+ }
46
+ /**
47
+ * Creates a new TaskGraphManager instance.
48
+ * Stub implementation — returns minimal working graph.
49
+ */
50
+ export declare function createTaskGraphManager(): TaskGraphManager;
51
+ //# sourceMappingURL=task-graph.d.ts.map