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
@@ -1,592 +0,0 @@
1
- /**
2
- * Policy Engine — RFC-0028
3
- *
4
- * Policy enforcement for command execution, network access, and file operations.
5
- *
6
- * Features:
7
- * - Command allowlist/denylist
8
- * - Network access control
9
- * - File operation restrictions
10
- * - Rate limiting
11
- * - Audit logging
12
- * - Policy inheritance and composition
13
- */
14
- import { EventEmitter } from "node:events";
15
- const DEFAULT_RATE_LIMIT = {
16
- maxRequests: 100,
17
- windowMs: 60000,
18
- };
19
- export class PolicyEngine extends EventEmitter {
20
- policies = [];
21
- commandRules = [];
22
- fileRules = [];
23
- networkRules = [];
24
- rateLimits = new Map();
25
- requestCounts = new Map();
26
- auditLog = [];
27
- maxAuditEntries = 10000;
28
- constructor() {
29
- super();
30
- this.initializeDefaultPolicies();
31
- }
32
- /**
33
- * Initialize default security policies
34
- */
35
- initializeDefaultPolicies() {
36
- // Deny dangerous commands
37
- this.addPolicy({
38
- id: "deny-rm-rf",
39
- name: "Deny rm -rf /",
40
- description: "Block rm -rf on root",
41
- priority: 100,
42
- effect: "deny",
43
- condition: {
44
- subject: {},
45
- resource: {
46
- type: "command",
47
- pathPattern: "^\\s*rm\\s+-rf\\s+\\/",
48
- },
49
- },
50
- reason: "Cannot delete root directory",
51
- });
52
- // Allow safe development commands
53
- this.addPolicy({
54
- id: "allow-git",
55
- name: "Allow git commands",
56
- description: "Allow git operations",
57
- priority: 10,
58
- effect: "allow",
59
- condition: {
60
- resource: {
61
- type: "command",
62
- pathPattern: "^\\s*git\\s+",
63
- },
64
- },
65
- });
66
- // Allow npm/npx commands
67
- this.addPolicy({
68
- id: "allow-npm",
69
- name: "Allow npm/npx",
70
- description: "Allow npm package management",
71
- priority: 10,
72
- effect: "allow",
73
- condition: {
74
- resource: {
75
- type: "command",
76
- pathPattern: "^(npm|npx|yarn|pnpm)\\s+",
77
- },
78
- },
79
- });
80
- // Deny network to private IPs
81
- this.addPolicy({
82
- id: "deny-private-network",
83
- name: "Deny private network access",
84
- description: "Block access to private IP ranges",
85
- priority: 90,
86
- effect: "deny",
87
- condition: {
88
- resource: {
89
- type: "network",
90
- urlPattern: "^(10\\.|172\\.(1[6-9]|2[0-9]|3[0-1])\\.|192\\.168\\.|127\\.|localhost)",
91
- },
92
- },
93
- reason: "Private network access is restricted",
94
- });
95
- // Allow HTTPS only
96
- this.addPolicy({
97
- id: "allow-https",
98
- name: "Allow HTTPS",
99
- description: "Allow secure HTTPS connections",
100
- priority: 20,
101
- effect: "allow",
102
- condition: {
103
- resource: {
104
- type: "network",
105
- urlPattern: "^https://",
106
- },
107
- },
108
- });
109
- // Block file access outside workspace
110
- this.addPolicy({
111
- id: "deny-outside-workspace",
112
- name: "Deny access outside workspace",
113
- description: "Block file operations outside workspace",
114
- priority: 80,
115
- effect: "deny",
116
- condition: {
117
- resource: {
118
- type: "file",
119
- pathPattern: "^\\.\\.(/|$)",
120
- },
121
- },
122
- reason: "Cannot access paths outside workspace",
123
- });
124
- }
125
- /**
126
- * Add a policy
127
- */
128
- addPolicy(policy) {
129
- this.policies.push(policy);
130
- this.policies.sort((a, b) => b.priority - a.priority);
131
- }
132
- /**
133
- * Remove a policy
134
- */
135
- removePolicy(id) {
136
- const index = this.policies.findIndex((p) => p.id === id);
137
- if (index !== -1) {
138
- this.policies.splice(index, 1);
139
- return true;
140
- }
141
- return false;
142
- }
143
- /**
144
- * Get all policies
145
- */
146
- getPolicies() {
147
- return [...this.policies];
148
- }
149
- /**
150
- * Check if a request is allowed
151
- */
152
- evaluate(context) {
153
- // Check rate limits first
154
- const rateLimitResult = this.checkRateLimit(context);
155
- if (rateLimitResult.effect === "deny") {
156
- return rateLimitResult;
157
- }
158
- // Find matching policy
159
- for (const policy of this.policies) {
160
- if (this.matchesPolicy(context, policy)) {
161
- // Audit if enabled
162
- if (policy.audit) {
163
- this.logAudit(policy, context);
164
- }
165
- return {
166
- effect: policy.effect,
167
- reason: policy.reason,
168
- policy: policy.id,
169
- };
170
- }
171
- }
172
- // Default: ask for unknown resources
173
- return {
174
- effect: "ask",
175
- reason: "No matching policy found",
176
- };
177
- }
178
- /**
179
- * Check if a command is allowed
180
- */
181
- canExecuteCommand(command, context) {
182
- const fullContext = {
183
- subject: context?.subject ?? {},
184
- resource: {
185
- type: "command",
186
- path: command,
187
- },
188
- environment: context?.environment,
189
- };
190
- // Check against command rules first
191
- for (const rule of this.commandRules) {
192
- if (rule.pattern.test(command)) {
193
- this.logAudit({ id: "command-rule", name: "Command Rule", priority: 0, effect: rule.effect }, fullContext);
194
- return {
195
- effect: rule.effect,
196
- reason: rule.reason,
197
- };
198
- }
199
- }
200
- return this.evaluate(fullContext);
201
- }
202
- /**
203
- * Check if a file operation is allowed
204
- */
205
- canAccessFile(path, operation, context) {
206
- const fullContext = {
207
- subject: context?.subject ?? {},
208
- resource: {
209
- type: "file",
210
- path,
211
- operation,
212
- },
213
- environment: context?.environment,
214
- };
215
- // Check against file rules
216
- for (const rule of this.fileRules) {
217
- if (rule.pattern.test(path)) {
218
- this.logAudit({ id: "file-rule", name: "File Rule", priority: 0, effect: rule.effect }, fullContext);
219
- return {
220
- effect: rule.effect,
221
- reason: rule.reason,
222
- };
223
- }
224
- }
225
- return this.evaluate(fullContext);
226
- }
227
- /**
228
- * Check if a network request is allowed
229
- */
230
- canMakeNetworkRequest(url, method, context) {
231
- const fullContext = {
232
- subject: context?.subject ?? {},
233
- resource: {
234
- type: "network",
235
- url,
236
- method,
237
- },
238
- environment: context?.environment,
239
- };
240
- // Check against network rules
241
- for (const rule of this.networkRules) {
242
- if (rule.pattern.test(url)) {
243
- this.logAudit({ id: "network-rule", name: "Network Rule", priority: 0, effect: rule.effect }, fullContext);
244
- return {
245
- effect: rule.effect,
246
- reason: rule.reason,
247
- };
248
- }
249
- }
250
- return this.evaluate(fullContext);
251
- }
252
- /**
253
- * Add a command rule
254
- */
255
- addCommandRule(pattern, effect, reason) {
256
- this.commandRules.push({ pattern, effect, reason });
257
- }
258
- /**
259
- * Add a file rule
260
- */
261
- addFileRule(pattern, effect, reason) {
262
- this.fileRules.push({ pattern, effect, reason });
263
- }
264
- /**
265
- * Add a network rule
266
- */
267
- addNetworkRule(pattern, effect, reason) {
268
- this.networkRules.push({ pattern, effect, reason });
269
- }
270
- /**
271
- * Set rate limit for a resource
272
- */
273
- setRateLimit(resource, limit) {
274
- this.rateLimits.set(resource, limit);
275
- }
276
- /**
277
- * Get rate limit for a resource
278
- */
279
- getRateLimit(resource) {
280
- return this.rateLimits.get(resource);
281
- }
282
- /**
283
- * Get audit log
284
- */
285
- getAuditLog(filter) {
286
- let entries = [...this.auditLog];
287
- if (filter?.policy) {
288
- entries = entries.filter((e) => e.policy === filter.policy);
289
- }
290
- if (filter?.effect) {
291
- entries = entries.filter((e) => e.effect === filter.effect);
292
- }
293
- if (filter?.since) {
294
- entries = entries.filter((e) => new Date(e.timestamp) >= filter.since);
295
- }
296
- return entries;
297
- }
298
- /**
299
- * Clear audit log
300
- */
301
- clearAuditLog() {
302
- this.auditLog = [];
303
- }
304
- /**
305
- * Export policies as JSON
306
- */
307
- exportPolicies() {
308
- return JSON.stringify({
309
- policies: this.policies,
310
- commandRules: this.commandRules.map((r) => ({
311
- pattern: r.pattern.source,
312
- effect: r.effect,
313
- reason: r.reason,
314
- })),
315
- fileRules: this.fileRules.map((r) => ({
316
- pattern: r.pattern.source,
317
- effect: r.effect,
318
- reason: r.reason,
319
- })),
320
- networkRules: this.networkRules.map((r) => ({
321
- pattern: r.pattern.source,
322
- effect: r.effect,
323
- reason: r.reason,
324
- })),
325
- rateLimits: Object.fromEntries(this.rateLimits),
326
- }, null, 2);
327
- }
328
- /**
329
- * Import policies from JSON
330
- */
331
- importPolicies(json) {
332
- try {
333
- const data = JSON.parse(json);
334
- if (data.policies) {
335
- this.policies = data.policies;
336
- }
337
- if (data.commandRules) {
338
- this.commandRules = data.commandRules.map((r) => ({
339
- pattern: new RegExp(r.pattern),
340
- effect: r.effect,
341
- reason: r.reason,
342
- }));
343
- }
344
- if (data.fileRules) {
345
- this.fileRules = data.fileRules.map((r) => ({
346
- pattern: new RegExp(r.pattern),
347
- effect: r.effect,
348
- reason: r.reason,
349
- }));
350
- }
351
- if (data.networkRules) {
352
- this.networkRules = data.networkRules.map((r) => ({
353
- pattern: new RegExp(r.pattern),
354
- effect: r.effect,
355
- reason: r.reason,
356
- }));
357
- }
358
- if (data.rateLimits) {
359
- this.rateLimits = new Map(Object.entries(data.rateLimits));
360
- }
361
- return true;
362
- }
363
- catch {
364
- return false;
365
- }
366
- }
367
- // --- Private Methods ------------------------------------------------
368
- matchesPolicy(context, policy) {
369
- const condition = policy.condition;
370
- // Check subject
371
- if (condition.subject && !this.matchesSubject(context, condition.subject)) {
372
- return false;
373
- }
374
- // Check resource
375
- if (condition.resource && !this.matchesResource(context, condition.resource)) {
376
- return false;
377
- }
378
- // Check environment
379
- if (condition.environment && !this.matchesEnvironment(context, condition.environment)) {
380
- return false;
381
- }
382
- // Check time
383
- if (condition.time && !this.matchesTime(condition.time)) {
384
- return false;
385
- }
386
- // Check custom
387
- if (condition.custom && !condition.custom(context)) {
388
- return false;
389
- }
390
- return true;
391
- }
392
- matchesSubject(context, condition) {
393
- const { user, role, agent, ip } = context.subject;
394
- if (user && condition.user) {
395
- if (!this.matchesValue(user, condition.user))
396
- return false;
397
- }
398
- if (role && condition.role) {
399
- if (!this.matchesValue(role, condition.role))
400
- return false;
401
- }
402
- if (agent && condition.agent) {
403
- if (!this.matchesValue(agent, condition.agent))
404
- return false;
405
- }
406
- if (ip && condition.ip) {
407
- if (!this.matchesValue(ip, condition.ip))
408
- return false;
409
- }
410
- return true;
411
- }
412
- matchesResource(context, condition) {
413
- const { type, path, url, method, operation } = context.resource;
414
- if (type && condition.type) {
415
- if (type !== condition.type && condition.type !== "*")
416
- return false;
417
- }
418
- if (path && (condition.path || condition.pathPattern)) {
419
- if (condition.path && !this.matchesValue(path, condition.path))
420
- return false;
421
- if (condition.pathPattern && !new RegExp(condition.pathPattern).test(path)) {
422
- return false;
423
- }
424
- }
425
- if (url && (condition.url || condition.urlPattern)) {
426
- if (condition.url && !this.matchesValue(url, condition.url))
427
- return false;
428
- if (condition.urlPattern && !new RegExp(condition.urlPattern).test(url)) {
429
- return false;
430
- }
431
- }
432
- if (method && condition.method) {
433
- if (!this.matchesValue(method, condition.method))
434
- return false;
435
- }
436
- if (operation && condition.operation) {
437
- if (!this.matchesValue(operation, condition.operation))
438
- return false;
439
- }
440
- return true;
441
- }
442
- matchesEnvironment(context, condition) {
443
- const env = context.environment ?? {};
444
- if (env.jobId && condition.jobId) {
445
- if (!this.matchesValue(env.jobId, condition.jobId))
446
- return false;
447
- }
448
- if (env.taskId && condition.taskId) {
449
- if (!this.matchesValue(env.taskId, condition.taskId))
450
- return false;
451
- }
452
- if (env.worktree && condition.worktree) {
453
- if (!this.matchesValue(env.worktree, condition.worktree))
454
- return false;
455
- }
456
- if (env.workspace && condition.workspace) {
457
- if (!this.matchesValue(env.workspace, condition.workspace))
458
- return false;
459
- }
460
- return true;
461
- }
462
- matchesTime(condition) {
463
- const now = new Date();
464
- if (condition.startHour !== undefined && condition.endHour !== undefined) {
465
- const hour = now.getHours();
466
- if (condition.startHour <= condition.endHour) {
467
- if (hour < condition.startHour || hour > condition.endHour)
468
- return false;
469
- }
470
- else {
471
- // Handles overnight ranges like 22:00 - 06:00
472
- if (hour < condition.startHour && hour > condition.endHour)
473
- return false;
474
- }
475
- }
476
- if (condition.days && condition.days.length > 0) {
477
- const day = now.getDay();
478
- if (!condition.days.includes(day))
479
- return false;
480
- }
481
- return true;
482
- }
483
- matchesValue(value, pattern) {
484
- if (Array.isArray(pattern)) {
485
- return pattern.includes(value);
486
- }
487
- // Check if pattern is a regex
488
- if (pattern.startsWith("/") && pattern.endsWith("/")) {
489
- try {
490
- return new RegExp(pattern.slice(1, -1)).test(value);
491
- }
492
- catch {
493
- return false;
494
- }
495
- }
496
- // Glob pattern
497
- if (pattern.includes("*")) {
498
- const regex = new RegExp("^" + pattern.replace(/\*/g, ".*").replace(/\?/g, ".") + "$");
499
- return regex.test(value);
500
- }
501
- return value === pattern;
502
- }
503
- checkRateLimit(context) {
504
- const key = this.getRateLimitKey(context);
505
- const limit = this.rateLimits.get(key) ?? DEFAULT_RATE_LIMIT;
506
- const now = Date.now();
507
- let record = this.requestCounts.get(key);
508
- if (!record || now - record.windowStart > limit.windowMs) {
509
- // Start new window
510
- record = { count: 1, windowStart: now };
511
- this.requestCounts.set(key, record);
512
- return { effect: "allow" };
513
- }
514
- record.count++;
515
- this.requestCounts.set(key, record);
516
- if (record.count > limit.maxRequests) {
517
- return {
518
- effect: "deny",
519
- reason: `Rate limit exceeded: ${record.count}/${limit.maxRequests} requests in ${limit.windowMs}ms`,
520
- };
521
- }
522
- return { effect: "allow" };
523
- }
524
- getRateLimitKey(context) {
525
- const parts = [context.resource.type];
526
- if (context.subject.user)
527
- parts.push(context.subject.user);
528
- if (context.subject.agent)
529
- parts.push(context.subject.agent);
530
- if (context.resource.path)
531
- parts.push(context.resource.path);
532
- if (context.resource.url)
533
- parts.push(context.resource.url);
534
- return parts.join(":");
535
- }
536
- logAudit(policy, context) {
537
- const entry = {
538
- timestamp: new Date().toISOString(),
539
- policy: policy.id,
540
- effect: policy.effect,
541
- context,
542
- reason: policy.reason,
543
- };
544
- this.auditLog.push(entry);
545
- // Trim log if too large
546
- if (this.auditLog.length > this.maxAuditEntries) {
547
- this.auditLog = this.auditLog.slice(-this.maxAuditEntries / 2);
548
- }
549
- this.emit("audit", entry);
550
- }
551
- }
552
- /**
553
- * Create a PolicyEngine with default harness policies
554
- */
555
- export function createHarnessPolicyEngine() {
556
- const engine = new PolicyEngine();
557
- // Add additional harness-specific policies
558
- engine.addPolicy({
559
- id: "allow-harness-internal",
560
- name: "Allow harness internal commands",
561
- description: "Allow internal harness commands",
562
- priority: 15,
563
- effect: "allow",
564
- condition: {
565
- resource: {
566
- type: "command",
567
- pathPattern: "^(pi|harness)-",
568
- },
569
- },
570
- });
571
- // Default deny for system commands
572
- engine.addPolicy({
573
- id: "deny-system",
574
- name: "Deny system commands",
575
- description: "Block system-level commands by default",
576
- priority: 70,
577
- effect: "deny",
578
- condition: {
579
- resource: {
580
- type: "command",
581
- pathPattern: "^(sudo|su|chmod|chown|mount|umount|reboot|shutdown)\\s",
582
- },
583
- },
584
- reason: "System commands are restricted",
585
- });
586
- // Set rate limits
587
- engine.setRateLimit("command", { maxRequests: 60, windowMs: 60000 }); // 60 commands/minute
588
- engine.setRateLimit("network", { maxRequests: 100, windowMs: 60000 }); // 100 requests/minute
589
- engine.setRateLimit("file", { maxRequests: 200, windowMs: 60000 }); // 200 file ops/minute
590
- return engine;
591
- }
592
- //# sourceMappingURL=policy-engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../src/policy-engine.ts"],"names":[],"mappings":"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"}