@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.
- package/.dockerignore +54 -0
- package/.eslintignore +11 -0
- package/.eslintrc.json +95 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +53 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +53 -0
- package/.github/ISSUE_TEMPLATE/security.md +51 -0
- package/.github/PULL_REQUEST_TEMPLATE/default.md +71 -0
- package/.github/dependabot.yml +38 -0
- package/.github/skills/dependency-cache-optimization/SKILL.md +526 -0
- package/.github/skills/docker-image-management/SKILL.md +532 -0
- package/.github/skills/frontend-design/SKILL.md +782 -0
- package/.github/skills/prompt-engineering/SKILL.md +360 -0
- package/.github/skills/quality-gate-config/SKILL.md +591 -0
- package/.github/skills/result-report-analysis/SKILL.md +576 -0
- package/.github/skills/test-automation/SKILL.md +593 -0
- package/.github/skills/workflow-diagnosis/SKILL.md +468 -0
- package/.github/workflows/build-docker-image.yml +453 -0
- package/.github/workflows/release.yml +68 -0
- package/.releaserc.json +135 -0
- package/CHANGELOG.md +117 -0
- package/CLAUDE.md +336 -0
- package/CONTRIBUTING.md +339 -0
- package/Dockerfile +217 -0
- package/README.md +1527 -0
- package/STYLE.md +521 -0
- package/add-js-extensions.d.ts +9 -0
- package/add-js-extensions.d.ts.map +1 -0
- package/add-js-extensions.js.map +1 -0
- package/dist/add-js-extensions.d.ts +9 -0
- package/dist/add-js-extensions.d.ts.map +1 -0
- package/dist/add-js-extensions.js +52 -0
- package/dist/add-js-extensions.js.map +1 -0
- package/dist/ansi-colors.d.ts +26 -0
- package/dist/ansi-colors.d.ts.map +1 -0
- package/dist/ansi-colors.js +51 -0
- package/dist/ansi-colors.js.map +1 -0
- package/dist/cli/BaseCommand.d.ts +18 -0
- package/dist/cli/BaseCommand.d.ts.map +1 -0
- package/dist/cli/BaseCommand.js +31 -0
- package/dist/cli/BaseCommand.js.map +1 -0
- package/dist/cli/KasekiCLI.d.ts +30 -0
- package/dist/cli/KasekiCLI.d.ts.map +1 -0
- package/dist/cli/KasekiCLI.js +134 -0
- package/dist/cli/KasekiCLI.js.map +1 -0
- package/dist/cli/commands/ConfigCommand.d.ts +13 -0
- package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
- package/dist/cli/commands/ConfigCommand.js +131 -0
- package/dist/cli/commands/ConfigCommand.js.map +1 -0
- package/dist/cli/commands/DoctorCommand.d.ts +45 -0
- package/dist/cli/commands/DoctorCommand.d.ts.map +1 -0
- package/dist/cli/commands/DoctorCommand.js +309 -0
- package/dist/cli/commands/DoctorCommand.js.map +1 -0
- package/dist/cli/commands/ListCommand.d.ts +9 -0
- package/dist/cli/commands/ListCommand.d.ts.map +1 -0
- package/dist/cli/commands/ListCommand.js +81 -0
- package/dist/cli/commands/ListCommand.js.map +1 -0
- package/dist/cli/commands/ReportCommand.d.ts +9 -0
- package/dist/cli/commands/ReportCommand.d.ts.map +1 -0
- package/dist/cli/commands/ReportCommand.js +98 -0
- package/dist/cli/commands/ReportCommand.js.map +1 -0
- package/dist/cli/commands/RunCommand.d.ts +13 -0
- package/dist/cli/commands/RunCommand.d.ts.map +1 -0
- package/dist/cli/commands/RunCommand.js +191 -0
- package/dist/cli/commands/RunCommand.js.map +1 -0
- package/dist/cli/commands/SecretsCommand.d.ts +9 -0
- package/dist/cli/commands/SecretsCommand.d.ts.map +1 -0
- package/dist/cli/commands/SecretsCommand.js +109 -0
- package/dist/cli/commands/SecretsCommand.js.map +1 -0
- package/dist/cli/commands/ServeCommand.d.ts +9 -0
- package/dist/cli/commands/ServeCommand.d.ts.map +1 -0
- package/dist/cli/commands/ServeCommand.js +50 -0
- package/dist/cli/commands/ServeCommand.js.map +1 -0
- package/dist/cli/commands/SetupCommand.d.ts +42 -0
- package/dist/cli/commands/SetupCommand.d.ts.map +1 -0
- package/dist/cli/commands/SetupCommand.js +249 -0
- package/dist/cli/commands/SetupCommand.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +130 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +395 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +446 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/docker/DockerManager.d.ts +69 -0
- package/dist/docker/DockerManager.d.ts.map +1 -0
- package/dist/docker/DockerManager.js +266 -0
- package/dist/docker/DockerManager.js.map +1 -0
- package/dist/event-aggregator.d.ts +71 -0
- package/dist/event-aggregator.d.ts.map +1 -0
- package/dist/event-aggregator.js +95 -0
- package/dist/event-aggregator.js.map +1 -0
- package/dist/github-app-token.d.ts +16 -0
- package/dist/github-app-token.d.ts.map +1 -0
- package/dist/github-app-token.js +148 -0
- package/dist/github-app-token.js.map +1 -0
- package/dist/idempotency-store.d.ts +61 -0
- package/dist/idempotency-store.d.ts.map +1 -0
- package/dist/idempotency-store.js +321 -0
- package/dist/idempotency-store.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/InstanceManager.d.ts +81 -0
- package/dist/instance/InstanceManager.d.ts.map +1 -0
- package/dist/instance/InstanceManager.js +220 -0
- package/dist/instance/InstanceManager.js.map +1 -0
- package/dist/instance-metadata-reader.d.ts +48 -0
- package/dist/instance-metadata-reader.d.ts.map +1 -0
- package/dist/instance-metadata-reader.js +94 -0
- package/dist/instance-metadata-reader.js.map +1 -0
- package/dist/instance-state-derivation.d.ts +42 -0
- package/dist/instance-state-derivation.d.ts.map +1 -0
- package/dist/instance-state-derivation.js +133 -0
- package/dist/instance-state-derivation.js.map +1 -0
- package/dist/job-scheduler.d.ts +124 -0
- package/dist/job-scheduler.d.ts.map +1 -0
- package/dist/job-scheduler.js +992 -0
- package/dist/job-scheduler.js.map +1 -0
- package/dist/kaseki-api-client.d.ts +89 -0
- package/dist/kaseki-api-client.d.ts.map +1 -0
- package/dist/kaseki-api-client.js +405 -0
- package/dist/kaseki-api-client.js.map +1 -0
- package/dist/kaseki-api-config.d.ts +34 -0
- package/dist/kaseki-api-config.d.ts.map +1 -0
- package/dist/kaseki-api-config.js +113 -0
- package/dist/kaseki-api-config.js.map +1 -0
- package/dist/kaseki-api-routes.d.ts +13 -0
- package/dist/kaseki-api-routes.d.ts.map +1 -0
- package/dist/kaseki-api-routes.js +559 -0
- package/dist/kaseki-api-routes.js.map +1 -0
- package/dist/kaseki-api-service-wrapper.d.ts +43 -0
- package/dist/kaseki-api-service-wrapper.d.ts.map +1 -0
- package/dist/kaseki-api-service-wrapper.js +150 -0
- package/dist/kaseki-api-service-wrapper.js.map +1 -0
- package/dist/kaseki-api-service.d.ts +16 -0
- package/dist/kaseki-api-service.d.ts.map +1 -0
- package/dist/kaseki-api-service.js +143 -0
- package/dist/kaseki-api-service.js.map +1 -0
- package/dist/kaseki-api-types.d.ts +440 -0
- package/dist/kaseki-api-types.d.ts.map +1 -0
- package/dist/kaseki-api-types.js +64 -0
- package/dist/kaseki-api-types.js.map +1 -0
- package/dist/kaseki-cli-lib.d.ts +219 -0
- package/dist/kaseki-cli-lib.d.ts.map +1 -0
- package/dist/kaseki-cli-lib.js +523 -0
- package/dist/kaseki-cli-lib.js.map +1 -0
- package/dist/kaseki-cli.d.ts +38 -0
- package/dist/kaseki-cli.d.ts.map +1 -0
- package/dist/kaseki-cli.js +559 -0
- package/dist/kaseki-cli.js.map +1 -0
- package/dist/kaseki-report.d.ts +3 -0
- package/dist/kaseki-report.d.ts.map +1 -0
- package/dist/kaseki-report.js +140 -0
- package/dist/kaseki-report.js.map +1 -0
- package/dist/lib/subprocess-helpers.d.ts +98 -0
- package/dist/lib/subprocess-helpers.d.ts.map +1 -0
- package/dist/lib/subprocess-helpers.js +136 -0
- package/dist/lib/subprocess-helpers.js.map +1 -0
- package/dist/logger.d.ts +39 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +79 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics.d.ts +19 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +59 -0
- package/dist/metrics.js.map +1 -0
- package/dist/middleware/job-lookup.d.ts +27 -0
- package/dist/middleware/job-lookup.d.ts.map +1 -0
- package/dist/middleware/job-lookup.js +28 -0
- package/dist/middleware/job-lookup.js.map +1 -0
- package/dist/pi-event-filter.d.ts +3 -0
- package/dist/pi-event-filter.d.ts.map +1 -0
- package/dist/pi-event-filter.js +126 -0
- package/dist/pi-event-filter.js.map +1 -0
- package/dist/pi-progress-stream.d.ts +3 -0
- package/dist/pi-progress-stream.d.ts.map +1 -0
- package/dist/pi-progress-stream.js +205 -0
- package/dist/pi-progress-stream.js.map +1 -0
- package/dist/pi-progress-summarizer.d.ts +61 -0
- package/dist/pi-progress-summarizer.d.ts.map +1 -0
- package/dist/pi-progress-summarizer.js +246 -0
- package/dist/pi-progress-summarizer.js.map +1 -0
- package/dist/pre-flight-validator.d.ts +72 -0
- package/dist/pre-flight-validator.d.ts.map +1 -0
- package/dist/pre-flight-validator.js +513 -0
- package/dist/pre-flight-validator.js.map +1 -0
- package/dist/progress-stream-utils.d.ts +3 -0
- package/dist/progress-stream-utils.d.ts.map +1 -0
- package/dist/progress-stream-utils.js +15 -0
- package/dist/progress-stream-utils.js.map +1 -0
- package/dist/result-cache.d.ts +52 -0
- package/dist/result-cache.d.ts.map +1 -0
- package/dist/result-cache.js +134 -0
- package/dist/result-cache.js.map +1 -0
- package/dist/routes/artifact-routes.d.ts +10 -0
- package/dist/routes/artifact-routes.d.ts.map +1 -0
- package/dist/routes/artifact-routes.js +126 -0
- package/dist/routes/artifact-routes.js.map +1 -0
- package/dist/routes/log-routes.d.ts +8 -0
- package/dist/routes/log-routes.d.ts.map +1 -0
- package/dist/routes/log-routes.js +345 -0
- package/dist/routes/log-routes.js.map +1 -0
- package/dist/routes/status-routes.d.ts +8 -0
- package/dist/routes/status-routes.d.ts.map +1 -0
- package/dist/routes/status-routes.js +82 -0
- package/dist/routes/status-routes.js.map +1 -0
- package/dist/routes/webhook-routes.d.ts +6 -0
- package/dist/routes/webhook-routes.d.ts.map +1 -0
- package/dist/routes/webhook-routes.js +86 -0
- package/dist/routes/webhook-routes.js.map +1 -0
- package/dist/run-artifact-metadata-cache.d.ts +42 -0
- package/dist/run-artifact-metadata-cache.d.ts.map +1 -0
- package/dist/run-artifact-metadata-cache.js +139 -0
- package/dist/run-artifact-metadata-cache.js.map +1 -0
- package/dist/secret-value-cache.d.ts +13 -0
- package/dist/secret-value-cache.d.ts.map +1 -0
- package/dist/secret-value-cache.js +44 -0
- package/dist/secret-value-cache.js.map +1 -0
- package/dist/secrets/SecretsManager.d.ts +80 -0
- package/dist/secrets/SecretsManager.d.ts.map +1 -0
- package/dist/secrets/SecretsManager.js +306 -0
- package/dist/secrets/SecretsManager.js.map +1 -0
- package/dist/test-utils.d.ts +55 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/test-utils.js +48 -0
- package/dist/test-utils.js.map +1 -0
- package/dist/timestamp-tracker.d.ts +75 -0
- package/dist/timestamp-tracker.d.ts.map +1 -0
- package/dist/timestamp-tracker.js +121 -0
- package/dist/timestamp-tracker.js.map +1 -0
- package/dist/utils/failure-artifact-writer.d.ts +29 -0
- package/dist/utils/failure-artifact-writer.d.ts.map +1 -0
- package/dist/utils/failure-artifact-writer.js +157 -0
- package/dist/utils/failure-artifact-writer.js.map +1 -0
- package/dist/utils/file-helpers.d.ts +41 -0
- package/dist/utils/file-helpers.d.ts.map +1 -0
- package/dist/utils/file-helpers.js +143 -0
- package/dist/utils/file-helpers.js.map +1 -0
- package/dist/utils/http-client-factory.d.ts +46 -0
- package/dist/utils/http-client-factory.d.ts.map +1 -0
- package/dist/utils/http-client-factory.js +114 -0
- package/dist/utils/http-client-factory.js.map +1 -0
- package/dist/utils/progress-normalizer.d.ts +13 -0
- package/dist/utils/progress-normalizer.d.ts.map +1 -0
- package/dist/utils/progress-normalizer.js +57 -0
- package/dist/utils/progress-normalizer.js.map +1 -0
- package/dist/utils/response-helpers.d.ts +34 -0
- package/dist/utils/response-helpers.d.ts.map +1 -0
- package/dist/utils/response-helpers.js +78 -0
- package/dist/utils/response-helpers.js.map +1 -0
- package/dist/utils/route-helpers.d.ts +17 -0
- package/dist/utils/route-helpers.d.ts.map +1 -0
- package/dist/utils/route-helpers.js +22 -0
- package/dist/utils/route-helpers.js.map +1 -0
- package/dist/utils/status-response-builder.d.ts +23 -0
- package/dist/utils/status-response-builder.d.ts.map +1 -0
- package/dist/utils/status-response-builder.js +144 -0
- package/dist/utils/status-response-builder.js.map +1 -0
- package/dist/utils/type-guards.d.ts +37 -0
- package/dist/utils/type-guards.d.ts.map +1 -0
- package/dist/utils/type-guards.js +45 -0
- package/dist/utils/type-guards.js.map +1 -0
- package/dist/utils/utf8-helpers.d.ts +32 -0
- package/dist/utils/utf8-helpers.d.ts.map +1 -0
- package/dist/utils/utf8-helpers.js +97 -0
- package/dist/utils/utf8-helpers.js.map +1 -0
- package/dist/utils/webhook-event-builder.d.ts +26 -0
- package/dist/utils/webhook-event-builder.d.ts.map +1 -0
- package/dist/utils/webhook-event-builder.js +77 -0
- package/dist/utils/webhook-event-builder.js.map +1 -0
- package/dist/webhook-manager.d.ts +56 -0
- package/dist/webhook-manager.d.ts.map +1 -0
- package/dist/webhook-manager.js +359 -0
- package/dist/webhook-manager.js.map +1 -0
- package/docker/workspace-cache/package-lock.json +13 -0
- package/docker/workspace-cache/package.json +7 -0
- package/docker-compose.yml +53 -0
- package/docs/API.md +708 -0
- package/docs/BACKLOG.md +19 -0
- package/docs/BUILD_STRATEGY.md +404 -0
- package/docs/CLI.md +569 -0
- package/docs/DEPLOYMENT.md +521 -0
- package/docs/DEVELOPMENT.md +459 -0
- package/docs/DOCKER_SETUP.md +522 -0
- package/docs/ENHANCED_PROGRESS_LOGS.md +264 -0
- package/docs/IMPLEMENTATION_SUMMARY.md +549 -0
- package/docs/INTEGRATION_EXAMPLE.md +217 -0
- package/docs/NPM_SETUP.md +468 -0
- package/docs/PHASE1-4_IMPLEMENTATION.md +302 -0
- package/docs/PHASE1_COMPLETION.md +192 -0
- package/docs/PHASE2_COMPLETION.md +134 -0
- package/docs/PHASE6_MIGRATION.md +392 -0
- package/docs/PRINTF_SAFETY_FIX.md +282 -0
- package/docs/QUALITY_GATES.md +369 -0
- package/docs/SETUP_GUIDE.md +482 -0
- package/docs/TASK_PROMPT_TEMPLATES.md +533 -0
- package/docs/VALIDATION_FIX.md +139 -0
- package/docs/VERIFICATION_CHECKLIST.md +335 -0
- package/docs/repo-maturity.md +760 -0
- package/fix-tests.d.ts +9 -0
- package/fix-tests.d.ts.map +1 -0
- package/fix-tests.js.map +1 -0
- package/fix-tests.ts +53 -0
- package/jest.config.ts +31 -0
- package/kaseki +183 -0
- package/kaseki-agent.sh +1961 -0
- package/ops/logrotate/kaseki +10 -0
- package/package.json +83 -0
- package/perf/README.md +54 -0
- package/perf/pi-event-filter.benchmark.test.ts +98 -0
- package/run-kaseki-json.test.sh +106 -0
- package/run-kaseki.sh +990 -0
- package/scripts/allowlist-helper.sh +56 -0
- package/scripts/cleanup-kaseki.sh +168 -0
- package/scripts/deploy-pi-template.sh +293 -0
- package/scripts/docker-entrypoint.sh +71 -0
- package/scripts/dry-run-allowlist.sh +161 -0
- package/scripts/kaseki-activate.sh +396 -0
- package/scripts/kaseki-api.service +62 -0
- package/scripts/kaseki-container-entrypoint-wrapper.sh +119 -0
- package/scripts/kaseki-container-setup-remote.sh +172 -0
- package/scripts/kaseki-container-setup.sh +193 -0
- package/scripts/kaseki-healthcheck.sh +95 -0
- package/scripts/kaseki-install.sh +50 -0
- package/scripts/kaseki-maturity-score.sh +291 -0
- package/scripts/kaseki-performance-metrics.sh +122 -0
- package/scripts/kaseki-preflight.sh +270 -0
- package/scripts/kaseki-setup.sh +265 -0
- package/scripts/pi-setup-remote.sh +213 -0
- package/scripts/setup-github-labels.sh +42 -0
- package/scripts/suggest-allowlist.sh +68 -0
- package/scripts/templates/MULTI_HOST_DISTRIBUTED.md +337 -0
- package/scripts/templates/REST_API_SERVICE.md +490 -0
- package/scripts/templates/SINGLE_HOST_CLI.md +194 -0
- package/scripts/test-github-app.sh +248 -0
- package/src/add-js-extensions.ts +61 -0
- package/src/ansi-colors.test.ts +62 -0
- package/src/ansi-colors.ts +67 -0
- package/src/cli/BaseCommand.ts +40 -0
- package/src/cli/KasekiCLI.ts +154 -0
- package/src/cli/commands/ConfigCommand.ts +145 -0
- package/src/cli/commands/DoctorCommand.ts +329 -0
- package/src/cli/commands/ListCommand.ts +105 -0
- package/src/cli/commands/ReportCommand.ts +110 -0
- package/src/cli/commands/RunCommand.ts +218 -0
- package/src/cli/commands/SecretsCommand.ts +120 -0
- package/src/cli/commands/ServeCommand.ts +62 -0
- package/src/cli/commands/SetupCommand.ts +301 -0
- package/src/cli.ts +138 -0
- package/src/config/ConfigManager.ts +476 -0
- package/src/docker/DockerManager.ts +319 -0
- package/src/docker-entrypoint-packaging.test.ts +33 -0
- package/src/event-aggregator.test.ts +117 -0
- package/src/event-aggregator.ts +126 -0
- package/src/github-app-token.ts +215 -0
- package/src/idempotency-store.test.ts +117 -0
- package/src/idempotency-store.ts +385 -0
- package/src/index.ts +89 -0
- package/src/instance/InstanceManager.ts +285 -0
- package/src/instance-metadata-reader.test.ts +190 -0
- package/src/instance-metadata-reader.ts +129 -0
- package/src/instance-state-derivation.test.ts +263 -0
- package/src/instance-state-derivation.ts +148 -0
- package/src/job-scheduler.test.ts +1236 -0
- package/src/job-scheduler.ts +1117 -0
- package/src/kaseki-api-client.ts +488 -0
- package/src/kaseki-api-config.test.ts +315 -0
- package/src/kaseki-api-config.ts +175 -0
- package/src/kaseki-api-routes.test.ts +1615 -0
- package/src/kaseki-api-routes.ts +643 -0
- package/src/kaseki-api-service-wrapper.ts +188 -0
- package/src/kaseki-api-service.test.ts +418 -0
- package/src/kaseki-api-service.ts +192 -0
- package/src/kaseki-api-types.ts +320 -0
- package/src/kaseki-cli-lib.test.ts +552 -0
- package/src/kaseki-cli-lib.ts +760 -0
- package/src/kaseki-cli.ts +682 -0
- package/src/kaseki-report.test.ts +118 -0
- package/src/kaseki-report.ts +192 -0
- package/src/lib/subprocess-helpers.ts +177 -0
- package/src/logger.ts +114 -0
- package/src/metrics.ts +66 -0
- package/src/middleware/job-lookup.test.ts +113 -0
- package/src/middleware/job-lookup.ts +45 -0
- package/src/pi-event-filter.test.ts +183 -0
- package/src/pi-event-filter.ts +183 -0
- package/src/pi-progress-stream.ts +287 -0
- package/src/pi-progress-summarizer.test.ts +302 -0
- package/src/pi-progress-summarizer.ts +287 -0
- package/src/pre-flight-validator.test.ts +512 -0
- package/src/pre-flight-validator.ts +618 -0
- package/src/progress-stream-utils.test.ts +35 -0
- package/src/progress-stream-utils.ts +14 -0
- package/src/result-cache.test.ts +195 -0
- package/src/result-cache.ts +181 -0
- package/src/routes/artifact-routes.ts +169 -0
- package/src/routes/log-routes.ts +391 -0
- package/src/routes/status-routes.ts +92 -0
- package/src/routes/webhook-routes.ts +97 -0
- package/src/run-artifact-metadata-cache.test.ts +80 -0
- package/src/run-artifact-metadata-cache.ts +184 -0
- package/src/secret-value-cache.test.ts +66 -0
- package/src/secret-value-cache.ts +55 -0
- package/src/secrets/SecretsManager.ts +343 -0
- package/src/test-utils.ts +81 -0
- package/src/timestamp-tracker.test.ts +134 -0
- package/src/timestamp-tracker.ts +132 -0
- package/src/utils/failure-artifact-writer.ts +187 -0
- package/src/utils/file-helpers.test.ts +235 -0
- package/src/utils/file-helpers.ts +150 -0
- package/src/utils/http-client-factory.test.ts +245 -0
- package/src/utils/http-client-factory.ts +157 -0
- package/src/utils/progress-normalizer.test.ts +442 -0
- package/src/utils/progress-normalizer.ts +68 -0
- package/src/utils/response-helpers.test.ts +122 -0
- package/src/utils/response-helpers.ts +101 -0
- package/src/utils/route-helpers.ts +30 -0
- package/src/utils/status-response-builder.ts +159 -0
- package/src/utils/type-guards.ts +52 -0
- package/src/utils/utf8-helpers.ts +102 -0
- package/src/utils/webhook-event-builder.test.ts +143 -0
- package/src/utils/webhook-event-builder.ts +87 -0
- package/src/webhook-manager.test.ts +152 -0
- package/src/webhook-manager.ts +445 -0
- package/templates/allowlist-api-route.txt +7 -0
- package/templates/allowlist-comprehensive.txt +8 -0
- package/templates/allowlist-parser-fix.txt +6 -0
- package/templates/allowlist-ui-component.txt +9 -0
- package/templates/allowlist-utility.txt +9 -0
- package/test/actual-model-metadata.test.sh +102 -0
- package/test/dry-run.test.sh +131 -0
- package/test/fixtures/kaseki-report-exit-codes/metadata-exit-0.json +1 -0
- package/test/fixtures/kaseki-report-exit-codes/metadata-exit-1.json +1 -0
- package/test/fixtures/kaseki-report-exit-codes/metadata-exit-invalid.json +1 -0
- package/test/fixtures/kaseki-report-exit-codes/metadata-exit-str-0.json +1 -0
- package/test/fixtures/kaseki-report-exit-codes/metadata-exit-str-1.json +1 -0
- package/test/kaseki-api.integration.test.sh +165 -0
- package/test/pi-event-filter-failure.test.sh +83 -0
- package/test/printf-safety-focused.test.sh +99 -0
- package/test/printf-safety-results/results/restoration.jsonl +10 -0
- package/test/printf-safety-results/results/test.jsonl +0 -0
- package/test/printf-safety.test.sh +297 -0
- package/test/validation-fix.test.sh +79 -0
- package/test/validation-integration.test.sh +109 -0
- package/tests/allowlist-glob.test.sh +61 -0
- package/tests/dependency-cache-key.test.sh +48 -0
- package/tests/dependency-restore-mode.test.sh +48 -0
- package/tests/doctor-template-parity.test.sh +95 -0
- package/tests/github-operations.test.sh +142 -0
- package/tests/npm-install-flags.test.sh +58 -0
- package/tests/quality-gates.test.sh +178 -0
- package/tests/repo-memory.test.sh +103 -0
- package/tests/restore-disallowed-changes.test.sh +80 -0
- package/tests/validation-missing-npm-scripts.test.sh +93 -0
- package/tests/validation-strict-mode.test.sh +118 -0
- package/tsconfig.changed.json +7 -0
- package/tsconfig.json +39 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
# Enhanced Pi Agent Progress Logs
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This feature enhances the real-time progress logs emitted during Pi coding agent execution. Instead of showing only event counts and tool start/end notifications, the logs now include **contextual information** about what the agent is doing: file operations, decisions being made, and tool outputs.
|
|
6
|
+
|
|
7
|
+
**Status**: ✅ Complete and tested (49 new test cases, all passing)
|
|
8
|
+
|
|
9
|
+
## What Changed
|
|
10
|
+
|
|
11
|
+
### Before
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
[progress] pi tool: started read
|
|
15
|
+
[progress] pi tool: finished read
|
|
16
|
+
[progress] pi coding agent: working; events=163, tool starts=0, tool ends=0
|
|
17
|
+
[progress] pi tool: started bash
|
|
18
|
+
[progress] pi tool: finished bash
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### After
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
[progress] pi tool: start read | src/parser.ts (15s)
|
|
25
|
+
[progress] pi tool: end read | src/parser.ts (15s)
|
|
26
|
+
[progress] pi coding agent: working | 1m 23s elapsed
|
|
27
|
+
[progress] pi tool: start bash | npm test (1m 35s)
|
|
28
|
+
[progress] pi tool: end bash | npm test (1m 35s)
|
|
29
|
+
[progress] pi: processing | implementing error handler (1m 45s)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**With colors** (red for errors, yellow for warnings):
|
|
33
|
+
|
|
34
|
+
- Errors display in **RED**: `[progress] pi tool: bash npm test | FAILED`
|
|
35
|
+
- Warnings display in **YELLOW**: `[progress] pi: auto retry started`
|
|
36
|
+
|
|
37
|
+
## New Files
|
|
38
|
+
|
|
39
|
+
### Core Implementation
|
|
40
|
+
|
|
41
|
+
#### `src/pi-progress-summarizer.ts`
|
|
42
|
+
|
|
43
|
+
Main summarization module with the following exports:
|
|
44
|
+
|
|
45
|
+
- **`extractFilePath(toolName, content)`** — Extracts file paths from tool operations
|
|
46
|
+
- Handles `read_file`, `write_file`, `grep_search`, `file_search`, etc.
|
|
47
|
+
- Shortens absolute paths (removes `/workspaces/kaseki-agent/` prefix)
|
|
48
|
+
- Truncates long paths with ellipsis (`…/src/file.ts`)
|
|
49
|
+
|
|
50
|
+
- **`extractDecision(content)`** — Detects agent decision keywords
|
|
51
|
+
- Keywords: `create`, `modify`, `fix`, `implement`, `refactor`, `delete`, `update`, etc.
|
|
52
|
+
- Returns a sentence snippet containing the keyword, max 60 chars
|
|
53
|
+
|
|
54
|
+
- **`detectError(content)`** — Identifies error patterns in tool output
|
|
55
|
+
- Patterns: `error`, `failed`, `exception`, `exit code`, `cannot`, `not found`, etc.
|
|
56
|
+
- Returns `{ hasError: boolean, snippet?: string }`
|
|
57
|
+
|
|
58
|
+
- **`formatProgressMessage(stage, action, detail, level, elapsed)`** — Format logs with color
|
|
59
|
+
- **stage**: `"pi tool"` or `"pi coding agent"`
|
|
60
|
+
- **action**: The main action (e.g., `"read src/parser.ts"`)
|
|
61
|
+
- **detail**: Additional context (optional)
|
|
62
|
+
- **level**: `"info"` | `"warn"` | `"error"` (colors applied as specified)
|
|
63
|
+
- **elapsed**: Time since start, e.g., `"1m 23s"`
|
|
64
|
+
|
|
65
|
+
- **`EventSampler(rate)`** — Sample high-frequency events
|
|
66
|
+
- **rate**: Emit 1 out of every N events (default 10)
|
|
67
|
+
- Prevents log spam from `message_update` events
|
|
68
|
+
- Call `shouldEmit()` to check if event should be logged
|
|
69
|
+
|
|
70
|
+
- **`formatElapsed(startTime)`** — Convert timestamp to human-readable duration
|
|
71
|
+
- Returns `"45s"` or `"1m 25s"`
|
|
72
|
+
|
|
73
|
+
- **`truncate(text, maxLen)`** — Truncate text with ellipsis
|
|
74
|
+
- Default max length: 100 chars
|
|
75
|
+
- Adds `…` if truncated
|
|
76
|
+
|
|
77
|
+
#### `src/ansi-colors.ts`
|
|
78
|
+
|
|
79
|
+
Color code management:
|
|
80
|
+
|
|
81
|
+
- **`ANSI_COLORS`** constant object with color codes
|
|
82
|
+
- `RED`, `YELLOW`, `GREEN`, `BLUE`, `CYAN`, `MAGENTA`, `WHITE`, `RESET`, `BOLD`, `DIM`
|
|
83
|
+
- Automatically detects TTY; returns empty strings when piped (no ANSI codes in files)
|
|
84
|
+
- Respects `NO_COLOR` environment variable
|
|
85
|
+
|
|
86
|
+
- **`stripAnsi(text)`** — Remove ANSI codes from a string
|
|
87
|
+
- Used when writing to JSON logs to keep them clean
|
|
88
|
+
|
|
89
|
+
#### Enhanced `src/pi-progress-stream.ts`
|
|
90
|
+
|
|
91
|
+
Real-time progress stream integration:
|
|
92
|
+
|
|
93
|
+
- Imports and uses the summarizer functions
|
|
94
|
+
- Adds **color support** for error/warning events
|
|
95
|
+
- Implements **message sampling** (1 per 15 events to avoid noise)
|
|
96
|
+
- Tracks **elapsed time** since Pi agent start
|
|
97
|
+
- Emits periodic **"X elapsed"** messages every 30 seconds
|
|
98
|
+
- Strips ANSI codes when writing to `progress.jsonl` (keeps raw logs clean)
|
|
99
|
+
|
|
100
|
+
## Environment Variables
|
|
101
|
+
|
|
102
|
+
### New Variables
|
|
103
|
+
|
|
104
|
+
- **`KASEKI_PROGRESS_SUMMARIZATION`** (default: `1`)
|
|
105
|
+
- Set to `0` to disable enhanced summaries (revert to old format)
|
|
106
|
+
- Useful for debugging if summarization causes issues
|
|
107
|
+
|
|
108
|
+
### Existing Variables
|
|
109
|
+
|
|
110
|
+
- **`KASEKI_STREAM_PROGRESS`** (default: `1`)
|
|
111
|
+
- Set to `0` to suppress all `[progress]` stdout output
|
|
112
|
+
- Still writes to `/results/progress.log` and `progress.jsonl`
|
|
113
|
+
|
|
114
|
+
- **`NO_COLOR`** (default: empty)
|
|
115
|
+
- If set, suppresses ANSI color codes even in TTY
|
|
116
|
+
- Colors only applied when output is to a terminal (TTY)
|
|
117
|
+
|
|
118
|
+
## Output Files
|
|
119
|
+
|
|
120
|
+
### Updated `progress.jsonl`
|
|
121
|
+
|
|
122
|
+
Each line is a JSON object with:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"timestamp": "2026-05-08T20:54:58.841Z",
|
|
127
|
+
"updatedAt": "2026-05-08T20:54:58.841Z",
|
|
128
|
+
"stage": "pi tool",
|
|
129
|
+
"message": "start read | src/parser.ts (15s)",
|
|
130
|
+
"counts": { "tool_execution_start": 5, ... },
|
|
131
|
+
"level": "info"
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**New optional fields:**
|
|
136
|
+
|
|
137
|
+
- **`message`** — Now includes file paths, decisions, and durations
|
|
138
|
+
- **`level`** — `"info"` | `"warn"` | `"error"` (when applicable)
|
|
139
|
+
|
|
140
|
+
**Note:** ANSI color codes are **stripped** from `progress.jsonl` so the JSON file remains clean and parseable.
|
|
141
|
+
|
|
142
|
+
### `progress.log` (human-readable)
|
|
143
|
+
|
|
144
|
+
Plain text log with color codes (ANSI escape sequences) preserved when in TTY.
|
|
145
|
+
|
|
146
|
+
### `pi-events.jsonl` (post-run)
|
|
147
|
+
|
|
148
|
+
Unchanged. Processing by `pi-event-filter` is unaffected.
|
|
149
|
+
|
|
150
|
+
## Test Coverage
|
|
151
|
+
|
|
152
|
+
### New Tests (49 tests total)
|
|
153
|
+
|
|
154
|
+
**`src/pi-progress-summarizer.test.ts`** (41 tests):
|
|
155
|
+
|
|
156
|
+
- `extractFilePath`: 7 tests (paths, relative paths, truncation)
|
|
157
|
+
- `extractDecision`: 5 tests (keywords, case-insensitive, context)
|
|
158
|
+
- `detectError`: 6 tests (error patterns, exit codes, snippets)
|
|
159
|
+
- `formatElapsed`: 3 tests (seconds, minutes, durations)
|
|
160
|
+
- `truncate`: 4 tests (length, ellipsis, edge cases)
|
|
161
|
+
- `formatProgressMessage`: 6 tests (formatting, coloring, level handling)
|
|
162
|
+
- `EventSampler`: 4 tests (sampling rate, reset, defaults)
|
|
163
|
+
- `summarizeEvent`: 6 tests (file paths, errors, decisions, timing)
|
|
164
|
+
|
|
165
|
+
**`src/ansi-colors.test.ts`** (8 tests):
|
|
166
|
+
|
|
167
|
+
- Color constant exports and properties
|
|
168
|
+
- `stripAnsi` function for removing ANSI codes
|
|
169
|
+
- TTY detection and color code stripping
|
|
170
|
+
|
|
171
|
+
All tests pass on both TTY and non-TTY environments.
|
|
172
|
+
|
|
173
|
+
## Usage Examples
|
|
174
|
+
|
|
175
|
+
### Standard run (colors enabled in terminal)
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
$ OPENROUTER_API_KEY=sk-or-... ./run-kaseki.sh
|
|
179
|
+
...
|
|
180
|
+
[progress] pi coding agent: started
|
|
181
|
+
[progress] pi tool: start read | src/parser.ts (5s)
|
|
182
|
+
[progress] pi: processing | checking existing structure (8s)
|
|
183
|
+
[progress] pi tool: start grep | src/handlers.ts (12s)
|
|
184
|
+
[progress] pi: processing | refactoring types (18s)
|
|
185
|
+
[progress] pi tool: start write | src/parser.ts (22s)
|
|
186
|
+
[progress] pi coding agent: working; events=164 | 1m 23s elapsed
|
|
187
|
+
...
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### With piped output (colors automatically stripped)
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
$ OPENROUTER_API_KEY=sk-or-... ./run-kaseki.sh 2>&1 | tee output.log
|
|
194
|
+
# Colors not applied (piped output)
|
|
195
|
+
# But progress.jsonl still has clean data
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Disable summaries (revert to basic format)
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
$ KASEKI_PROGRESS_SUMMARIZATION=0 OPENROUTER_API_KEY=sk-or-... ./run-kaseki.sh
|
|
202
|
+
[progress] pi tool: started read
|
|
203
|
+
[progress] pi tool: finished read
|
|
204
|
+
[progress] pi coding agent: working; events=163, tool starts=0, tool ends=0
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Design Decisions
|
|
208
|
+
|
|
209
|
+
| Decision | Rationale |
|
|
210
|
+
|----------|-----------|
|
|
211
|
+
| **Sample message updates** (1 per 15) | Prevents spam; agents emit 100+ message updates per run; sampling shows progress without overwhelming |
|
|
212
|
+
| **1-line summaries max** | Fits typical terminal widths (80-100 chars); keeps logs concise |
|
|
213
|
+
| **Elapsed time every 30s** | Helps assess progress; not per-action to avoid clutter |
|
|
214
|
+
| **Colors only on TTY** | Prevents ANSI codes in log files; respects `NO_COLOR` |
|
|
215
|
+
| **Strip colors from JSON** | Keeps `progress.jsonl` clean and parseable by downstream tools |
|
|
216
|
+
| **Optional summarization** | Can disable with env var if needed; no breaking changes |
|
|
217
|
+
|
|
218
|
+
## Performance Considerations
|
|
219
|
+
|
|
220
|
+
- **Per-event overhead**: ~1-2ms per event (string matching, regex extraction)
|
|
221
|
+
- **For typical run** (500 events): ~500-1000ms total overhead
|
|
222
|
+
- **Acceptable?** Yes, represents <1% of typical 2-5 minute agent run
|
|
223
|
+
|
|
224
|
+
If performance becomes a concern, add `KASEKI_PROGRESS_SUMMARIZATION=0` to disable.
|
|
225
|
+
|
|
226
|
+
## Future Enhancements
|
|
227
|
+
|
|
228
|
+
1. **Highlight file types**: Color `src/` files differently from `tests/` or `node_modules/`
|
|
229
|
+
2. **Track changes per tool**: Show "3 files modified" summary at end
|
|
230
|
+
3. **Error recovery tracking**: "Retry 2/3 after error" messages
|
|
231
|
+
4. **Token usage estimate**: "~5000 tokens used" periodic updates
|
|
232
|
+
5. **Estimated time to completion**: "~2m remaining" based on observed patterns
|
|
233
|
+
|
|
234
|
+
## Troubleshooting
|
|
235
|
+
|
|
236
|
+
### No colors appearing?
|
|
237
|
+
|
|
238
|
+
- Check if output is in a TTY: `ls -la /dev/tty`
|
|
239
|
+
- If piped, colors are intentionally disabled
|
|
240
|
+
- Set `NO_COLOR=1` to disable even on TTY
|
|
241
|
+
- Or redirect to a file and check raw content: `cat /results/progress.log | od -c`
|
|
242
|
+
|
|
243
|
+
### Logs are too verbose?
|
|
244
|
+
|
|
245
|
+
- Set `KASEKI_PROGRESS_SUMMARIZATION=0` to disable summaries
|
|
246
|
+
- Or set `KASEKI_STREAM_PROGRESS=0` to suppress stdout (still writes to file)
|
|
247
|
+
|
|
248
|
+
### Logs are too terse?
|
|
249
|
+
|
|
250
|
+
- Currently not configurable, but can be tuned in code:
|
|
251
|
+
- Edit `src/pi-progress-stream.ts` line 64: `const messageSampler = new EventSampler(15);` → `new EventSampler(5);` for more messages
|
|
252
|
+
- Or increase in `src/pi-progress-summarizer.ts`: `truncate(..., 100)` → `truncate(..., 150)`
|
|
253
|
+
|
|
254
|
+
### JSON logs have ANSI codes?
|
|
255
|
+
|
|
256
|
+
- This should never happen (codes are stripped before writing)
|
|
257
|
+
- If it does, check `stripAnsi()` function in `ansi-colors.ts`
|
|
258
|
+
|
|
259
|
+
## Related Files
|
|
260
|
+
|
|
261
|
+
- [docs/QUALITY_GATES.md](QUALITY_GATES.md) — Progress logs used for quality gate reporting
|
|
262
|
+
- [docs/TASK_PROMPT_TEMPLATES.md](TASK_PROMPT_TEMPLATES.md) — Examples of prompts that generate informative agent decisions
|
|
263
|
+
- [src/pi-event-filter.ts](../src/pi-event-filter.ts) — Post-run filtering (unchanged)
|
|
264
|
+
- [src/progress-stream-utils.ts](../src/progress-stream-utils.ts) — Tool name sanitization (existing utility)
|