@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,219 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* kaseki-cli-lib.ts
|
|
4
|
+
*
|
|
5
|
+
* Core library for querying and analyzing kaseki instances.
|
|
6
|
+
* Provides functions for listing instances, reading status, detecting errors,
|
|
7
|
+
* and performing post-run analysis.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { listInstances, getInstanceStatus } from './kaseki-cli-lib';
|
|
11
|
+
* const instances = listInstances();
|
|
12
|
+
* const status = getInstanceStatus('kaseki-1');
|
|
13
|
+
*/
|
|
14
|
+
import { Metadata, HostStart } from './instance-metadata-reader';
|
|
15
|
+
import { deriveInstanceLifecycleStatus } from './instance-state-derivation';
|
|
16
|
+
interface Config {
|
|
17
|
+
KASEKI_RESULTS_DIR: string;
|
|
18
|
+
KASEKI_RUNS_DIR: string;
|
|
19
|
+
}
|
|
20
|
+
interface KasekiInstance {
|
|
21
|
+
name: string;
|
|
22
|
+
status: 'running' | 'completed' | 'failed' | 'pending';
|
|
23
|
+
running: boolean;
|
|
24
|
+
exitCode: number | null;
|
|
25
|
+
elapsedSeconds: number | null;
|
|
26
|
+
stage: string;
|
|
27
|
+
model: string;
|
|
28
|
+
repo: string;
|
|
29
|
+
ref: string;
|
|
30
|
+
}
|
|
31
|
+
interface InstanceStatus {
|
|
32
|
+
instance?: string;
|
|
33
|
+
error?: {
|
|
34
|
+
kind: string;
|
|
35
|
+
message: string;
|
|
36
|
+
};
|
|
37
|
+
status?: 'running' | 'completed' | 'failed' | 'pending';
|
|
38
|
+
running?: boolean;
|
|
39
|
+
stage?: string;
|
|
40
|
+
elapsedSeconds?: number | null;
|
|
41
|
+
totalDurationSeconds?: number | null;
|
|
42
|
+
agentElapsedSeconds?: number | null;
|
|
43
|
+
timeoutSeconds?: number;
|
|
44
|
+
timeoutRiskPercent?: number;
|
|
45
|
+
timeoutImminent?: boolean;
|
|
46
|
+
timedOut?: boolean;
|
|
47
|
+
exitCode?: number | null;
|
|
48
|
+
failureClass?: string;
|
|
49
|
+
repo?: string;
|
|
50
|
+
ref?: string;
|
|
51
|
+
model?: string;
|
|
52
|
+
}
|
|
53
|
+
interface ProgressEvent {
|
|
54
|
+
timestamp?: string;
|
|
55
|
+
stage: string;
|
|
56
|
+
message: string;
|
|
57
|
+
malformed?: boolean;
|
|
58
|
+
[key: string]: any;
|
|
59
|
+
}
|
|
60
|
+
interface DetectedError {
|
|
61
|
+
severity: string;
|
|
62
|
+
source: string;
|
|
63
|
+
line: number;
|
|
64
|
+
message: string;
|
|
65
|
+
}
|
|
66
|
+
interface AnalysisResult {
|
|
67
|
+
instance?: string;
|
|
68
|
+
error?: {
|
|
69
|
+
kind: string;
|
|
70
|
+
message: string;
|
|
71
|
+
};
|
|
72
|
+
status?: string;
|
|
73
|
+
exit_code?: number | string;
|
|
74
|
+
failure_class?: string;
|
|
75
|
+
failed_command?: string;
|
|
76
|
+
validation_failed_command?: string;
|
|
77
|
+
duration_seconds?: number;
|
|
78
|
+
pi_duration_seconds?: number;
|
|
79
|
+
model?: string;
|
|
80
|
+
changed_files_count?: number;
|
|
81
|
+
changed_files?: string[];
|
|
82
|
+
tool_executions?: number;
|
|
83
|
+
errors?: DetectedError[];
|
|
84
|
+
error_count?: number;
|
|
85
|
+
}
|
|
86
|
+
declare const config: Config;
|
|
87
|
+
declare const KASEKI_RESULTS_DIR: string;
|
|
88
|
+
declare const KASEKI_RUNS_DIR: string;
|
|
89
|
+
/**
|
|
90
|
+
* Parse docker ps --format '{{.Names}}' output into container name array.
|
|
91
|
+
*/
|
|
92
|
+
declare function parseDockerContainerNames(dockerNamesOutput: string): string[];
|
|
93
|
+
/**
|
|
94
|
+
* Exact container-name matcher (test seam).
|
|
95
|
+
* Ensures "kaseki-1" does NOT match "kaseki-10".
|
|
96
|
+
*/
|
|
97
|
+
declare function isExactContainerNameMatch(containerName: string, instance: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Check whether docker ps names output contains an exact instance match.
|
|
100
|
+
*/
|
|
101
|
+
declare function dockerNamesOutputHasInstance(dockerNamesOutput: string, instance: string): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Determine if an instance is currently running as a Docker container.
|
|
104
|
+
* Gracefully falls back to false when Docker is unavailable.
|
|
105
|
+
*/
|
|
106
|
+
declare function isInstanceRunning(instance: string): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Normalize an exit code candidate into an integer or null.
|
|
109
|
+
* (Re-exported from instance-state-derivation for backward compatibility)
|
|
110
|
+
*/
|
|
111
|
+
declare function normalizeExitCodeCandidate(value: any): number | null;
|
|
112
|
+
/**
|
|
113
|
+
* Wrapper around resolveInstanceExitCode from instance-state-derivation.
|
|
114
|
+
* @deprecated Use the imported resolveInstanceExitCode directly.
|
|
115
|
+
* Kept for API compatibility; delegates to imported function.
|
|
116
|
+
*/
|
|
117
|
+
declare function resolveInstanceExitCodeLocal(resultDir: string, metadata?: Metadata): number | null;
|
|
118
|
+
/**
|
|
119
|
+
* Wrapper around resolveInstanceStage from instance-state-derivation.
|
|
120
|
+
* Adapts the interface to match existing call sites.
|
|
121
|
+
* Note: The imported function requires resultsDir, but this wrapper uses the config.
|
|
122
|
+
*/
|
|
123
|
+
declare function resolveInstanceStageLocal(instance: string, metadata?: Metadata, fallback?: string): string;
|
|
124
|
+
/**
|
|
125
|
+
* Wrapper around classifyFailure from instance-state-derivation.
|
|
126
|
+
* @deprecated Use the imported classifyFailure directly.
|
|
127
|
+
* Kept for API compatibility; delegates to imported function.
|
|
128
|
+
*/
|
|
129
|
+
declare function classifyFailureLocal(metadata?: Metadata, exitCode?: number | string | null): string;
|
|
130
|
+
/**
|
|
131
|
+
* List all kaseki instances (running and completed).
|
|
132
|
+
* Returns array of instance objects with basic metadata.
|
|
133
|
+
*/
|
|
134
|
+
declare function listInstances(): KasekiInstance[];
|
|
135
|
+
/**
|
|
136
|
+
* Read an artifact file from a kaseki results directory.
|
|
137
|
+
* Returns file contents as string, or null if not found.
|
|
138
|
+
*/
|
|
139
|
+
declare function readArtifact(instance: string, filename: string): string | null;
|
|
140
|
+
/**
|
|
141
|
+
* Read a live-writable log file (tail the last N lines).
|
|
142
|
+
* Useful for stdout.log, stderr.log, validation.log which are continuously written.
|
|
143
|
+
*/
|
|
144
|
+
declare function readLiveLog(instance: string, filename: string, tailLines?: number): string | null;
|
|
145
|
+
/**
|
|
146
|
+
* Read sanitized progress events emitted by the runner.
|
|
147
|
+
*/
|
|
148
|
+
declare function readProgressEvents(instance: string, tailLines?: number): ProgressEvent[] | null;
|
|
149
|
+
/**
|
|
150
|
+
* Parse JSON artifact file.
|
|
151
|
+
* Returns parsed object, or empty object if not found or invalid.
|
|
152
|
+
*/
|
|
153
|
+
declare function readJsonArtifact(instance: string, filename: string): Record<string, any>;
|
|
154
|
+
/**
|
|
155
|
+
* Get the current stage of a running or completed instance.
|
|
156
|
+
* Parses stdout.log for "==> stage_name" markers.
|
|
157
|
+
*/
|
|
158
|
+
declare function getCurrentStage(instance: string): string;
|
|
159
|
+
/**
|
|
160
|
+
* Get the configured timeout seconds for the instance.
|
|
161
|
+
* Reads from host-start.json or falls back to default (1200).
|
|
162
|
+
*/
|
|
163
|
+
declare function getConfiguredTimeout(instance: string): number;
|
|
164
|
+
/**
|
|
165
|
+
* Calculate timeout risk percentage (0-100).
|
|
166
|
+
* Returns 0 if no risk, 100 if timed out, or percentage if approaching timeout.
|
|
167
|
+
* Flags warning at 85% of timeout.
|
|
168
|
+
*/
|
|
169
|
+
declare function calculateTimeoutRiskPercent(instance: string, elapsedSeconds: number | null | undefined): number;
|
|
170
|
+
/**
|
|
171
|
+
* Determine the overall status of an instance.
|
|
172
|
+
* Synthesizes all available state into a unified status object.
|
|
173
|
+
*/
|
|
174
|
+
declare function getInstanceStatus(instance: string): InstanceStatus;
|
|
175
|
+
/**
|
|
176
|
+
* Error severity levels
|
|
177
|
+
*/
|
|
178
|
+
declare const ErrorSeverity: {
|
|
179
|
+
CRITICAL: string;
|
|
180
|
+
ERROR: string;
|
|
181
|
+
WARNING: string;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Centralized error pattern matchers.
|
|
185
|
+
* Used by detectErrors to identify error patterns in log files.
|
|
186
|
+
*/
|
|
187
|
+
declare const ERROR_PATTERNS: {
|
|
188
|
+
stderr: RegExp;
|
|
189
|
+
stderrExclude: RegExp;
|
|
190
|
+
validation: RegExp;
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Scan a log file for lines matching an error pattern.
|
|
194
|
+
* @param instance The kaseki instance name
|
|
195
|
+
* @param artifactName The artifact filename to scan (e.g., 'stderr.log')
|
|
196
|
+
* @param pattern The regex pattern to match against each line
|
|
197
|
+
* @param source The error source label
|
|
198
|
+
* @param severity The error severity level
|
|
199
|
+
* @param excludePattern Optional regex to exclude certain lines
|
|
200
|
+
* @param exitCodeCondition Optional condition to check before scanning (e.g., secret_scan_exit_code !== 0)
|
|
201
|
+
* @returns Array of detected errors
|
|
202
|
+
*/
|
|
203
|
+
declare function scanLogForErrors(instance: string, artifactName: string, pattern: RegExp, source: string, severity: string, options?: {
|
|
204
|
+
excludePattern?: RegExp;
|
|
205
|
+
exitCodeCondition?: boolean;
|
|
206
|
+
allNonEmptyLines?: boolean;
|
|
207
|
+
}): DetectedError[];
|
|
208
|
+
/**
|
|
209
|
+
* Detect errors in a kaseki instance.
|
|
210
|
+
* Scans stderr, quality gates, secret scans, and validation failures.
|
|
211
|
+
*/
|
|
212
|
+
declare function detectErrors(instance: string): DetectedError[];
|
|
213
|
+
/**
|
|
214
|
+
* Perform comprehensive post-run analysis.
|
|
215
|
+
* Returns aggregate metrics and diagnostics.
|
|
216
|
+
*/
|
|
217
|
+
declare function getAnalysis(instance: string): AnalysisResult;
|
|
218
|
+
export { config, KASEKI_RESULTS_DIR, KASEKI_RUNS_DIR, listInstances, readArtifact, readLiveLog, readProgressEvents, readJsonArtifact, getCurrentStage, getConfiguredTimeout, calculateTimeoutRiskPercent, getInstanceStatus, detectErrors, scanLogForErrors, ERROR_PATTERNS, getAnalysis, ErrorSeverity, parseDockerContainerNames, isExactContainerNameMatch, dockerNamesOutputHasInstance, isInstanceRunning, deriveInstanceLifecycleStatus, normalizeExitCodeCandidate, resolveInstanceExitCodeLocal, resolveInstanceStageLocal, classifyFailureLocal, type Config, type KasekiInstance, type Metadata, type HostStart, type InstanceStatus, type ProgressEvent, type DetectedError, type AnalysisResult, };
|
|
219
|
+
//# sourceMappingURL=kaseki-cli-lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaseki-cli-lib.d.ts","sourceRoot":"","sources":["../src/kaseki-cli-lib.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAKH,OAAO,EAEL,QAAQ,EACR,SAAS,EACV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,6BAA6B,EAI9B,MAAM,6BAA6B,CAAC;AAMrC,UAAU,MAAM;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,QAAA,MAAM,MAAM,EAAE,MAGb,CAAC;AAGF,QAAA,MAAM,kBAAkB,QAA4B,CAAC;AACrD,QAAA,MAAM,eAAe,QAAyB,CAAC;AAM/C;;GAEG;AACH,iBAAS,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,EAAE,CAMtE;AAED;;;GAGG;AACH,iBAAS,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEnF;AAED;;GAEG;AACH,iBAAS,4BAA4B,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG1F;AAED;;;GAGG;AACH,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUpD;AAMD;;;GAGG;AACH,iBAAS,0BAA0B,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAE7D;AAED;;;;GAIG;AACH,iBAAS,4BAA4B,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,QAAa,GACtB,MAAM,GAAG,IAAI,CAEf;AAED;;;;GAIG;AACH,iBAAS,yBAAyB,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,QAAa,EACvB,QAAQ,GAAE,MAAkB,GAC3B,MAAM,CAMR;AAED;;;;GAIG;AACH,iBAAS,oBAAoB,CAC3B,QAAQ,GAAE,QAAa,EACvB,QAAQ,GAAE,MAAM,GAAG,MAAM,GAAG,IAAW,GACtC,MAAM,CAER;AAED;;;GAGG;AACH,iBAAS,aAAa,IAAI,cAAc,EAAE,CAsDzC;AAMD;;;GAGG;AACH,iBAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUvE;AAED;;;GAGG;AACH,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,GAAG,IAAI,CAM9F;AAED;;GAEG;AACH,iBAAS,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,aAAa,EAAE,GAAG,IAAI,CAiB5F;AAED;;;GAGG;AACH,iBAAS,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQjF;AAyBD;;;GAGG;AACH,iBAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;;GAIG;AACH,iBAAS,2BAA2B,CAClC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACxC,MAAM,CAOR;AAED;;;GAGG;AACH,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CA+E3D;AAMD;;GAEG;AACH,QAAA,MAAM,aAAa;;;;CAIlB,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,cAAc;;;;CAInB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,iBAAS,gBAAgB,CACvB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACA,aAAa,EAAE,CA8CjB;AAED;;;GAGG;AACH,iBAAS,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA+EvD;AAMD;;;GAGG;AACH,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuCrD;AAMD,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,oBAAoB,EAEpB,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,CAAC"}
|