@cyanautomation/kaseki-agent 1.4.1

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 (459) hide show
  1. package/.dockerignore +54 -0
  2. package/.eslintignore +11 -0
  3. package/.eslintrc.json +95 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +53 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +53 -0
  6. package/.github/ISSUE_TEMPLATE/security.md +51 -0
  7. package/.github/PULL_REQUEST_TEMPLATE/default.md +71 -0
  8. package/.github/dependabot.yml +38 -0
  9. package/.github/skills/dependency-cache-optimization/SKILL.md +526 -0
  10. package/.github/skills/docker-image-management/SKILL.md +532 -0
  11. package/.github/skills/frontend-design/SKILL.md +782 -0
  12. package/.github/skills/prompt-engineering/SKILL.md +360 -0
  13. package/.github/skills/quality-gate-config/SKILL.md +591 -0
  14. package/.github/skills/result-report-analysis/SKILL.md +576 -0
  15. package/.github/skills/test-automation/SKILL.md +593 -0
  16. package/.github/skills/workflow-diagnosis/SKILL.md +468 -0
  17. package/.github/workflows/build-docker-image.yml +453 -0
  18. package/.github/workflows/release.yml +68 -0
  19. package/.releaserc.json +135 -0
  20. package/CHANGELOG.md +117 -0
  21. package/CLAUDE.md +336 -0
  22. package/CONTRIBUTING.md +339 -0
  23. package/Dockerfile +217 -0
  24. package/README.md +1527 -0
  25. package/STYLE.md +521 -0
  26. package/add-js-extensions.d.ts +9 -0
  27. package/add-js-extensions.d.ts.map +1 -0
  28. package/add-js-extensions.js.map +1 -0
  29. package/dist/add-js-extensions.d.ts +9 -0
  30. package/dist/add-js-extensions.d.ts.map +1 -0
  31. package/dist/add-js-extensions.js +52 -0
  32. package/dist/add-js-extensions.js.map +1 -0
  33. package/dist/ansi-colors.d.ts +26 -0
  34. package/dist/ansi-colors.d.ts.map +1 -0
  35. package/dist/ansi-colors.js +51 -0
  36. package/dist/ansi-colors.js.map +1 -0
  37. package/dist/cli/BaseCommand.d.ts +18 -0
  38. package/dist/cli/BaseCommand.d.ts.map +1 -0
  39. package/dist/cli/BaseCommand.js +31 -0
  40. package/dist/cli/BaseCommand.js.map +1 -0
  41. package/dist/cli/KasekiCLI.d.ts +30 -0
  42. package/dist/cli/KasekiCLI.d.ts.map +1 -0
  43. package/dist/cli/KasekiCLI.js +134 -0
  44. package/dist/cli/KasekiCLI.js.map +1 -0
  45. package/dist/cli/commands/ConfigCommand.d.ts +13 -0
  46. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
  47. package/dist/cli/commands/ConfigCommand.js +131 -0
  48. package/dist/cli/commands/ConfigCommand.js.map +1 -0
  49. package/dist/cli/commands/DoctorCommand.d.ts +45 -0
  50. package/dist/cli/commands/DoctorCommand.d.ts.map +1 -0
  51. package/dist/cli/commands/DoctorCommand.js +309 -0
  52. package/dist/cli/commands/DoctorCommand.js.map +1 -0
  53. package/dist/cli/commands/ListCommand.d.ts +9 -0
  54. package/dist/cli/commands/ListCommand.d.ts.map +1 -0
  55. package/dist/cli/commands/ListCommand.js +81 -0
  56. package/dist/cli/commands/ListCommand.js.map +1 -0
  57. package/dist/cli/commands/ReportCommand.d.ts +9 -0
  58. package/dist/cli/commands/ReportCommand.d.ts.map +1 -0
  59. package/dist/cli/commands/ReportCommand.js +98 -0
  60. package/dist/cli/commands/ReportCommand.js.map +1 -0
  61. package/dist/cli/commands/RunCommand.d.ts +13 -0
  62. package/dist/cli/commands/RunCommand.d.ts.map +1 -0
  63. package/dist/cli/commands/RunCommand.js +191 -0
  64. package/dist/cli/commands/RunCommand.js.map +1 -0
  65. package/dist/cli/commands/SecretsCommand.d.ts +9 -0
  66. package/dist/cli/commands/SecretsCommand.d.ts.map +1 -0
  67. package/dist/cli/commands/SecretsCommand.js +109 -0
  68. package/dist/cli/commands/SecretsCommand.js.map +1 -0
  69. package/dist/cli/commands/ServeCommand.d.ts +9 -0
  70. package/dist/cli/commands/ServeCommand.d.ts.map +1 -0
  71. package/dist/cli/commands/ServeCommand.js +50 -0
  72. package/dist/cli/commands/ServeCommand.js.map +1 -0
  73. package/dist/cli/commands/SetupCommand.d.ts +42 -0
  74. package/dist/cli/commands/SetupCommand.d.ts.map +1 -0
  75. package/dist/cli/commands/SetupCommand.js +249 -0
  76. package/dist/cli/commands/SetupCommand.js.map +1 -0
  77. package/dist/cli.d.ts +9 -0
  78. package/dist/cli.d.ts.map +1 -0
  79. package/dist/cli.js +130 -0
  80. package/dist/cli.js.map +1 -0
  81. package/dist/config/ConfigManager.d.ts +395 -0
  82. package/dist/config/ConfigManager.d.ts.map +1 -0
  83. package/dist/config/ConfigManager.js +446 -0
  84. package/dist/config/ConfigManager.js.map +1 -0
  85. package/dist/docker/DockerManager.d.ts +69 -0
  86. package/dist/docker/DockerManager.d.ts.map +1 -0
  87. package/dist/docker/DockerManager.js +266 -0
  88. package/dist/docker/DockerManager.js.map +1 -0
  89. package/dist/event-aggregator.d.ts +71 -0
  90. package/dist/event-aggregator.d.ts.map +1 -0
  91. package/dist/event-aggregator.js +95 -0
  92. package/dist/event-aggregator.js.map +1 -0
  93. package/dist/github-app-token.d.ts +16 -0
  94. package/dist/github-app-token.d.ts.map +1 -0
  95. package/dist/github-app-token.js +148 -0
  96. package/dist/github-app-token.js.map +1 -0
  97. package/dist/idempotency-store.d.ts +61 -0
  98. package/dist/idempotency-store.d.ts.map +1 -0
  99. package/dist/idempotency-store.js +321 -0
  100. package/dist/idempotency-store.js.map +1 -0
  101. package/dist/index.d.ts +25 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +31 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/instance/InstanceManager.d.ts +81 -0
  106. package/dist/instance/InstanceManager.d.ts.map +1 -0
  107. package/dist/instance/InstanceManager.js +220 -0
  108. package/dist/instance/InstanceManager.js.map +1 -0
  109. package/dist/instance-metadata-reader.d.ts +48 -0
  110. package/dist/instance-metadata-reader.d.ts.map +1 -0
  111. package/dist/instance-metadata-reader.js +94 -0
  112. package/dist/instance-metadata-reader.js.map +1 -0
  113. package/dist/instance-state-derivation.d.ts +42 -0
  114. package/dist/instance-state-derivation.d.ts.map +1 -0
  115. package/dist/instance-state-derivation.js +133 -0
  116. package/dist/instance-state-derivation.js.map +1 -0
  117. package/dist/job-scheduler.d.ts +124 -0
  118. package/dist/job-scheduler.d.ts.map +1 -0
  119. package/dist/job-scheduler.js +992 -0
  120. package/dist/job-scheduler.js.map +1 -0
  121. package/dist/kaseki-api-client.d.ts +89 -0
  122. package/dist/kaseki-api-client.d.ts.map +1 -0
  123. package/dist/kaseki-api-client.js +405 -0
  124. package/dist/kaseki-api-client.js.map +1 -0
  125. package/dist/kaseki-api-config.d.ts +34 -0
  126. package/dist/kaseki-api-config.d.ts.map +1 -0
  127. package/dist/kaseki-api-config.js +113 -0
  128. package/dist/kaseki-api-config.js.map +1 -0
  129. package/dist/kaseki-api-routes.d.ts +13 -0
  130. package/dist/kaseki-api-routes.d.ts.map +1 -0
  131. package/dist/kaseki-api-routes.js +559 -0
  132. package/dist/kaseki-api-routes.js.map +1 -0
  133. package/dist/kaseki-api-service-wrapper.d.ts +43 -0
  134. package/dist/kaseki-api-service-wrapper.d.ts.map +1 -0
  135. package/dist/kaseki-api-service-wrapper.js +150 -0
  136. package/dist/kaseki-api-service-wrapper.js.map +1 -0
  137. package/dist/kaseki-api-service.d.ts +16 -0
  138. package/dist/kaseki-api-service.d.ts.map +1 -0
  139. package/dist/kaseki-api-service.js +143 -0
  140. package/dist/kaseki-api-service.js.map +1 -0
  141. package/dist/kaseki-api-types.d.ts +440 -0
  142. package/dist/kaseki-api-types.d.ts.map +1 -0
  143. package/dist/kaseki-api-types.js +64 -0
  144. package/dist/kaseki-api-types.js.map +1 -0
  145. package/dist/kaseki-cli-lib.d.ts +219 -0
  146. package/dist/kaseki-cli-lib.d.ts.map +1 -0
  147. package/dist/kaseki-cli-lib.js +523 -0
  148. package/dist/kaseki-cli-lib.js.map +1 -0
  149. package/dist/kaseki-cli.d.ts +38 -0
  150. package/dist/kaseki-cli.d.ts.map +1 -0
  151. package/dist/kaseki-cli.js +559 -0
  152. package/dist/kaseki-cli.js.map +1 -0
  153. package/dist/kaseki-report.d.ts +3 -0
  154. package/dist/kaseki-report.d.ts.map +1 -0
  155. package/dist/kaseki-report.js +140 -0
  156. package/dist/kaseki-report.js.map +1 -0
  157. package/dist/lib/subprocess-helpers.d.ts +98 -0
  158. package/dist/lib/subprocess-helpers.d.ts.map +1 -0
  159. package/dist/lib/subprocess-helpers.js +136 -0
  160. package/dist/lib/subprocess-helpers.js.map +1 -0
  161. package/dist/logger.d.ts +39 -0
  162. package/dist/logger.d.ts.map +1 -0
  163. package/dist/logger.js +79 -0
  164. package/dist/logger.js.map +1 -0
  165. package/dist/metrics.d.ts +19 -0
  166. package/dist/metrics.d.ts.map +1 -0
  167. package/dist/metrics.js +59 -0
  168. package/dist/metrics.js.map +1 -0
  169. package/dist/middleware/job-lookup.d.ts +27 -0
  170. package/dist/middleware/job-lookup.d.ts.map +1 -0
  171. package/dist/middleware/job-lookup.js +28 -0
  172. package/dist/middleware/job-lookup.js.map +1 -0
  173. package/dist/pi-event-filter.d.ts +3 -0
  174. package/dist/pi-event-filter.d.ts.map +1 -0
  175. package/dist/pi-event-filter.js +126 -0
  176. package/dist/pi-event-filter.js.map +1 -0
  177. package/dist/pi-progress-stream.d.ts +3 -0
  178. package/dist/pi-progress-stream.d.ts.map +1 -0
  179. package/dist/pi-progress-stream.js +205 -0
  180. package/dist/pi-progress-stream.js.map +1 -0
  181. package/dist/pi-progress-summarizer.d.ts +61 -0
  182. package/dist/pi-progress-summarizer.d.ts.map +1 -0
  183. package/dist/pi-progress-summarizer.js +246 -0
  184. package/dist/pi-progress-summarizer.js.map +1 -0
  185. package/dist/pre-flight-validator.d.ts +72 -0
  186. package/dist/pre-flight-validator.d.ts.map +1 -0
  187. package/dist/pre-flight-validator.js +513 -0
  188. package/dist/pre-flight-validator.js.map +1 -0
  189. package/dist/progress-stream-utils.d.ts +3 -0
  190. package/dist/progress-stream-utils.d.ts.map +1 -0
  191. package/dist/progress-stream-utils.js +15 -0
  192. package/dist/progress-stream-utils.js.map +1 -0
  193. package/dist/result-cache.d.ts +52 -0
  194. package/dist/result-cache.d.ts.map +1 -0
  195. package/dist/result-cache.js +134 -0
  196. package/dist/result-cache.js.map +1 -0
  197. package/dist/routes/artifact-routes.d.ts +10 -0
  198. package/dist/routes/artifact-routes.d.ts.map +1 -0
  199. package/dist/routes/artifact-routes.js +126 -0
  200. package/dist/routes/artifact-routes.js.map +1 -0
  201. package/dist/routes/log-routes.d.ts +8 -0
  202. package/dist/routes/log-routes.d.ts.map +1 -0
  203. package/dist/routes/log-routes.js +345 -0
  204. package/dist/routes/log-routes.js.map +1 -0
  205. package/dist/routes/status-routes.d.ts +8 -0
  206. package/dist/routes/status-routes.d.ts.map +1 -0
  207. package/dist/routes/status-routes.js +82 -0
  208. package/dist/routes/status-routes.js.map +1 -0
  209. package/dist/routes/webhook-routes.d.ts +6 -0
  210. package/dist/routes/webhook-routes.d.ts.map +1 -0
  211. package/dist/routes/webhook-routes.js +86 -0
  212. package/dist/routes/webhook-routes.js.map +1 -0
  213. package/dist/run-artifact-metadata-cache.d.ts +42 -0
  214. package/dist/run-artifact-metadata-cache.d.ts.map +1 -0
  215. package/dist/run-artifact-metadata-cache.js +139 -0
  216. package/dist/run-artifact-metadata-cache.js.map +1 -0
  217. package/dist/secret-value-cache.d.ts +13 -0
  218. package/dist/secret-value-cache.d.ts.map +1 -0
  219. package/dist/secret-value-cache.js +44 -0
  220. package/dist/secret-value-cache.js.map +1 -0
  221. package/dist/secrets/SecretsManager.d.ts +80 -0
  222. package/dist/secrets/SecretsManager.d.ts.map +1 -0
  223. package/dist/secrets/SecretsManager.js +306 -0
  224. package/dist/secrets/SecretsManager.js.map +1 -0
  225. package/dist/test-utils.d.ts +55 -0
  226. package/dist/test-utils.d.ts.map +1 -0
  227. package/dist/test-utils.js +48 -0
  228. package/dist/test-utils.js.map +1 -0
  229. package/dist/timestamp-tracker.d.ts +75 -0
  230. package/dist/timestamp-tracker.d.ts.map +1 -0
  231. package/dist/timestamp-tracker.js +121 -0
  232. package/dist/timestamp-tracker.js.map +1 -0
  233. package/dist/utils/failure-artifact-writer.d.ts +29 -0
  234. package/dist/utils/failure-artifact-writer.d.ts.map +1 -0
  235. package/dist/utils/failure-artifact-writer.js +157 -0
  236. package/dist/utils/failure-artifact-writer.js.map +1 -0
  237. package/dist/utils/file-helpers.d.ts +41 -0
  238. package/dist/utils/file-helpers.d.ts.map +1 -0
  239. package/dist/utils/file-helpers.js +143 -0
  240. package/dist/utils/file-helpers.js.map +1 -0
  241. package/dist/utils/http-client-factory.d.ts +46 -0
  242. package/dist/utils/http-client-factory.d.ts.map +1 -0
  243. package/dist/utils/http-client-factory.js +114 -0
  244. package/dist/utils/http-client-factory.js.map +1 -0
  245. package/dist/utils/progress-normalizer.d.ts +13 -0
  246. package/dist/utils/progress-normalizer.d.ts.map +1 -0
  247. package/dist/utils/progress-normalizer.js +57 -0
  248. package/dist/utils/progress-normalizer.js.map +1 -0
  249. package/dist/utils/response-helpers.d.ts +34 -0
  250. package/dist/utils/response-helpers.d.ts.map +1 -0
  251. package/dist/utils/response-helpers.js +78 -0
  252. package/dist/utils/response-helpers.js.map +1 -0
  253. package/dist/utils/route-helpers.d.ts +17 -0
  254. package/dist/utils/route-helpers.d.ts.map +1 -0
  255. package/dist/utils/route-helpers.js +22 -0
  256. package/dist/utils/route-helpers.js.map +1 -0
  257. package/dist/utils/status-response-builder.d.ts +23 -0
  258. package/dist/utils/status-response-builder.d.ts.map +1 -0
  259. package/dist/utils/status-response-builder.js +144 -0
  260. package/dist/utils/status-response-builder.js.map +1 -0
  261. package/dist/utils/type-guards.d.ts +37 -0
  262. package/dist/utils/type-guards.d.ts.map +1 -0
  263. package/dist/utils/type-guards.js +45 -0
  264. package/dist/utils/type-guards.js.map +1 -0
  265. package/dist/utils/utf8-helpers.d.ts +32 -0
  266. package/dist/utils/utf8-helpers.d.ts.map +1 -0
  267. package/dist/utils/utf8-helpers.js +97 -0
  268. package/dist/utils/utf8-helpers.js.map +1 -0
  269. package/dist/utils/webhook-event-builder.d.ts +26 -0
  270. package/dist/utils/webhook-event-builder.d.ts.map +1 -0
  271. package/dist/utils/webhook-event-builder.js +77 -0
  272. package/dist/utils/webhook-event-builder.js.map +1 -0
  273. package/dist/webhook-manager.d.ts +56 -0
  274. package/dist/webhook-manager.d.ts.map +1 -0
  275. package/dist/webhook-manager.js +359 -0
  276. package/dist/webhook-manager.js.map +1 -0
  277. package/docker/workspace-cache/package-lock.json +13 -0
  278. package/docker/workspace-cache/package.json +7 -0
  279. package/docker-compose.yml +53 -0
  280. package/docs/API.md +708 -0
  281. package/docs/BACKLOG.md +19 -0
  282. package/docs/BUILD_STRATEGY.md +404 -0
  283. package/docs/CLI.md +569 -0
  284. package/docs/DEPLOYMENT.md +521 -0
  285. package/docs/DEVELOPMENT.md +459 -0
  286. package/docs/DOCKER_SETUP.md +522 -0
  287. package/docs/ENHANCED_PROGRESS_LOGS.md +264 -0
  288. package/docs/IMPLEMENTATION_SUMMARY.md +549 -0
  289. package/docs/INTEGRATION_EXAMPLE.md +217 -0
  290. package/docs/NPM_SETUP.md +468 -0
  291. package/docs/PHASE1-4_IMPLEMENTATION.md +302 -0
  292. package/docs/PHASE1_COMPLETION.md +192 -0
  293. package/docs/PHASE2_COMPLETION.md +134 -0
  294. package/docs/PHASE6_MIGRATION.md +392 -0
  295. package/docs/PRINTF_SAFETY_FIX.md +282 -0
  296. package/docs/QUALITY_GATES.md +369 -0
  297. package/docs/SETUP_GUIDE.md +482 -0
  298. package/docs/TASK_PROMPT_TEMPLATES.md +533 -0
  299. package/docs/VALIDATION_FIX.md +139 -0
  300. package/docs/VERIFICATION_CHECKLIST.md +335 -0
  301. package/docs/repo-maturity.md +760 -0
  302. package/fix-tests.d.ts +9 -0
  303. package/fix-tests.d.ts.map +1 -0
  304. package/fix-tests.js.map +1 -0
  305. package/fix-tests.ts +53 -0
  306. package/jest.config.ts +31 -0
  307. package/kaseki +183 -0
  308. package/kaseki-agent.sh +1961 -0
  309. package/ops/logrotate/kaseki +10 -0
  310. package/package.json +83 -0
  311. package/perf/README.md +54 -0
  312. package/perf/pi-event-filter.benchmark.test.ts +98 -0
  313. package/run-kaseki-json.test.sh +106 -0
  314. package/run-kaseki.sh +990 -0
  315. package/scripts/allowlist-helper.sh +56 -0
  316. package/scripts/cleanup-kaseki.sh +168 -0
  317. package/scripts/deploy-pi-template.sh +293 -0
  318. package/scripts/docker-entrypoint.sh +71 -0
  319. package/scripts/dry-run-allowlist.sh +161 -0
  320. package/scripts/kaseki-activate.sh +396 -0
  321. package/scripts/kaseki-api.service +62 -0
  322. package/scripts/kaseki-container-entrypoint-wrapper.sh +119 -0
  323. package/scripts/kaseki-container-setup-remote.sh +172 -0
  324. package/scripts/kaseki-container-setup.sh +193 -0
  325. package/scripts/kaseki-healthcheck.sh +95 -0
  326. package/scripts/kaseki-install.sh +50 -0
  327. package/scripts/kaseki-maturity-score.sh +291 -0
  328. package/scripts/kaseki-performance-metrics.sh +122 -0
  329. package/scripts/kaseki-preflight.sh +270 -0
  330. package/scripts/kaseki-setup.sh +265 -0
  331. package/scripts/pi-setup-remote.sh +213 -0
  332. package/scripts/setup-github-labels.sh +42 -0
  333. package/scripts/suggest-allowlist.sh +68 -0
  334. package/scripts/templates/MULTI_HOST_DISTRIBUTED.md +337 -0
  335. package/scripts/templates/REST_API_SERVICE.md +490 -0
  336. package/scripts/templates/SINGLE_HOST_CLI.md +194 -0
  337. package/scripts/test-github-app.sh +248 -0
  338. package/src/add-js-extensions.ts +61 -0
  339. package/src/ansi-colors.test.ts +62 -0
  340. package/src/ansi-colors.ts +67 -0
  341. package/src/cli/BaseCommand.ts +40 -0
  342. package/src/cli/KasekiCLI.ts +154 -0
  343. package/src/cli/commands/ConfigCommand.ts +145 -0
  344. package/src/cli/commands/DoctorCommand.ts +329 -0
  345. package/src/cli/commands/ListCommand.ts +105 -0
  346. package/src/cli/commands/ReportCommand.ts +110 -0
  347. package/src/cli/commands/RunCommand.ts +218 -0
  348. package/src/cli/commands/SecretsCommand.ts +120 -0
  349. package/src/cli/commands/ServeCommand.ts +62 -0
  350. package/src/cli/commands/SetupCommand.ts +301 -0
  351. package/src/cli.ts +138 -0
  352. package/src/config/ConfigManager.ts +476 -0
  353. package/src/docker/DockerManager.ts +319 -0
  354. package/src/docker-entrypoint-packaging.test.ts +33 -0
  355. package/src/event-aggregator.test.ts +117 -0
  356. package/src/event-aggregator.ts +126 -0
  357. package/src/github-app-token.ts +215 -0
  358. package/src/idempotency-store.test.ts +117 -0
  359. package/src/idempotency-store.ts +385 -0
  360. package/src/index.ts +89 -0
  361. package/src/instance/InstanceManager.ts +285 -0
  362. package/src/instance-metadata-reader.test.ts +190 -0
  363. package/src/instance-metadata-reader.ts +129 -0
  364. package/src/instance-state-derivation.test.ts +263 -0
  365. package/src/instance-state-derivation.ts +148 -0
  366. package/src/job-scheduler.test.ts +1236 -0
  367. package/src/job-scheduler.ts +1117 -0
  368. package/src/kaseki-api-client.ts +488 -0
  369. package/src/kaseki-api-config.test.ts +315 -0
  370. package/src/kaseki-api-config.ts +175 -0
  371. package/src/kaseki-api-routes.test.ts +1615 -0
  372. package/src/kaseki-api-routes.ts +643 -0
  373. package/src/kaseki-api-service-wrapper.ts +188 -0
  374. package/src/kaseki-api-service.test.ts +418 -0
  375. package/src/kaseki-api-service.ts +192 -0
  376. package/src/kaseki-api-types.ts +320 -0
  377. package/src/kaseki-cli-lib.test.ts +552 -0
  378. package/src/kaseki-cli-lib.ts +760 -0
  379. package/src/kaseki-cli.ts +682 -0
  380. package/src/kaseki-report.test.ts +118 -0
  381. package/src/kaseki-report.ts +192 -0
  382. package/src/lib/subprocess-helpers.ts +177 -0
  383. package/src/logger.ts +114 -0
  384. package/src/metrics.ts +66 -0
  385. package/src/middleware/job-lookup.test.ts +113 -0
  386. package/src/middleware/job-lookup.ts +45 -0
  387. package/src/pi-event-filter.test.ts +183 -0
  388. package/src/pi-event-filter.ts +183 -0
  389. package/src/pi-progress-stream.ts +287 -0
  390. package/src/pi-progress-summarizer.test.ts +302 -0
  391. package/src/pi-progress-summarizer.ts +287 -0
  392. package/src/pre-flight-validator.test.ts +512 -0
  393. package/src/pre-flight-validator.ts +618 -0
  394. package/src/progress-stream-utils.test.ts +35 -0
  395. package/src/progress-stream-utils.ts +14 -0
  396. package/src/result-cache.test.ts +195 -0
  397. package/src/result-cache.ts +181 -0
  398. package/src/routes/artifact-routes.ts +169 -0
  399. package/src/routes/log-routes.ts +391 -0
  400. package/src/routes/status-routes.ts +92 -0
  401. package/src/routes/webhook-routes.ts +97 -0
  402. package/src/run-artifact-metadata-cache.test.ts +80 -0
  403. package/src/run-artifact-metadata-cache.ts +184 -0
  404. package/src/secret-value-cache.test.ts +66 -0
  405. package/src/secret-value-cache.ts +55 -0
  406. package/src/secrets/SecretsManager.ts +343 -0
  407. package/src/test-utils.ts +81 -0
  408. package/src/timestamp-tracker.test.ts +134 -0
  409. package/src/timestamp-tracker.ts +132 -0
  410. package/src/utils/failure-artifact-writer.ts +187 -0
  411. package/src/utils/file-helpers.test.ts +235 -0
  412. package/src/utils/file-helpers.ts +150 -0
  413. package/src/utils/http-client-factory.test.ts +245 -0
  414. package/src/utils/http-client-factory.ts +157 -0
  415. package/src/utils/progress-normalizer.test.ts +442 -0
  416. package/src/utils/progress-normalizer.ts +68 -0
  417. package/src/utils/response-helpers.test.ts +122 -0
  418. package/src/utils/response-helpers.ts +101 -0
  419. package/src/utils/route-helpers.ts +30 -0
  420. package/src/utils/status-response-builder.ts +159 -0
  421. package/src/utils/type-guards.ts +52 -0
  422. package/src/utils/utf8-helpers.ts +102 -0
  423. package/src/utils/webhook-event-builder.test.ts +143 -0
  424. package/src/utils/webhook-event-builder.ts +87 -0
  425. package/src/webhook-manager.test.ts +152 -0
  426. package/src/webhook-manager.ts +445 -0
  427. package/templates/allowlist-api-route.txt +7 -0
  428. package/templates/allowlist-comprehensive.txt +8 -0
  429. package/templates/allowlist-parser-fix.txt +6 -0
  430. package/templates/allowlist-ui-component.txt +9 -0
  431. package/templates/allowlist-utility.txt +9 -0
  432. package/test/actual-model-metadata.test.sh +102 -0
  433. package/test/dry-run.test.sh +131 -0
  434. package/test/fixtures/kaseki-report-exit-codes/metadata-exit-0.json +1 -0
  435. package/test/fixtures/kaseki-report-exit-codes/metadata-exit-1.json +1 -0
  436. package/test/fixtures/kaseki-report-exit-codes/metadata-exit-invalid.json +1 -0
  437. package/test/fixtures/kaseki-report-exit-codes/metadata-exit-str-0.json +1 -0
  438. package/test/fixtures/kaseki-report-exit-codes/metadata-exit-str-1.json +1 -0
  439. package/test/kaseki-api.integration.test.sh +165 -0
  440. package/test/pi-event-filter-failure.test.sh +83 -0
  441. package/test/printf-safety-focused.test.sh +99 -0
  442. package/test/printf-safety-results/results/restoration.jsonl +10 -0
  443. package/test/printf-safety-results/results/test.jsonl +0 -0
  444. package/test/printf-safety.test.sh +297 -0
  445. package/test/validation-fix.test.sh +79 -0
  446. package/test/validation-integration.test.sh +109 -0
  447. package/tests/allowlist-glob.test.sh +61 -0
  448. package/tests/dependency-cache-key.test.sh +48 -0
  449. package/tests/dependency-restore-mode.test.sh +48 -0
  450. package/tests/doctor-template-parity.test.sh +95 -0
  451. package/tests/github-operations.test.sh +142 -0
  452. package/tests/npm-install-flags.test.sh +58 -0
  453. package/tests/quality-gates.test.sh +178 -0
  454. package/tests/repo-memory.test.sh +103 -0
  455. package/tests/restore-disallowed-changes.test.sh +80 -0
  456. package/tests/validation-missing-npm-scripts.test.sh +93 -0
  457. package/tests/validation-strict-mode.test.sh +118 -0
  458. package/tsconfig.changed.json +7 -0
  459. package/tsconfig.json +39 -0
@@ -0,0 +1,482 @@
1
+ # Kaseki Agent Setup Guide
2
+
3
+ **👉 NEW: Using npm package?** See [NPM_SETUP.md](NPM_SETUP.md) for the recommended approach.
4
+
5
+ ---
6
+
7
+ ## Quick Start (< 5 minutes) - NPM Method
8
+
9
+ ### Prerequisites
10
+
11
+ - **Node.js v24+** — JavaScript runtime
12
+ - **Docker** (required) — handles containerized agent runs
13
+ - **Git** (required) — for cloning target repositories
14
+ - **OpenRouter API Key** (required) — authenticates Pi agent calls
15
+ - **Linux or macOS**
16
+
17
+ ### Installation
18
+
19
+ ```bash
20
+ # Global install (recommended)
21
+ npm install -g @cyanautomation/kaseki-agent
22
+
23
+ # Run setup wizard
24
+ kaseki-agent setup
25
+
26
+ # Verify
27
+ kaseki-agent doctor
28
+
29
+ # Run your first task
30
+ kaseki-agent run https://github.com/CyanAutomation/crudmapper main
31
+ ```
32
+
33
+ That's it! For detailed documentation, see [NPM_SETUP.md](NPM_SETUP.md).
34
+
35
+ ---
36
+
37
+ ## Alternative: Traditional Setup (Shell Scripts)
38
+
39
+ For users preferring shell-based setup:
40
+
41
+ ### Prerequisites
42
+
43
+ - **Docker** (required) — handles containerized agent runs
44
+ - **Git** (required) — for cloning target repositories
45
+ - **OpenRouter API Key** (required) — authenticates Pi agent calls
46
+ - **bash/sh** — standard shell
47
+
48
+ ### One-Command Bootstrap
49
+
50
+ For a single host setup with automatic dependency checks:
51
+
52
+ ```bash
53
+ # Clone the repository
54
+ git clone https://github.com/CyanAutomation/kaseki-agent.git /agents/kaseki-template
55
+ cd /agents/kaseki-template
56
+
57
+ # Run interactive setup (checks dependencies, guides you through API key setup)
58
+ ./scripts/kaseki-setup.sh
59
+ ```
60
+
61
+ This script will:
62
+
63
+ 1. Validate Docker is installed (or guide you to install it)
64
+ 2. Prompt for your OpenRouter API key securely
65
+ 3. Create `~/.kaseki/secrets/openrouter_api_key` with proper permissions (600)
66
+ 4. Run final health checks
67
+ 5. Confirm you're ready to use kaseki-agent
68
+
69
+ **That's it!** You can now run kaseki-agent directly.
70
+
71
+ ---
72
+
73
+ ## Choosing Your Deployment Pattern
74
+
75
+ Kaseki supports three deployment patterns. Choose the one that matches your needs:
76
+
77
+ | Pattern | Use Case | Complexity | Effort |
78
+ |---------|----------|-----------|--------|
79
+ | **Direct CLI** | One-off runs, local development, single host | Simple | Low |
80
+ | **Remote Activation** | Multi-host setup, controller-driven orchestration | Medium | Medium |
81
+ | **REST API Service** | Long-running service, async execution, distributed orchestration | Complex | High |
82
+
83
+ ### Pattern 1: Direct CLI (Recommended for Single Host)
84
+
85
+ **Scenario**: You're on a Pi or single host and want to run kaseki-agent directly.
86
+
87
+ **Setup**: Run `./scripts/kaseki-setup.sh` once, then:
88
+
89
+ ```bash
90
+ # Run an agent task
91
+ OPENROUTER_API_KEY_FILE=~/.kaseki/secrets/openrouter_api_key \
92
+ ./run-kaseki.sh https://github.com/your-org/your-repo main
93
+
94
+ # Health check
95
+ ./run-kaseki.sh --doctor
96
+ ```
97
+
98
+ **When to use:**
99
+
100
+ - Local development or testing
101
+ - Single Pi/host deployments
102
+ - One-off tasks without orchestration
103
+ - Manual, ad-hoc execution
104
+
105
+ See [scripts/templates/SINGLE_HOST_CLI.md](../scripts/templates/SINGLE_HOST_CLI.md) for detailed steps.
106
+
107
+ ---
108
+
109
+ ### Pattern 2: Remote Activation (Recommended for Multi-Host)
110
+
111
+ **Scenario**: You have a controller machine (Mac, Linux) and want to orchestrate multiple Pi hosts.
112
+
113
+ **Setup**: Run `./scripts/pi-setup-remote.sh` from your controller to bootstrap each Pi:
114
+
115
+ ```bash
116
+ # From your controller machine (Mac/Linux)
117
+ ./scripts/pi-setup-remote.sh pi@192.168.88.201 sk-or-v1-your-key-here
118
+
119
+ # Or, if you have the key in a file
120
+ ./scripts/pi-setup-remote.sh pi@192.168.88.201 ~/my-openrouter-key.txt
121
+ ```
122
+
123
+ This will:
124
+
125
+ 1. SSH to the remote Pi
126
+ 2. Create secrets directory with proper permissions
127
+ 3. Securely transfer your API key
128
+ 4. Run `kaseki-install.sh` to bootstrap the repository
129
+ 5. Validate readiness with `--doctor`
130
+
131
+ Then from your controller, you can trigger runs on the Pi:
132
+
133
+ ```bash
134
+ ssh pi@192.168.88.201 'OPENROUTER_API_KEY_FILE=~/.kaseki/secrets/openrouter_api_key /agents/kaseki-template/run-kaseki.sh https://github.com/your-org/your-repo main'
135
+ ```
136
+
137
+ **When to use:**
138
+
139
+ - Managing multiple Pi/host instances
140
+ - Controller-driven orchestration
141
+ - Integration with external orchestrators (e.g., OpenClaw)
142
+ - Want idempotent, reproducible setup
143
+
144
+ See [scripts/templates/MULTI_HOST_DISTRIBUTED.md](../scripts/templates/MULTI_HOST_DISTRIBUTED.md) for detailed steps.
145
+
146
+ ---
147
+
148
+ ### Pattern 3: REST API Service (For Advanced Users)
149
+
150
+ **Scenario**: You want a long-running HTTP API service that manages async kaseki-agent runs.
151
+
152
+ **Setup**: Deploy the Docker Compose service:
153
+
154
+ ```bash
155
+ cd /agents/kaseki-template
156
+
157
+ # Set your API key(s)
158
+ export KASEKI_API_KEYS=sk-your-secret-key
159
+
160
+ # Start the service
161
+ docker-compose up -d
162
+
163
+ # Verify it's running
164
+ curl http://localhost:8080/api/health
165
+ ```
166
+
167
+ Then trigger runs via HTTP:
168
+
169
+ ```bash
170
+ curl -X POST http://localhost:8080/api/run \
171
+ -H "Authorization: Bearer sk-your-secret-key" \
172
+ -H "Content-Type: application/json" \
173
+ -d '{
174
+ "repo_url": "https://github.com/your-org/your-repo",
175
+ "git_ref": "main",
176
+ "task_prompt": "Fix the parsing bug"
177
+ }'
178
+ ```
179
+
180
+ **When to use:**
181
+
182
+ - Long-running service with async execution
183
+ - Multiple concurrent runs
184
+ - Integration with distributed orchestrators
185
+ - Need HTTP API for external tools
186
+
187
+ See [scripts/templates/REST_API_SERVICE.md](../scripts/templates/REST_API_SERVICE.md) and [docs/DEPLOYMENT.md](DEPLOYMENT.md) for detailed setup.
188
+
189
+ ---
190
+
191
+ ## Environment-Specific Installation
192
+
193
+ If you need to manually install dependencies, choose your operating system:
194
+
195
+ ### Debian / Ubuntu / Raspberry Pi OS
196
+
197
+ ```bash
198
+ # Update package list
199
+ sudo apt update
200
+
201
+ # Install required dependencies
202
+ sudo apt install -y \
203
+ docker.io \
204
+ git
205
+
206
+ # Optional: Install Node.js (only needed for fallback mode)
207
+ curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
208
+ sudo apt install -y nodejs
209
+
210
+ # Start Docker daemon
211
+ sudo systemctl start docker
212
+ sudo systemctl enable docker
213
+
214
+ # (Optional) Add your user to docker group to avoid `sudo`
215
+ sudo usermod -aG docker "$USER"
216
+ # Restart shell or run: newgrp docker
217
+ ```
218
+
219
+ ### Fedora / RHEL / CentOS Stream
220
+
221
+ ```bash
222
+ # Update package list
223
+ sudo dnf update -y
224
+
225
+ # Install required dependencies
226
+ sudo dnf install -y \
227
+ docker \
228
+ git
229
+
230
+ # Optional: Install Node.js (only needed for fallback mode)
231
+ curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -
232
+ sudo dnf install -y nodejs
233
+
234
+ # Start Docker daemon
235
+ sudo systemctl start docker
236
+ sudo systemctl enable docker
237
+
238
+ # (Optional) Add your user to docker group to avoid `sudo`
239
+ sudo usermod -aG docker "$USER"
240
+ # Restart shell or run: newgrp docker
241
+ ```
242
+
243
+ ### Arch Linux
244
+
245
+ ```bash
246
+ # Update package list
247
+ sudo pacman -Sy
248
+
249
+ # Install required dependencies
250
+ sudo pacman -S --needed \
251
+ docker \
252
+ git
253
+
254
+ # Optional: Install Node.js (only needed for fallback mode)
255
+ sudo pacman -S --needed nodejs npm
256
+
257
+ # Start Docker daemon
258
+ sudo systemctl start docker
259
+ sudo systemctl enable docker
260
+
261
+ # (Optional) Add your user to docker group to avoid `sudo`
262
+ sudo usermod -aG docker "$USER"
263
+ # Restart shell or run: newgrp docker
264
+ ```
265
+
266
+ ### macOS (for controller/development only)
267
+
268
+ ```bash
269
+ # Install Homebrew if not already installed
270
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
271
+
272
+ # Install Docker Desktop (GUI) or Docker via Homebrew
273
+ brew install --cask docker
274
+ # OR (CLI only)
275
+ brew install docker
276
+
277
+ # Install Git and Node.js (if needed)
278
+ brew install git node
279
+ ```
280
+
281
+ ---
282
+
283
+ ## Credential Setup
284
+
285
+ ### OpenRouter API Key
286
+
287
+ Your OpenRouter API key authenticates requests to the Pi coding agent.
288
+
289
+ #### Obtain Your Key
290
+
291
+ 1. Visit [openrouter.ai/keys](https://openrouter.ai/keys)
292
+ 2. Create or copy an existing API key (format: `sk-or-v1-...`)
293
+
294
+ #### Store It Securely
295
+
296
+ ```bash
297
+ # Create secrets directory
298
+ mkdir -p ~/.kaseki/secrets
299
+ chmod 700 ~/.kaseki/secrets
300
+
301
+ # Store your key (interactive)
302
+ read -sp 'Enter your OpenRouter API key: ' OPENROUTER_KEY
303
+ echo "$OPENROUTER_KEY" > ~/.kaseki/secrets/openrouter_api_key
304
+ chmod 600 ~/.kaseki/secrets/openrouter_api_key
305
+
306
+ # Or paste from a file
307
+ cp /path/to/your/key.txt ~/.kaseki/secrets/openrouter_api_key
308
+ chmod 600 ~/.kaseki/secrets/openrouter_api_key
309
+ ```
310
+
311
+ #### Use It
312
+
313
+ All kaseki commands reference this file:
314
+
315
+ ```bash
316
+ OPENROUTER_API_KEY_FILE=~/.kaseki/secrets/openrouter_api_key ./run-kaseki.sh ...
317
+ ```
318
+
319
+ Or, for convenience, add to `~/.bashrc` or `~/.zshrc`:
320
+
321
+ ```bash
322
+ export OPENROUTER_API_KEY_FILE=~/.kaseki/secrets/openrouter_api_key
323
+ ```
324
+
325
+ Then you can simply run:
326
+
327
+ ```bash
328
+ ./run-kaseki.sh https://github.com/your-org/your-repo main
329
+ ```
330
+
331
+ ---
332
+
333
+ ## Verify Your Setup
334
+
335
+ ### Quick Health Check
336
+
337
+ ```bash
338
+ ./run-kaseki.sh --doctor
339
+ ```
340
+
341
+ Expected output:
342
+
343
+ ```
344
+ Preflight required dependencies: ok (docker)
345
+ Preflight optional dependencies: ok (curl, wget, sshpass, git, node, npm)
346
+ Docker daemon: running
347
+ Kaseki template image: available
348
+ ✓ Setup is ready!
349
+ ```
350
+
351
+ ### Test a Real Run
352
+
353
+ ```bash
354
+ ./run-kaseki.sh \
355
+ https://github.com/CyanAutomation/crudmapper \
356
+ main
357
+ ```
358
+
359
+ This will:
360
+
361
+ 1. Spin up a Docker container (kaseki-1)
362
+ 2. Clone the repository
363
+ 3. Run the default agent task
364
+ 4. Collect artifacts in `/agents/kaseki-results/kaseki-1/`
365
+
366
+ Check the results:
367
+
368
+ ```bash
369
+ cat /agents/kaseki-results/kaseki-1/result-summary.md
370
+ ```
371
+
372
+ ---
373
+
374
+ ## Troubleshooting
375
+
376
+ ### "Docker daemon not responding"
377
+
378
+ ```bash
379
+ # Start Docker (Linux/Raspberry Pi OS)
380
+ sudo systemctl start docker
381
+
382
+ # Or (if not using systemd)
383
+ sudo service docker start
384
+
385
+ # Verify it's running
386
+ docker ps
387
+ ```
388
+
389
+ ### "Permission denied while trying to connect to Docker daemon"
390
+
391
+ Add your user to the docker group:
392
+
393
+ ```bash
394
+ sudo usermod -aG docker "$USER"
395
+ newgrp docker # Apply immediately (or restart shell)
396
+ ```
397
+
398
+ ### "OpenRouter API key not found"
399
+
400
+ Make sure your key file exists and is readable:
401
+
402
+ ```bash
403
+ ls -la ~/.kaseki/secrets/openrouter_api_key
404
+ # Should output: -rw------- ... openrouter_api_key
405
+
406
+ # If not, re-create it
407
+ mkdir -p ~/.kaseki/secrets
408
+ read -sp 'Enter your OpenRouter API key: ' OPENROUTER_KEY
409
+ echo "$OPENROUTER_KEY" > ~/.kaseki/secrets/openrouter_api_key
410
+ chmod 600 ~/.kaseki/secrets/openrouter_api_key
411
+ ```
412
+
413
+ ### "Missing required host dependencies"
414
+
415
+ Run `./scripts/kaseki-setup.sh` or manually install dependencies:
416
+
417
+ ```bash
418
+ # For Ubuntu/Debian
419
+ sudo apt install -y docker.io git
420
+
421
+ # For Fedora/RHEL
422
+ sudo dnf install -y docker git
423
+
424
+ # For Arch
425
+ sudo pacman -S --needed docker git
426
+ ```
427
+
428
+ ### Agent runs take too long
429
+
430
+ The default timeout is 20 minutes. To adjust:
431
+
432
+ ```bash
433
+ KASEKI_AGENT_TIMEOUT_SECONDS=3600 ./run-kaseki.sh ...
434
+ ```
435
+
436
+ ### Results directory filling up disk
437
+
438
+ Clean up old runs:
439
+
440
+ ```bash
441
+ ./scripts/cleanup-kaseki.sh
442
+ ```
443
+
444
+ By default, keeps 10 most recent runs. Adjust with:
445
+
446
+ ```bash
447
+ ./scripts/cleanup-kaseki.sh --keep 5
448
+ ```
449
+
450
+ ---
451
+
452
+ ## Next Steps
453
+
454
+ 1. **Choose your pattern** — Direct CLI, Remote Activation, or REST API Service
455
+ 2. **Follow the appropriate template** — See [scripts/templates/](../scripts/templates/) for detailed steps
456
+ 3. **Review quality gates** — Understand constraints in [docs/QUALITY_GATES.md](QUALITY_GATES.md)
457
+ 4. **Craft effective task prompts** — See [docs/TASK_PROMPT_TEMPLATES.md](TASK_PROMPT_TEMPLATES.md)
458
+ 5. **Monitor results** — Use `kaseki-report`, `kaseki-cli`, or web dashboard
459
+
460
+ ---
461
+
462
+ ## Advanced Topics
463
+
464
+ - **Dependency Caching**: See [CLAUDE.md](../CLAUDE.md#L159-L165) for 4-layer npm cache strategy
465
+ - **Quality Gates & Allowlists**: See [docs/QUALITY_GATES.md](QUALITY_GATES.md)
466
+ - **Task Prompts**: See [docs/TASK_PROMPT_TEMPLATES.md](TASK_PROMPT_TEMPLATES.md)
467
+ - **REST API Configuration**: See [docs/DEPLOYMENT.md](DEPLOYMENT.md)
468
+ - **Monitoring & CLI**: See [docs/CLI.md](CLI.md)
469
+
470
+ ---
471
+
472
+ ## Support
473
+
474
+ For issues, questions, or contributions:
475
+
476
+ - Check existing issues: [GitHub Issues](https://github.com/CyanAutomation/kaseki-agent/issues)
477
+ - Review documentation: [docs/](../) folder
478
+ - Report bugs: [New Issue](https://github.com/CyanAutomation/kaseki-agent/issues/new)
479
+
480
+ ---
481
+
482
+ **Last updated**: May 7, 2026