@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,360 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prompt-engineering
|
|
3
|
+
description: Composing, testing, and validating TASK_PROMPT for kaseki agent runs
|
|
4
|
+
tags: [kaseki, prompts, task-design, security]
|
|
5
|
+
relatedSkills: [quality-gate-config, workflow-diagnosis]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Prompt Engineering for Kaseki Agent
|
|
9
|
+
|
|
10
|
+
This skill guides the design, testing, and security review of `TASK_PROMPT` — the instruction given to the Pi coding agent for isolated code changes.
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
**When to Use**:
|
|
15
|
+
- Designing a new kaseki task (bug fix, refactor, feature)
|
|
16
|
+
- Testing prompt clarity or scope before a run
|
|
17
|
+
- Security-reviewing prompts to prevent information leakage
|
|
18
|
+
- Validating that agent output matches expectations
|
|
19
|
+
|
|
20
|
+
**Key Concepts**:
|
|
21
|
+
- Task prompts define what the agent should do and boundaries
|
|
22
|
+
- Prompts must be scoped (avoid over-ambition)
|
|
23
|
+
- Security is critical: never include env vars, secrets, or sensitive paths
|
|
24
|
+
- Validation happens post-run via pi-summary.json analysis
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Task Prompt Structure
|
|
29
|
+
|
|
30
|
+
A well-formed `TASK_PROMPT` has three parts:
|
|
31
|
+
|
|
32
|
+
### 1. **Problem Statement** (2–3 sentences)
|
|
33
|
+
Clearly describe *what* is broken or needs changing.
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
The normalizeRole function in src/lib/role.ts does not safely handle
|
|
37
|
+
non-string Name inputs. When Name is a number or object, it causes
|
|
38
|
+
a runtime error. Fix this to accept any input type and convert it safely.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Best Practices**:
|
|
42
|
+
- ✓ Specific and actionable (e.g., "function X in file Y")
|
|
43
|
+
- ✓ Context about impact (why it matters)
|
|
44
|
+
- ✗ Vague or exploratory (e.g., "improve performance")
|
|
45
|
+
- ✗ Multiple unrelated problems (tackle one at a time)
|
|
46
|
+
|
|
47
|
+
### 2. **Scope Constraints** (2–4 bullet points)
|
|
48
|
+
Define *which files* the agent can and should change.
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
- Only modify src/lib/role.ts (implementation)
|
|
52
|
+
- Update tests/role.test.ts to cover new cases
|
|
53
|
+
- Do NOT modify other files or dependencies
|
|
54
|
+
- Do NOT refactor unrelated code
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Best Practices**:
|
|
58
|
+
- ✓ Explicit file allowlist (easier to validate)
|
|
59
|
+
- ✓ Clear "do not" constraints (prevents scope creep)
|
|
60
|
+
- ✗ Overly broad changes (e.g., "fix all type issues in src/")
|
|
61
|
+
- ✗ Ambiguous patterns (be specific: files or directories)
|
|
62
|
+
|
|
63
|
+
### 3. **Validation Criteria** (3–5 measurable checks)
|
|
64
|
+
Define what success looks like.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
- Tests must pass: npm run test -- tests/role.test.ts
|
|
68
|
+
- Type checking must pass: npm run check
|
|
69
|
+
- No other tests should break
|
|
70
|
+
- Code style must match existing patterns (reviewed visually)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Best Practices**:
|
|
74
|
+
- ✓ Measurable and automated where possible
|
|
75
|
+
- ✓ Specific test commands or files
|
|
76
|
+
- ✗ Subjective criteria alone (e.g., "code should be readable")
|
|
77
|
+
- ✗ Validation commands that hang or timeout
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Security Guardrails Checklist
|
|
82
|
+
|
|
83
|
+
**Before submitting a prompt, verify**:
|
|
84
|
+
|
|
85
|
+
- [ ] **No environment variables or secrets**
|
|
86
|
+
- ✗ "Use OPENROUTER_API_KEY to…"
|
|
87
|
+
- ✓ "The Pi CLI will be available"
|
|
88
|
+
|
|
89
|
+
- [ ] **No file paths to sensitive data**
|
|
90
|
+
- ✗ "/home/user/.ssh/id_rsa"
|
|
91
|
+
- ✗ "~/.config/credentials"
|
|
92
|
+
- ✓ Paths within the cloned repo only
|
|
93
|
+
|
|
94
|
+
- [ ] **No credential patterns**
|
|
95
|
+
- ✗ API key examples (sk-or-*, sk-ant-*, etc.)
|
|
96
|
+
- ✗ Bearer tokens or JWT tokens
|
|
97
|
+
- ✓ Mention "API key" without examples
|
|
98
|
+
|
|
99
|
+
- [ ] **No internal organizational details**
|
|
100
|
+
- ✗ Internal service URLs, IP addresses
|
|
101
|
+
- ✗ Org-specific naming conventions
|
|
102
|
+
- ✓ Public repo references
|
|
103
|
+
|
|
104
|
+
- [ ] **No version-specific constraints** (unless critical)
|
|
105
|
+
- ✗ "Must use Node 22.22.2" (this is already in the image)
|
|
106
|
+
- ✓ "Must support Node 20+"
|
|
107
|
+
|
|
108
|
+
**Post-Run Secret Scan**:
|
|
109
|
+
Kaseki automatically scans outputs for `sk-or-*` patterns. Review `secret-scan.log` in results.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Common Prompt Pitfalls
|
|
114
|
+
|
|
115
|
+
### ❌ Over-Scoped Task
|
|
116
|
+
```
|
|
117
|
+
"Refactor the entire src/lib/ directory to improve type safety
|
|
118
|
+
and performance. Update all 50+ test files."
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Problem**: Too large; agent may timeout or produce oversized diff.
|
|
122
|
+
**Fix**: Target one module; save refactoring for follow-up.
|
|
123
|
+
|
|
124
|
+
### ❌ Vague Success Criteria
|
|
125
|
+
```
|
|
126
|
+
"Make the code better. Tests should pass and code should be readable."
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Problem**: "Better" and "readable" are subjective.
|
|
130
|
+
**Fix**: "Fix bug X so tests pass; ensure no regressions in tests/other.test.ts."
|
|
131
|
+
|
|
132
|
+
### ❌ Implicit Dependencies
|
|
133
|
+
```
|
|
134
|
+
"The user.ts file should handle both user IDs and email addresses."
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**Problem**: "User IDs and email addresses" undefined; type system unclear.
|
|
138
|
+
**Fix**: "user.ts `getUserBy()` should accept `userId: string | number` and return User | null. Update types/user.ts and tests accordingly."
|
|
139
|
+
|
|
140
|
+
### ❌ Multi-Module Edits Without Allowlist
|
|
141
|
+
```
|
|
142
|
+
"Improve the authentication system."
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Problem**: Unbounded scope; agent could change auth-related code across src/.
|
|
146
|
+
**Fix**: "Fix the bug in src/auth/login.ts where sessions expire immediately (line 45). Only modify src/auth/login.ts and tests/auth.test.ts. Do NOT change middleware or other modules."
|
|
147
|
+
|
|
148
|
+
### ❌ No Validation Commands
|
|
149
|
+
```
|
|
150
|
+
"Tests should pass."
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Problem**: Which tests? How do we verify?
|
|
154
|
+
**Fix**: "Run: npm run test -- tests/auth.test.ts. All tests must pass with 0 failures."
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Example Prompts
|
|
159
|
+
|
|
160
|
+
### Example 1: Bug Fix (Small Scope)
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
PROBLEM:
|
|
164
|
+
The getUsername() function in src/utils/string.ts crashes when given
|
|
165
|
+
null or undefined. It should return an empty string for null/undefined
|
|
166
|
+
instead of throwing.
|
|
167
|
+
|
|
168
|
+
SCOPE:
|
|
169
|
+
- Modify src/utils/string.ts (fix getUsername function)
|
|
170
|
+
- Update tests/utils/string.test.ts (add null/undefined test cases)
|
|
171
|
+
- Do NOT change other utility functions or modules
|
|
172
|
+
|
|
173
|
+
VALIDATION:
|
|
174
|
+
- npm run test -- tests/utils/string.test.ts (all tests pass)
|
|
175
|
+
- npm run check (no type errors)
|
|
176
|
+
- Code must follow existing conventions (checked visually)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Example 2: Feature Addition (Bounded Scope)
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
PROBLEM:
|
|
183
|
+
The Role class currently supports role names only (string). Add support
|
|
184
|
+
for role IDs (numbers) so callers can use either identifier type.
|
|
185
|
+
|
|
186
|
+
SCOPE:
|
|
187
|
+
- Modify src/lib/role.ts (Role class and helper functions)
|
|
188
|
+
- Modify types/role.ts (TypeScript types)
|
|
189
|
+
- Update tests/role.test.ts (new test cases for ID support)
|
|
190
|
+
- Do NOT refactor unrelated code or modify other files
|
|
191
|
+
|
|
192
|
+
VALIDATION:
|
|
193
|
+
- npm run test -- tests/role.test.ts (all tests pass, no regressions)
|
|
194
|
+
- npm run check (no type errors)
|
|
195
|
+
- npm run build (build succeeds)
|
|
196
|
+
- Diff size must not exceed 500 lines (scope check)
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Example 3: Refactor (Constrained Change)
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
PROBLEM:
|
|
203
|
+
The parseConfig() function in src/config.ts uses nested if/else logic
|
|
204
|
+
that's hard to follow. Simplify it using a switch statement while
|
|
205
|
+
preserving exact behavior.
|
|
206
|
+
|
|
207
|
+
SCOPE:
|
|
208
|
+
- Modify src/config.ts (parseConfig function only)
|
|
209
|
+
- Modify tests/config.test.ts (ensure all test cases still pass)
|
|
210
|
+
- Do NOT add new features or change function signatures
|
|
211
|
+
|
|
212
|
+
VALIDATION:
|
|
213
|
+
- npm run test -- tests/config.test.ts (all tests pass)
|
|
214
|
+
- npm run check (no type errors)
|
|
215
|
+
- Behavior must be identical: compare inputs/outputs before/after
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Dry-Run Validation Workflow
|
|
221
|
+
|
|
222
|
+
Before running a real kaseki task on your target repo:
|
|
223
|
+
|
|
224
|
+
### Step 1: Prepare Locally
|
|
225
|
+
```bash
|
|
226
|
+
# Clone and inspect the target repo
|
|
227
|
+
git clone https://github.com/org/repo.git
|
|
228
|
+
cd repo
|
|
229
|
+
git checkout main # or your target branch
|
|
230
|
+
|
|
231
|
+
# Install dependencies
|
|
232
|
+
npm ci
|
|
233
|
+
|
|
234
|
+
# Run validation commands that the agent will run
|
|
235
|
+
npm run check
|
|
236
|
+
npm run test
|
|
237
|
+
npm run build
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Step 2: Design the Prompt
|
|
241
|
+
Write your prompt following the 3-part structure above. Save it in a file:
|
|
242
|
+
```bash
|
|
243
|
+
cat > /tmp/task-prompt.txt << 'EOF'
|
|
244
|
+
PROBLEM: ...
|
|
245
|
+
SCOPE: ...
|
|
246
|
+
VALIDATION: ...
|
|
247
|
+
EOF
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Step 3: Sanity Check
|
|
251
|
+
Verify manually that the task is achievable:
|
|
252
|
+
```bash
|
|
253
|
+
# Can I make this change manually in 5 minutes?
|
|
254
|
+
# Do all validation commands work without the change?
|
|
255
|
+
# Is the scope clear and bounded?
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Step 4: Use --doctor to Check Setup
|
|
259
|
+
```bash
|
|
260
|
+
REPO_URL=https://github.com/org/repo \
|
|
261
|
+
./run-kaseki.sh --doctor
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
This verifies API key, Docker, and Pi CLI without running the agent.
|
|
265
|
+
|
|
266
|
+
### Step 5: Run a Test Kaseki Instance
|
|
267
|
+
```bash
|
|
268
|
+
OPENROUTER_API_KEY=sk-or-... \
|
|
269
|
+
REPO_URL=https://github.com/org/repo \
|
|
270
|
+
TASK_PROMPT="$(cat /tmp/task-prompt.txt)" \
|
|
271
|
+
./run-kaseki.sh kaseki-test-1
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Step 6: Analyze Results
|
|
275
|
+
Check `/agents/kaseki-results/kaseki-test-1/`:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Quick summary
|
|
279
|
+
cat result-summary.md
|
|
280
|
+
|
|
281
|
+
# Event details
|
|
282
|
+
cat pi-summary.json | jq '.statistics'
|
|
283
|
+
|
|
284
|
+
# Did the agent understand the task?
|
|
285
|
+
cat pi-events.jsonl | jq '.type' | sort | uniq -c
|
|
286
|
+
|
|
287
|
+
# Check diff size
|
|
288
|
+
wc -c < git.diff
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**Success Indicators**:
|
|
292
|
+
- ✓ `pi-summary.json` shows "status": "completed"
|
|
293
|
+
- ✓ Diff size is reasonable (not 0 bytes, not 10+ MB)
|
|
294
|
+
- ✓ Changed files match your expectations
|
|
295
|
+
- ✓ All validation commands passed
|
|
296
|
+
- ✓ No secret leaks in `secret-scan.log`
|
|
297
|
+
|
|
298
|
+
**If Something's Wrong**:
|
|
299
|
+
- See [Workflow Diagnosis](workflow-diagnosis.md) for root-cause analysis
|
|
300
|
+
- Refine prompt and retry with a new kaseki instance (e.g., kaseki-test-2)
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Security Review Checklist
|
|
305
|
+
|
|
306
|
+
Before sharing a prompt or running it against a sensitive repo:
|
|
307
|
+
|
|
308
|
+
**Content Review**:
|
|
309
|
+
- [ ] No API keys, passwords, or tokens in examples
|
|
310
|
+
- [ ] No internal URLs or IP addresses
|
|
311
|
+
- [ ] No org-specific names or secrets
|
|
312
|
+
- [ ] No file paths outside the target repo
|
|
313
|
+
- [ ] No version-pinning (Node, npm, Pi CLI)
|
|
314
|
+
|
|
315
|
+
**Scope Review**:
|
|
316
|
+
- [ ] Allowlist is explicit (files, not wildcards)
|
|
317
|
+
- [ ] Constraints prevent unintended changes
|
|
318
|
+
- [ ] Validation commands are safe to run
|
|
319
|
+
- [ ] No dangerous shell commands in validation
|
|
320
|
+
|
|
321
|
+
**Post-Run Review**:
|
|
322
|
+
- [ ] Secret scan passes (no sk-or-* patterns found)
|
|
323
|
+
- [ ] Changed files are within allowlist
|
|
324
|
+
- [ ] Diff size is within expected range
|
|
325
|
+
- [ ] No credentials in pi-events.jsonl or pi-summary.json
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Tips for Better Prompts
|
|
330
|
+
|
|
331
|
+
1. **Be Specific, Not Generic**
|
|
332
|
+
- ✗ "Fix the bug in authentication"
|
|
333
|
+
- ✓ "Fix the SessionTimeout bug in src/auth/session.ts (line 42)"
|
|
334
|
+
|
|
335
|
+
2. **Use Code References**
|
|
336
|
+
- ✗ "Improve error handling"
|
|
337
|
+
- ✓ "Wrap the try/catch in src/db.ts (lines 12–25) to handle connection timeouts"
|
|
338
|
+
|
|
339
|
+
3. **Show Examples When Helpful**
|
|
340
|
+
- Include input/output examples for parsing or transformation logic
|
|
341
|
+
- But avoid secrets or real user data
|
|
342
|
+
|
|
343
|
+
4. **Keep Validation Deterministic**
|
|
344
|
+
- ✓ `npm run test -- tests/file.test.ts` (runs specific test file)
|
|
345
|
+
- ✗ `npm test` (might run all tests, could be slow)
|
|
346
|
+
|
|
347
|
+
5. **Test Locally First**
|
|
348
|
+
- Make the change yourself in 5 minutes
|
|
349
|
+
- Verify all validation commands pass
|
|
350
|
+
- Then give it to the agent
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Related Skills & Docs
|
|
355
|
+
|
|
356
|
+
- [Quality Gate Configuration](quality-gate-config.md) — Set allowlists and diff limits for your task
|
|
357
|
+
- [Workflow Diagnosis](workflow-diagnosis.md) — Analyze task results and troubleshoot failures
|
|
358
|
+
- [Test Automation](test-automation.md) — Ensure validation tests are robust
|
|
359
|
+
- [CLAUDE.md](../../CLAUDE.md) — Architecture and defaults (background reading)
|
|
360
|
+
- [CONTRIBUTING.md](../../CONTRIBUTING.md) — Contribution guidelines and validation rules
|