switchroom 0.5.0
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/LICENSE +21 -0
- package/README.md +447 -0
- package/bin/autoaccept.exp +81 -0
- package/bin/boot-self-test.sh +149 -0
- package/bin/bridge-watchdog.sh +967 -0
- package/bin/handoff-briefing.sh +206 -0
- package/bin/run-hook.sh +228 -0
- package/bin/switchroom.ts +4 -0
- package/bin/timezone-hook.sh +67 -0
- package/bin/user-profile-refresh-hook.sh +38 -0
- package/bin/workspace-dynamic-hook.sh +142 -0
- package/bin/workspace-stable-hook.sh +57 -0
- package/dist/cli/autoaccept-poll.js +118 -0
- package/dist/cli/switchroom.js +48557 -0
- package/package.json +95 -0
- package/profiles/_base/settings.json.hbs +15 -0
- package/profiles/_base/start.sh.hbs +383 -0
- package/profiles/_shared/telegram-style.md.hbs +140 -0
- package/profiles/coding/CLAUDE.md.hbs +57 -0
- package/profiles/coding/skills/architecture/SKILL.md +70 -0
- package/profiles/coding/skills/code-review/SKILL.md +58 -0
- package/profiles/coding/workspace/SOUL.md.hbs +25 -0
- package/profiles/default/CLAUDE.md +238 -0
- package/profiles/default/CLAUDE.md.hbs +113 -0
- package/profiles/default/workspace/CLAUDE.md.hbs +126 -0
- package/profiles/default/workspace/HEARTBEAT.md.hbs +40 -0
- package/profiles/default/workspace/IDENTITY.md.hbs +32 -0
- package/profiles/default/workspace/MEMORY.md.hbs +29 -0
- package/profiles/default/workspace/SOUL.md.hbs +61 -0
- package/profiles/default/workspace/TOOLS.md.hbs +29 -0
- package/profiles/default/workspace/USER.md.hbs +52 -0
- package/profiles/default/workspace/memory/.gitkeep +0 -0
- package/profiles/executive-assistant/CLAUDE.md.hbs +51 -0
- package/profiles/executive-assistant/skills/daily-briefing/SKILL.md +55 -0
- package/profiles/executive-assistant/skills/meeting-prep/SKILL.md +58 -0
- package/profiles/executive-assistant/workspace/SOUL.md.hbs +25 -0
- package/profiles/health-coach/CLAUDE.md.hbs +45 -0
- package/profiles/health-coach/skills/check-in/SKILL.md +41 -0
- package/profiles/health-coach/skills/weekly-review/SKILL.md +53 -0
- package/profiles/health-coach/workspace/SOUL.md.hbs +25 -0
- package/skills/buildkite-agent-infrastructure/SKILL.md +302 -0
- package/skills/buildkite-agent-infrastructure/agents/openai.yaml +6 -0
- package/skills/buildkite-agent-infrastructure/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-agent-infrastructure/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-agent-infrastructure/references/audit-logging.md +87 -0
- package/skills/buildkite-agent-infrastructure/references/graphql-mutations.md +690 -0
- package/skills/buildkite-agent-infrastructure/references/instance-shapes.md +38 -0
- package/skills/buildkite-agent-infrastructure/references/pipeline-templates.md +73 -0
- package/skills/buildkite-agent-infrastructure/references/self-hosted-agents.md +137 -0
- package/skills/buildkite-agent-infrastructure/references/sso-saml.md +92 -0
- package/skills/buildkite-agent-runtime/SKILL.md +476 -0
- package/skills/buildkite-agent-runtime/agents/openai.yaml +6 -0
- package/skills/buildkite-agent-runtime/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-agent-runtime/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-agent-runtime/references/flag-reference.md +417 -0
- package/skills/buildkite-agent-runtime/references/patterns-and-recipes.md +555 -0
- package/skills/buildkite-api/SKILL.md +285 -0
- package/skills/buildkite-api/agents/openai.yaml +6 -0
- package/skills/buildkite-api/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-api/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-api/references/graphql-reference.md +195 -0
- package/skills/buildkite-api/references/patterns.md +44 -0
- package/skills/buildkite-api/references/webhooks.md +161 -0
- package/skills/buildkite-cli/SKILL.md +379 -0
- package/skills/buildkite-cli/agents/openai.yaml +6 -0
- package/skills/buildkite-cli/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-cli/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-cli/references/command-reference.md +181 -0
- package/skills/buildkite-migration/SKILL.md +182 -0
- package/skills/buildkite-pipelines/SKILL.md +464 -0
- package/skills/buildkite-pipelines/agents/openai.yaml +6 -0
- package/skills/buildkite-pipelines/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-pipelines/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-pipelines/examples/basic-pipeline.yml +24 -0
- package/skills/buildkite-pipelines/examples/optimized-pipeline.yml +100 -0
- package/skills/buildkite-pipelines/references/advanced-patterns.md +286 -0
- package/skills/buildkite-pipelines/references/retry-and-error-codes.md +131 -0
- package/skills/buildkite-pipelines/references/step-types-reference.md +225 -0
- package/skills/buildkite-secure-delivery/SKILL.md +168 -0
- package/skills/buildkite-secure-delivery/agents/openai.yaml +6 -0
- package/skills/buildkite-secure-delivery/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-secure-delivery/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-secure-delivery/references/oidc-cloud-providers.md +83 -0
- package/skills/buildkite-secure-delivery/references/package-publishing.md +100 -0
- package/skills/buildkite-test-engine/SKILL.md +239 -0
- package/skills/buildkite-test-engine/agents/openai.yaml +6 -0
- package/skills/buildkite-test-engine/assets/buildkite-icon-large.png +0 -0
- package/skills/buildkite-test-engine/assets/buildkite-icon-small.png +0 -0
- package/skills/buildkite-test-engine/examples/bktec-splitting.yml +16 -0
- package/skills/buildkite-test-engine/examples/collector-pipeline.yml +11 -0
- package/skills/buildkite-test-engine/references/collectors.md +198 -0
- package/skills/buildkite-test-engine/references/splitting-examples.md +93 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +590 -0
- package/skills/docx/VENDORED.md +32 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/accept_changes.py +135 -0
- package/skills/docx/scripts/comment.py +318 -0
- package/skills/docx/scripts/office/helpers/__init__.py +0 -0
- package/skills/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/docx/scripts/office/pack.py +159 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/scripts/office/soffice.py +183 -0
- package/skills/docx/scripts/office/unpack.py +132 -0
- package/skills/docx/scripts/office/validate.py +111 -0
- package/skills/docx/scripts/office/validators/__init__.py +15 -0
- package/skills/docx/scripts/office/validators/__pycache__/__init__.cpython-313.pyc +0 -0
- package/skills/docx/scripts/office/validators/__pycache__/base.cpython-313.pyc +0 -0
- package/skills/docx/scripts/office/validators/base.py +847 -0
- package/skills/docx/scripts/office/validators/docx.py +446 -0
- package/skills/docx/scripts/office/validators/pptx.py +275 -0
- package/skills/docx/scripts/office/validators/redlining.py +247 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/file-bug/SKILL.md +129 -0
- package/skills/humanizer/LICENSE +21 -0
- package/skills/humanizer/SKILL.md +559 -0
- package/skills/humanizer/VENDORED.md +38 -0
- package/skills/humanizer-calibrate/SKILL.md +144 -0
- package/skills/mcp-builder/LICENSE.txt +202 -0
- package/skills/mcp-builder/SKILL.md +236 -0
- package/skills/mcp-builder/VENDORED.md +32 -0
- package/skills/mcp-builder/reference/evaluation.md +602 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +314 -0
- package/skills/pdf/VENDORED.md +32 -0
- package/skills/pdf/forms.md +294 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +65 -0
- package/skills/pdf/scripts/check_fillable_fields.py +11 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/skills/pdf/scripts/create_validation_image.py +37 -0
- package/skills/pdf/scripts/extract_form_field_info.py +122 -0
- package/skills/pdf/scripts/extract_form_structure.py +115 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +98 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +232 -0
- package/skills/pptx/VENDORED.md +32 -0
- package/skills/pptx/editing.md +205 -0
- package/skills/pptx/pptxgenjs.md +420 -0
- package/skills/pptx/scripts/__init__.py +0 -0
- package/skills/pptx/scripts/add_slide.py +195 -0
- package/skills/pptx/scripts/clean.py +286 -0
- package/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/pptx/scripts/office/pack.py +159 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/scripts/office/soffice.py +183 -0
- package/skills/pptx/scripts/office/unpack.py +132 -0
- package/skills/pptx/scripts/office/validate.py +111 -0
- package/skills/pptx/scripts/office/validators/__init__.py +15 -0
- package/skills/pptx/scripts/office/validators/base.py +847 -0
- package/skills/pptx/scripts/office/validators/docx.py +446 -0
- package/skills/pptx/scripts/office/validators/pptx.py +275 -0
- package/skills/pptx/scripts/office/validators/redlining.py +247 -0
- package/skills/pptx/scripts/thumbnail.py +289 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/SKILL.md +485 -0
- package/skills/skill-creator/VENDORED.md +32 -0
- package/skills/skill-creator/agents/analyzer.md +274 -0
- package/skills/skill-creator/agents/comparator.md +202 -0
- package/skills/skill-creator/agents/grader.md +223 -0
- package/skills/skill-creator/assets/eval_review.html +146 -0
- package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/skill-creator/references/schemas.md +430 -0
- package/skills/skill-creator/scripts/__init__.py +0 -0
- package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/skill-creator/scripts/generate_report.py +326 -0
- package/skills/skill-creator/scripts/improve_description.py +247 -0
- package/skills/skill-creator/scripts/package_skill.py +136 -0
- package/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/skill-creator/scripts/run_eval.py +310 -0
- package/skills/skill-creator/scripts/run_loop.py +328 -0
- package/skills/skill-creator/scripts/utils.py +47 -0
- package/skills/switchroom-architecture/SKILL.md +60 -0
- package/skills/switchroom-architecture/cascade.md +112 -0
- package/skills/switchroom-architecture/sub-agents.md +87 -0
- package/skills/switchroom-architecture/telegram.md +94 -0
- package/skills/switchroom-cli/SKILL.md +274 -0
- package/skills/switchroom-health/SKILL.md +101 -0
- package/skills/switchroom-install/SKILL.md +116 -0
- package/skills/switchroom-manage/SKILL.md +90 -0
- package/skills/switchroom-status/SKILL.md +69 -0
- package/skills/switchroom-status/scripts/status.sh +69 -0
- package/skills/telegram-test-harness/SKILL.md +191 -0
- package/skills/token-helpers/SKILL.md +73 -0
- package/skills/token-helpers/scripts/google-cal-token.sh +62 -0
- package/skills/token-helpers/scripts/ms-graph-token.sh +70 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +96 -0
- package/skills/webapp-testing/VENDORED.md +32 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +292 -0
- package/skills/xlsx/VENDORED.md +32 -0
- package/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/skills/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/xlsx/scripts/office/pack.py +159 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/xlsx/scripts/office/soffice.py +183 -0
- package/skills/xlsx/scripts/office/unpack.py +132 -0
- package/skills/xlsx/scripts/office/validate.py +111 -0
- package/skills/xlsx/scripts/office/validators/__init__.py +15 -0
- package/skills/xlsx/scripts/office/validators/base.py +847 -0
- package/skills/xlsx/scripts/office/validators/docx.py +446 -0
- package/skills/xlsx/scripts/office/validators/pptx.py +275 -0
- package/skills/xlsx/scripts/office/validators/redlining.py +247 -0
- package/skills/xlsx/scripts/recalc.py +184 -0
- package/telegram-plugin/.claude-plugin/plugin.json +20 -0
- package/telegram-plugin/.mcp.json +14 -0
- package/telegram-plugin/LICENSE +21 -0
- package/telegram-plugin/README.md +352 -0
- package/telegram-plugin/active-pins-sweep.ts +204 -0
- package/telegram-plugin/active-pins.ts +146 -0
- package/telegram-plugin/active-reactions-sweep.ts +79 -0
- package/telegram-plugin/active-reactions.ts +134 -0
- package/telegram-plugin/admin-commands/dispatch.test.ts +149 -0
- package/telegram-plugin/admin-commands/index.ts +106 -0
- package/telegram-plugin/answer-stream.ts +565 -0
- package/telegram-plugin/ask-user.ts +179 -0
- package/telegram-plugin/attachment-path.ts +80 -0
- package/telegram-plugin/auth-code-redact.ts +83 -0
- package/telegram-plugin/auth-dashboard.ts +1104 -0
- package/telegram-plugin/auth-slot-parser.ts +497 -0
- package/telegram-plugin/auto-fallback-dispatcher.ts +68 -0
- package/telegram-plugin/auto-fallback.ts +348 -0
- package/telegram-plugin/bridge/bridge.ts +687 -0
- package/telegram-plugin/bridge/ipc-client.ts +326 -0
- package/telegram-plugin/bun.lock +218 -0
- package/telegram-plugin/card-format.ts +62 -0
- package/telegram-plugin/channel-envelope-safety.test.ts +56 -0
- package/telegram-plugin/channel-envelope-safety.ts +56 -0
- package/telegram-plugin/chat-lock.ts +65 -0
- package/telegram-plugin/context-exhaustion.ts +38 -0
- package/telegram-plugin/credits-watch.ts +220 -0
- package/telegram-plugin/dist/bridge/bridge.js +24758 -0
- package/telegram-plugin/dist/foreman/foreman.js +30723 -0
- package/telegram-plugin/dist/gateway/gateway.js +46497 -0
- package/telegram-plugin/dist/server.js +24551 -0
- package/telegram-plugin/dm-command-gate.ts +56 -0
- package/telegram-plugin/docs/gateway-server-split.md +133 -0
- package/telegram-plugin/docs/multi-agent-card-design.md +847 -0
- package/telegram-plugin/docs/pinned-progress-card-reliability.md +144 -0
- package/telegram-plugin/docs/stream-json-daemon-mode.md +477 -0
- package/telegram-plugin/docs/waiting-ux-spec.md +233 -0
- package/telegram-plugin/draft-stream.ts +442 -0
- package/telegram-plugin/draft-transport.ts +72 -0
- package/telegram-plugin/first-paint.ts +246 -0
- package/telegram-plugin/fleet-state.ts +246 -0
- package/telegram-plugin/foreman/foreman-create-flow.ts +202 -0
- package/telegram-plugin/foreman/foreman-handlers.ts +493 -0
- package/telegram-plugin/foreman/foreman.ts +1130 -0
- package/telegram-plugin/foreman/setup-flow.ts +345 -0
- package/telegram-plugin/foreman/setup-state.ts +239 -0
- package/telegram-plugin/foreman/state.ts +203 -0
- package/telegram-plugin/format.ts +685 -0
- package/telegram-plugin/gateway/access-validator.test.ts +95 -0
- package/telegram-plugin/gateway/access-validator.ts +37 -0
- package/telegram-plugin/gateway/boot-card.ts +582 -0
- package/telegram-plugin/gateway/boot-probes.ts +863 -0
- package/telegram-plugin/gateway/boot-reason.ts +51 -0
- package/telegram-plugin/gateway/boot-sweep-filter.test.ts +54 -0
- package/telegram-plugin/gateway/boot-sweep-filter.ts +32 -0
- package/telegram-plugin/gateway/clean-shutdown-marker.ts +183 -0
- package/telegram-plugin/gateway/disconnect-flush.ts +109 -0
- package/telegram-plugin/gateway/gateway.ts +10202 -0
- package/telegram-plugin/gateway/inbound-coalesce.ts +147 -0
- package/telegram-plugin/gateway/inject-handler.test.ts +221 -0
- package/telegram-plugin/gateway/inject-handler.ts +190 -0
- package/telegram-plugin/gateway/ipc-protocol.ts +151 -0
- package/telegram-plugin/gateway/ipc-server.ts +494 -0
- package/telegram-plugin/gateway/pid-file.ts +103 -0
- package/telegram-plugin/gateway/poll-health.ts +156 -0
- package/telegram-plugin/gateway/preamble-suppressor.ts +154 -0
- package/telegram-plugin/gateway/quota-cache.ts +125 -0
- package/telegram-plugin/gateway/resolve-calling-subagent.ts +78 -0
- package/telegram-plugin/gateway/restart-watchdog.ts +200 -0
- package/telegram-plugin/gateway/session-marker.ts +83 -0
- package/telegram-plugin/gateway/shutdown-drain.ts +162 -0
- package/telegram-plugin/gateway/startup-mutex.ts +285 -0
- package/telegram-plugin/gateway/startup-network-retry.ts +142 -0
- package/telegram-plugin/gateway/turn-active-marker.ts +176 -0
- package/telegram-plugin/gateway/unhandled-rejection-policy.ts +78 -0
- package/telegram-plugin/handoff-continuity.ts +200 -0
- package/telegram-plugin/history.ts +468 -0
- package/telegram-plugin/hooks/hooks.json +58 -0
- package/telegram-plugin/hooks/secret-guard-pretool.mjs +208 -0
- package/telegram-plugin/hooks/secret-scrub-stop.mjs +98 -0
- package/telegram-plugin/hooks/silent-end-interrupt-stop.mjs +111 -0
- package/telegram-plugin/hooks/subagent-tracker-posttool.mjs +296 -0
- package/telegram-plugin/hooks/subagent-tracker-pretool.mjs +261 -0
- package/telegram-plugin/html-sanitize.ts +244 -0
- package/telegram-plugin/idle-footer.ts +65 -0
- package/telegram-plugin/inline-keyboard-callbacks.ts +166 -0
- package/telegram-plugin/interrupt-marker.ts +66 -0
- package/telegram-plugin/issues-card.ts +371 -0
- package/telegram-plugin/issues-watcher.ts +125 -0
- package/telegram-plugin/model-unavailable.ts +325 -0
- package/telegram-plugin/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/telegram-plugin/operator-events-history.ts +94 -0
- package/telegram-plugin/operator-events.fixtures.json +161 -0
- package/telegram-plugin/operator-events.ts +421 -0
- package/telegram-plugin/package.json +55 -0
- package/telegram-plugin/permission-rule.ts +133 -0
- package/telegram-plugin/permission-title.ts +117 -0
- package/telegram-plugin/pin-event-log.ts +76 -0
- package/telegram-plugin/plugin-logger.ts +136 -0
- package/telegram-plugin/progress-card-driver.ts +2697 -0
- package/telegram-plugin/progress-card-pin-manager.ts +589 -0
- package/telegram-plugin/progress-card-pin-watchdog.ts +98 -0
- package/telegram-plugin/progress-card.ts +1409 -0
- package/telegram-plugin/pty-partial-handler.ts +247 -0
- package/telegram-plugin/pty-tail.ts +730 -0
- package/telegram-plugin/quota-check.ts +474 -0
- package/telegram-plugin/recent-outbound-dedup.ts +169 -0
- package/telegram-plugin/registry/api-registry.test.ts +201 -0
- package/telegram-plugin/registry/subagents-bugs.test.ts +454 -0
- package/telegram-plugin/registry/subagents-schema.ts +509 -0
- package/telegram-plugin/registry/subagents.test.ts +476 -0
- package/telegram-plugin/registry/turns-schema.test.ts +101 -0
- package/telegram-plugin/registry/turns-schema.ts +417 -0
- package/telegram-plugin/retry-api-call.ts +172 -0
- package/telegram-plugin/scripts/build.mjs +78 -0
- package/telegram-plugin/secret-detect/audit.ts +66 -0
- package/telegram-plugin/secret-detect/chunker.ts +37 -0
- package/telegram-plugin/secret-detect/entropy.ts +20 -0
- package/telegram-plugin/secret-detect/gitleaks-loader.ts +74 -0
- package/telegram-plugin/secret-detect/gitleaks.toml +27 -0
- package/telegram-plugin/secret-detect/index.ts +218 -0
- package/telegram-plugin/secret-detect/kv-scanner.ts +60 -0
- package/telegram-plugin/secret-detect/mask.ts +13 -0
- package/telegram-plugin/secret-detect/patterns.ts +115 -0
- package/telegram-plugin/secret-detect/pipeline.ts +144 -0
- package/telegram-plugin/secret-detect/rewrite.ts +26 -0
- package/telegram-plugin/secret-detect/secretlint-source.ts +95 -0
- package/telegram-plugin/secret-detect/slug.ts +44 -0
- package/telegram-plugin/secret-detect/staging.ts +85 -0
- package/telegram-plugin/secret-detect/suppressor.ts +34 -0
- package/telegram-plugin/secret-detect/url-redact.ts +60 -0
- package/telegram-plugin/secret-detect/vault-write.ts +56 -0
- package/telegram-plugin/server.js +41795 -0
- package/telegram-plugin/server.ts +171 -0
- package/telegram-plugin/session-tail.ts +884 -0
- package/telegram-plugin/shared/bot-runtime.ts +324 -0
- package/telegram-plugin/silent-reply.ts +58 -0
- package/telegram-plugin/slot-banner-driver.ts +147 -0
- package/telegram-plugin/slot-banner.ts +86 -0
- package/telegram-plugin/start.js +26 -0
- package/telegram-plugin/startup-reset.ts +45 -0
- package/telegram-plugin/status-reactions.ts +332 -0
- package/telegram-plugin/steering.ts +155 -0
- package/telegram-plugin/sticker-aliases.ts +249 -0
- package/telegram-plugin/stream-controller.ts +311 -0
- package/telegram-plugin/stream-reply-handler.ts +664 -0
- package/telegram-plugin/streaming-metrics.ts +134 -0
- package/telegram-plugin/streaming-report.ts +204 -0
- package/telegram-plugin/subagent-watcher.ts +880 -0
- package/telegram-plugin/telegram-button-constraints.ts +191 -0
- package/telegram-plugin/telegraph.ts +381 -0
- package/telegram-plugin/tests/HARNESS.md +340 -0
- package/telegram-plugin/tests/_progress-card-harness.ts +105 -0
- package/telegram-plugin/tests/active-pins-boot-reaper.test.ts +211 -0
- package/telegram-plugin/tests/active-pins-sweep.test.ts +309 -0
- package/telegram-plugin/tests/active-pins.test.ts +187 -0
- package/telegram-plugin/tests/active-reactions-sweep.test.ts +116 -0
- package/telegram-plugin/tests/active-reactions.test.ts +198 -0
- package/telegram-plugin/tests/answer-stream-dedup.test.ts +352 -0
- package/telegram-plugin/tests/answer-stream-silent-markers.test.ts +236 -0
- package/telegram-plugin/tests/answer-stream.test.ts +878 -0
- package/telegram-plugin/tests/ask-user.test.ts +203 -0
- package/telegram-plugin/tests/attachment-path.test.ts +199 -0
- package/telegram-plugin/tests/auth-account-identity-surface.test.ts +118 -0
- package/telegram-plugin/tests/auth-code-auto-capture.test.ts +144 -0
- package/telegram-plugin/tests/auth-code-redact.test.ts +248 -0
- package/telegram-plugin/tests/auth-dashboard-edge-cases.test.ts +260 -0
- package/telegram-plugin/tests/auth-dashboard-restart-flow.test.ts +140 -0
- package/telegram-plugin/tests/auth-dashboard-v3b.test.ts +559 -0
- package/telegram-plugin/tests/auth-dashboard.test.ts +1045 -0
- package/telegram-plugin/tests/auth-login-url-button.test.ts +122 -0
- package/telegram-plugin/tests/auth-slot-commands.test.ts +640 -0
- package/telegram-plugin/tests/auto-fallback-dispatcher.e2e.test.ts +183 -0
- package/telegram-plugin/tests/auto-fallback.test.ts +381 -0
- package/telegram-plugin/tests/boot-card-account-quota.test.ts +137 -0
- package/telegram-plugin/tests/boot-card-dedupe.test.ts +154 -0
- package/telegram-plugin/tests/boot-card-probe-target.test.ts +194 -0
- package/telegram-plugin/tests/boot-card-reason.test.ts +103 -0
- package/telegram-plugin/tests/boot-card-render.test.ts +219 -0
- package/telegram-plugin/tests/boot-probes.test.ts +451 -0
- package/telegram-plugin/tests/bot-api.harness.ts +116 -0
- package/telegram-plugin/tests/bot-runtime.test.ts +190 -0
- package/telegram-plugin/tests/bridge-anonymous-refuse.test.ts +60 -0
- package/telegram-plugin/tests/context-exhaustion.test.ts +114 -0
- package/telegram-plugin/tests/credits-watch.test.ts +221 -0
- package/telegram-plugin/tests/dm-command-gate.test.ts +176 -0
- package/telegram-plugin/tests/draft-stream.test.ts +752 -0
- package/telegram-plugin/tests/draft-transport.test.ts +141 -0
- package/telegram-plugin/tests/e2e.test.ts +436 -0
- package/telegram-plugin/tests/fake-bot-api.test.ts +213 -0
- package/telegram-plugin/tests/fake-bot-api.ts +617 -0
- package/telegram-plugin/tests/false-restart-banner.test.ts +253 -0
- package/telegram-plugin/tests/first-paint.test.ts +257 -0
- package/telegram-plugin/tests/fixtures/pty-tail-tmux-fragment.bin +6 -0
- package/telegram-plugin/tests/fixtures/service-log-current-claude-code.bin +3624 -0
- package/telegram-plugin/tests/fleet-state-watcher.test.ts +101 -0
- package/telegram-plugin/tests/fleet-state.test.ts +185 -0
- package/telegram-plugin/tests/foreman-create-flow.test.ts +359 -0
- package/telegram-plugin/tests/foreman-handlers.test.ts +347 -0
- package/telegram-plugin/tests/foreman-state.test.ts +164 -0
- package/telegram-plugin/tests/foreman-write-ops.test.ts +214 -0
- package/telegram-plugin/tests/gateway-409-retry-banner.test.ts +173 -0
- package/telegram-plugin/tests/gateway-boot-marker-clear.test.ts +72 -0
- package/telegram-plugin/tests/gateway-bridge.test.ts +811 -0
- package/telegram-plugin/tests/gateway-clean-shutdown-marker.test.ts +414 -0
- package/telegram-plugin/tests/gateway-disconnect-flush.test.ts +144 -0
- package/telegram-plugin/tests/gateway-message-validator.test.ts +133 -0
- package/telegram-plugin/tests/gateway-no-reply-single-emit.test.ts +103 -0
- package/telegram-plugin/tests/gateway-secret-detect.test.ts +127 -0
- package/telegram-plugin/tests/gateway-startup-mutex.test.ts +284 -0
- package/telegram-plugin/tests/gateway-startup-network-retry.test.ts +185 -0
- package/telegram-plugin/tests/gateway-startup-reset.test.ts +72 -0
- package/telegram-plugin/tests/gateway-update-placeholder-dispatch.test.ts +125 -0
- package/telegram-plugin/tests/handoff-continuity.test.ts +249 -0
- package/telegram-plugin/tests/harness-ordering-invariants.test.ts +243 -0
- package/telegram-plugin/tests/harness-parse-mode-validation.test.ts +114 -0
- package/telegram-plugin/tests/history.test.ts +364 -0
- package/telegram-plugin/tests/html-balanced.ts +63 -0
- package/telegram-plugin/tests/html-sanitize.test.ts +146 -0
- package/telegram-plugin/tests/idle-footer-wiring.test.ts +88 -0
- package/telegram-plugin/tests/idle-footer.test.ts +66 -0
- package/telegram-plugin/tests/inbound-coalesce.test.ts +127 -0
- package/telegram-plugin/tests/inline-keyboard-callbacks.test.ts +150 -0
- package/telegram-plugin/tests/interrupt-marker.test.ts +126 -0
- package/telegram-plugin/tests/ipc-protocol.test.ts +218 -0
- package/telegram-plugin/tests/ipc-server-anonymous-refuse.test.ts +82 -0
- package/telegram-plugin/tests/ipc-server-client.test.ts +323 -0
- package/telegram-plugin/tests/ipc-server-race.test.ts +183 -0
- package/telegram-plugin/tests/ipc-server-validate-operator.test.ts +91 -0
- package/telegram-plugin/tests/ipc-server-validate-pty-partial.test.ts +64 -0
- package/telegram-plugin/tests/ipc-server-validate-update-placeholder.test.ts +77 -0
- package/telegram-plugin/tests/ipc-validator.test.ts +274 -0
- package/telegram-plugin/tests/issues-card.test.ts +495 -0
- package/telegram-plugin/tests/issues-watcher.test.ts +165 -0
- package/telegram-plugin/tests/model-unavailable.test.ts +303 -0
- package/telegram-plugin/tests/multi-turn-continuity.test.ts +159 -0
- package/telegram-plugin/tests/operator-events-history.test.ts +125 -0
- package/telegram-plugin/tests/operator-events-session-tail.test.ts +192 -0
- package/telegram-plugin/tests/operator-events.test.ts +331 -0
- package/telegram-plugin/tests/outbound-ordering.test.ts +293 -0
- package/telegram-plugin/tests/parse-mode-rotation.test.ts +164 -0
- package/telegram-plugin/tests/permission-rule.test.ts +121 -0
- package/telegram-plugin/tests/permission-title.test.ts +106 -0
- package/telegram-plugin/tests/pin-event-log.test.ts +124 -0
- package/telegram-plugin/tests/plugin-logger.test.ts +97 -0
- package/telegram-plugin/tests/poll-health.test.ts +86 -0
- package/telegram-plugin/tests/preamble-suppressor.test.ts +285 -0
- package/telegram-plugin/tests/progress-card-api-failure-during-deferred.test.ts +73 -0
- package/telegram-plugin/tests/progress-card-close-paths-converge.test.ts +272 -0
- package/telegram-plugin/tests/progress-card-cross-turn.test.ts +258 -0
- package/telegram-plugin/tests/progress-card-dispose-preservepending.test.ts +81 -0
- package/telegram-plugin/tests/progress-card-draft-flag.test.ts +80 -0
- package/telegram-plugin/tests/progress-card-driver-eviction.test.ts +215 -0
- package/telegram-plugin/tests/progress-card-driver-fleet-shadow.test.ts +123 -0
- package/telegram-plugin/tests/progress-card-driver-force-complete-parent-done.test.ts +76 -0
- package/telegram-plugin/tests/progress-card-edit-timestamps-budget.test.ts +62 -0
- package/telegram-plugin/tests/progress-card-memory-bounds.test.ts +84 -0
- package/telegram-plugin/tests/progress-card-pin-failure-paths.test.ts +139 -0
- package/telegram-plugin/tests/progress-card-pin-manager.test.ts +773 -0
- package/telegram-plugin/tests/progress-card-pin-race-fast-turn.test.ts +66 -0
- package/telegram-plugin/tests/progress-card-pin-sidecar-partial-write.test.ts +64 -0
- package/telegram-plugin/tests/progress-card-pin-watchdog.test.ts +190 -0
- package/telegram-plugin/tests/progress-card-sigterm-pin-flush.test.ts +146 -0
- package/telegram-plugin/tests/progress-update.test.ts +236 -0
- package/telegram-plugin/tests/protocol-fixtures.test.ts +59 -0
- package/telegram-plugin/tests/protocol-fixtures.ts +198 -0
- package/telegram-plugin/tests/pty-partial-handler.test.ts +326 -0
- package/telegram-plugin/tests/pty-tail-real-fixture.test.ts +114 -0
- package/telegram-plugin/tests/pty-tail-tmux-fragment.test.ts +71 -0
- package/telegram-plugin/tests/pty-tail.test.ts +525 -0
- package/telegram-plugin/tests/quota-cache.test.ts +187 -0
- package/telegram-plugin/tests/quota-check.test.ts +622 -0
- package/telegram-plugin/tests/races.test.ts +842 -0
- package/telegram-plugin/tests/real-gateway-f1-ladder-integrity.test.ts +123 -0
- package/telegram-plugin/tests/real-gateway-f2-instant-draft.test.ts +82 -0
- package/telegram-plugin/tests/real-gateway-f3-late-card.test.ts +114 -0
- package/telegram-plugin/tests/real-gateway-harness.ts +699 -0
- package/telegram-plugin/tests/real-gateway-i6-turn-flush-replay-dedup.test.ts +313 -0
- package/telegram-plugin/tests/real-gateway-ipc-lifecycle.test.ts +299 -0
- package/telegram-plugin/tests/real-gateway-spec.test.ts +487 -0
- package/telegram-plugin/tests/real-gateway.smoke.test.ts +101 -0
- package/telegram-plugin/tests/recent-outbound-dedup.test.ts +192 -0
- package/telegram-plugin/tests/registry-turns.test.ts +432 -0
- package/telegram-plugin/tests/reply-terminal-reaction.test.ts +149 -0
- package/telegram-plugin/tests/resolve-calling-subagent.test.ts +269 -0
- package/telegram-plugin/tests/restart-watchdog.test.ts +224 -0
- package/telegram-plugin/tests/retry-api-call.test.ts +287 -0
- package/telegram-plugin/tests/secret-detect-audit.test.ts +58 -0
- package/telegram-plugin/tests/secret-detect-fail-closed.test.ts +83 -0
- package/telegram-plugin/tests/secret-detect-gitleaks.test.ts +32 -0
- package/telegram-plugin/tests/secret-detect-oauth-code.test.ts +308 -0
- package/telegram-plugin/tests/secret-detect-pipeline.test.ts +123 -0
- package/telegram-plugin/tests/secret-detect-secretlint.test.ts +101 -0
- package/telegram-plugin/tests/secret-detect-staging.test.ts +45 -0
- package/telegram-plugin/tests/secret-detect-suppressor-no-silent-allow.test.ts +67 -0
- package/telegram-plugin/tests/secret-detect.test.ts +223 -0
- package/telegram-plugin/tests/secret-guard-pretool.test.ts +194 -0
- package/telegram-plugin/tests/send-typing-action-validation.test.ts +61 -0
- package/telegram-plugin/tests/session-tail-capped.test.ts +285 -0
- package/telegram-plugin/tests/session-tail.test.ts +524 -0
- package/telegram-plugin/tests/setup-flow.test.ts +510 -0
- package/telegram-plugin/tests/setup-state.test.ts +146 -0
- package/telegram-plugin/tests/silent-reply-guard.test.ts +122 -0
- package/telegram-plugin/tests/slot-banner-driver.e2e.test.ts +350 -0
- package/telegram-plugin/tests/slot-banner.test.ts +74 -0
- package/telegram-plugin/tests/snapshot-serializer.ts +79 -0
- package/telegram-plugin/tests/spawn-detached-cgroup-escape.test.ts +51 -0
- package/telegram-plugin/tests/status-accent.test.ts +186 -0
- package/telegram-plugin/tests/status-reactions-allowed-filter.test.ts +132 -0
- package/telegram-plugin/tests/status-reactions.test.ts +314 -0
- package/telegram-plugin/tests/steering.test.ts +282 -0
- package/telegram-plugin/tests/sticker-aliases.test.ts +232 -0
- package/telegram-plugin/tests/stream-controller-html-fallback.test.ts +127 -0
- package/telegram-plugin/tests/stream-controller.test.ts +262 -0
- package/telegram-plugin/tests/stream-reply-error-paths.test.ts +208 -0
- package/telegram-plugin/tests/stream-reply-handler.test.ts +1292 -0
- package/telegram-plugin/tests/streaming-e2e.test.ts +389 -0
- package/telegram-plugin/tests/streaming-metrics.test.ts +201 -0
- package/telegram-plugin/tests/streaming-orchestration.test.ts +756 -0
- package/telegram-plugin/tests/subagent-registry-bugs.test.ts +725 -0
- package/telegram-plugin/tests/subagent-tracker-hooks.test.ts +213 -0
- package/telegram-plugin/tests/subagent-watcher-parent-marker.test.ts +274 -0
- package/telegram-plugin/tests/subagent-watcher-stall-notification.test.ts +243 -0
- package/telegram-plugin/tests/subagent-watcher.test.ts +877 -0
- package/telegram-plugin/tests/subagents-schema-init-order.test.ts +109 -0
- package/telegram-plugin/tests/sync-chat-running-subagents.test.ts +116 -0
- package/telegram-plugin/tests/telegram-button-constraints.test.ts +194 -0
- package/telegram-plugin/tests/telegram-format.test.ts +1093 -0
- package/telegram-plugin/tests/telegraph.test.ts +246 -0
- package/telegram-plugin/tests/tool-labels.test.ts +383 -0
- package/telegram-plugin/tests/turn-active-marker.test.ts +195 -0
- package/telegram-plugin/tests/turn-end-regressions.test.ts +489 -0
- package/telegram-plugin/tests/turn-flush-card-takeover.test.ts +218 -0
- package/telegram-plugin/tests/turn-flush-dedup-controller.test.ts +144 -0
- package/telegram-plugin/tests/turn-flush-prose-recovery.test.ts +78 -0
- package/telegram-plugin/tests/turn-flush-safety.test.ts +189 -0
- package/telegram-plugin/tests/turn-signal-tracker.test.ts +107 -0
- package/telegram-plugin/tests/turns-writer.test.ts +323 -0
- package/telegram-plugin/tests/two-zone-bg-carry-full-lifecycle.test.ts +131 -0
- package/telegram-plugin/tests/two-zone-bg-detection.test.ts +120 -0
- package/telegram-plugin/tests/two-zone-bg-done-when-all-terminal.test.ts +114 -0
- package/telegram-plugin/tests/two-zone-bg-early-turn-end.test.ts +87 -0
- package/telegram-plugin/tests/two-zone-bg-survives-next-turn.test.ts +211 -0
- package/telegram-plugin/tests/two-zone-card-cap.test.ts +62 -0
- package/telegram-plugin/tests/two-zone-card-fleet-row.test.ts +101 -0
- package/telegram-plugin/tests/two-zone-card-header-phases.test.ts +68 -0
- package/telegram-plugin/tests/two-zone-card-html-balance.test.ts +110 -0
- package/telegram-plugin/tests/two-zone-card-lifecycle.test.ts +128 -0
- package/telegram-plugin/tests/two-zone-card-sanitise.test.ts +58 -0
- package/telegram-plugin/tests/two-zone-card-snapshot.test.ts +133 -0
- package/telegram-plugin/tests/two-zone-concurrent-turns-isolation.test.ts +155 -0
- package/telegram-plugin/tests/two-zone-phasefor-precedence.test.ts +117 -0
- package/telegram-plugin/tests/two-zone-snapshot-extras.test.ts +143 -0
- package/telegram-plugin/tests/two-zone-stuck-edit-throttle.test.ts +149 -0
- package/telegram-plugin/tests/two-zone-stuck-header-escalation.test.ts +101 -0
- package/telegram-plugin/tests/two-zone-stuck-per-member.test.ts +114 -0
- package/telegram-plugin/tests/two-zone-stuck-recovery.test.ts +105 -0
- package/telegram-plugin/tests/typing-wrap.test.ts +141 -0
- package/telegram-plugin/tests/unhandled-rejection-policy.test.ts +147 -0
- package/telegram-plugin/tests/update-factory-edited-and-reactions.test.ts +108 -0
- package/telegram-plugin/tests/update-factory.ts +305 -0
- package/telegram-plugin/tests/vault-grant-wizard.test.ts +84 -0
- package/telegram-plugin/tests/vault-grants-revoke.test.ts +265 -0
- package/telegram-plugin/tests/vault-subcommands.test.ts +234 -0
- package/telegram-plugin/tests/voice-transcribe.test.ts +196 -0
- package/telegram-plugin/tests/waiting-ux-harness.ts +381 -0
- package/telegram-plugin/tests/waiting-ux.e2e.test.ts +233 -0
- package/telegram-plugin/tests/welcome-text.test.ts +407 -0
- package/telegram-plugin/tool-error-filter.ts +89 -0
- package/telegram-plugin/tool-labels.ts +330 -0
- package/telegram-plugin/tool-names.ts +53 -0
- package/telegram-plugin/turn-flush-prose-recovery.ts +40 -0
- package/telegram-plugin/turn-flush-safety.ts +109 -0
- package/telegram-plugin/turn-signal-tracker.ts +79 -0
- package/telegram-plugin/two-zone-card.ts +249 -0
- package/telegram-plugin/typing-wrap.ts +92 -0
- package/telegram-plugin/voice-transcribe.ts +166 -0
- package/telegram-plugin/welcome-text.ts +359 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# Advanced Pipeline Patterns
|
|
2
|
+
|
|
3
|
+
Complex patterns for dynamic pipelines, matrix builds, monorepo setups, and multi-stage workflows.
|
|
4
|
+
|
|
5
|
+
## Dynamic Pipeline Generator (Python)
|
|
6
|
+
|
|
7
|
+
Generate pipeline YAML based on git diff. Useful for monorepos where only changed services need testing:
|
|
8
|
+
|
|
9
|
+
```python
|
|
10
|
+
#!/usr/bin/env python3
|
|
11
|
+
"""Generate Buildkite pipeline steps for changed services."""
|
|
12
|
+
import subprocess
|
|
13
|
+
import sys
|
|
14
|
+
import yaml
|
|
15
|
+
|
|
16
|
+
def changed_files():
|
|
17
|
+
result = subprocess.run(
|
|
18
|
+
["git", "diff", "--name-only", "HEAD~1"],
|
|
19
|
+
capture_output=True, text=True, check=True
|
|
20
|
+
)
|
|
21
|
+
return result.stdout.strip().split("\n")
|
|
22
|
+
|
|
23
|
+
def affected_services(files):
|
|
24
|
+
services = set()
|
|
25
|
+
for f in files:
|
|
26
|
+
parts = f.split("/")
|
|
27
|
+
if len(parts) > 1 and parts[0] == "services":
|
|
28
|
+
services.add(parts[1])
|
|
29
|
+
return sorted(services)
|
|
30
|
+
|
|
31
|
+
def generate_pipeline(services):
|
|
32
|
+
steps = []
|
|
33
|
+
for svc in services:
|
|
34
|
+
steps.append({
|
|
35
|
+
"label": f":test_tube: {svc}",
|
|
36
|
+
"command": f"cd services/{svc} && make test",
|
|
37
|
+
"key": f"test-{svc}",
|
|
38
|
+
"retry": {"automatic": [{"exit_status": -1, "limit": 2}]}
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
if steps:
|
|
42
|
+
steps.append("wait")
|
|
43
|
+
steps.append({
|
|
44
|
+
"label": ":white_check_mark: All services passed",
|
|
45
|
+
"command": "echo 'All tests passed'"
|
|
46
|
+
})
|
|
47
|
+
else:
|
|
48
|
+
steps.append({
|
|
49
|
+
"label": ":fast_forward: No services changed",
|
|
50
|
+
"command": "echo 'No service changes detected, skipping tests'"
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
return yaml.dump({"steps": steps}, default_flow_style=False)
|
|
54
|
+
|
|
55
|
+
if __name__ == "__main__":
|
|
56
|
+
files = changed_files()
|
|
57
|
+
services = affected_services(files)
|
|
58
|
+
print(generate_pipeline(services))
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Use in pipeline:
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
steps:
|
|
65
|
+
- label: ":pipeline: Generate"
|
|
66
|
+
command: ".buildkite/generate-pipeline.py | buildkite-agent pipeline upload"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Dynamic Pipeline Generator (Bash)
|
|
70
|
+
|
|
71
|
+
Simpler alternative without Python dependency:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
#!/bin/bash
|
|
75
|
+
set -euo pipefail
|
|
76
|
+
|
|
77
|
+
CHANGED=$(git diff --name-only HEAD~1)
|
|
78
|
+
STEPS=""
|
|
79
|
+
|
|
80
|
+
for dir in services/*/; do
|
|
81
|
+
svc=$(basename "$dir")
|
|
82
|
+
if echo "$CHANGED" | grep -q "^services/$svc/"; then
|
|
83
|
+
STEPS="${STEPS}
|
|
84
|
+
- label: ':test_tube: ${svc}'
|
|
85
|
+
command: 'cd services/${svc} && make test'
|
|
86
|
+
retry:
|
|
87
|
+
automatic:
|
|
88
|
+
- exit_status: -1
|
|
89
|
+
limit: 2"
|
|
90
|
+
fi
|
|
91
|
+
done
|
|
92
|
+
|
|
93
|
+
if [ -z "$STEPS" ]; then
|
|
94
|
+
echo "steps:
|
|
95
|
+
- label: ':fast_forward: Skip'
|
|
96
|
+
command: 'echo No changes detected'"
|
|
97
|
+
else
|
|
98
|
+
echo "steps:${STEPS}"
|
|
99
|
+
fi
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## if_changed Patterns
|
|
103
|
+
|
|
104
|
+
Skip steps when relevant files haven't changed. Available on Buildkite-hosted agents:
|
|
105
|
+
|
|
106
|
+
### Basic include pattern
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
steps:
|
|
110
|
+
- label: ":nodejs: Frontend tests"
|
|
111
|
+
command: "npm test"
|
|
112
|
+
if_changed:
|
|
113
|
+
- "src/frontend/**"
|
|
114
|
+
- "package.json"
|
|
115
|
+
- "package-lock.json"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Exclude pattern (run unless only docs changed)
|
|
119
|
+
|
|
120
|
+
```yaml
|
|
121
|
+
steps:
|
|
122
|
+
- label: ":hammer: Build"
|
|
123
|
+
command: "make build"
|
|
124
|
+
if_changed:
|
|
125
|
+
on_changes_excluding:
|
|
126
|
+
- "docs/**"
|
|
127
|
+
- "*.md"
|
|
128
|
+
- ".github/**"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Monorepo patterns
|
|
132
|
+
|
|
133
|
+
```yaml
|
|
134
|
+
steps:
|
|
135
|
+
- label: ":api: API tests"
|
|
136
|
+
command: "cd api && make test"
|
|
137
|
+
if_changed:
|
|
138
|
+
- "api/**"
|
|
139
|
+
- "shared/**" # Shared libraries affect all services
|
|
140
|
+
- "proto/**" # Protobuf changes affect API
|
|
141
|
+
|
|
142
|
+
- label: ":web: Web tests"
|
|
143
|
+
command: "cd web && make test"
|
|
144
|
+
if_changed:
|
|
145
|
+
- "web/**"
|
|
146
|
+
- "shared/**"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Advanced Matrix Builds
|
|
150
|
+
|
|
151
|
+
### Matrix with adjustments and skips
|
|
152
|
+
|
|
153
|
+
```yaml
|
|
154
|
+
steps:
|
|
155
|
+
- label: "Test {{matrix.lang}} {{matrix.version}}"
|
|
156
|
+
command: "scripts/test-{{matrix.lang}}.sh"
|
|
157
|
+
matrix:
|
|
158
|
+
setup:
|
|
159
|
+
lang:
|
|
160
|
+
- "ruby"
|
|
161
|
+
- "python"
|
|
162
|
+
- "node"
|
|
163
|
+
version:
|
|
164
|
+
- "latest"
|
|
165
|
+
- "previous"
|
|
166
|
+
adjustments:
|
|
167
|
+
- with:
|
|
168
|
+
lang: "ruby"
|
|
169
|
+
version: "previous"
|
|
170
|
+
soft_fail: true # Allow Ruby previous to fail
|
|
171
|
+
- with:
|
|
172
|
+
lang: "python"
|
|
173
|
+
version: "previous"
|
|
174
|
+
skip: "Python 3.11 EOL" # Skip entirely with reason
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Matrix with per-combination environment variables
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
steps:
|
|
181
|
+
- label: "Build {{matrix.arch}}"
|
|
182
|
+
command: "make build"
|
|
183
|
+
matrix:
|
|
184
|
+
setup:
|
|
185
|
+
arch:
|
|
186
|
+
- "amd64"
|
|
187
|
+
- "arm64"
|
|
188
|
+
adjustments:
|
|
189
|
+
- with:
|
|
190
|
+
arch: "arm64"
|
|
191
|
+
env:
|
|
192
|
+
CROSS_COMPILE: "aarch64-linux-gnu-"
|
|
193
|
+
CGO_ENABLED: "0"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Multi-Stage Pipeline (Build → Test → Deploy)
|
|
197
|
+
|
|
198
|
+
Complete pipeline with artifacts passed between stages:
|
|
199
|
+
|
|
200
|
+
```yaml
|
|
201
|
+
steps:
|
|
202
|
+
- group: ":hammer: Build"
|
|
203
|
+
steps:
|
|
204
|
+
- label: "Compile"
|
|
205
|
+
command: "make build"
|
|
206
|
+
artifact_paths: "dist/**/*"
|
|
207
|
+
key: "build"
|
|
208
|
+
|
|
209
|
+
- wait
|
|
210
|
+
|
|
211
|
+
- group: ":test_tube: Test"
|
|
212
|
+
steps:
|
|
213
|
+
- label: "Unit Tests"
|
|
214
|
+
command: |
|
|
215
|
+
buildkite-agent artifact download "dist/*" .
|
|
216
|
+
make test-unit
|
|
217
|
+
depends_on: "build"
|
|
218
|
+
artifact_paths: "coverage/**/*"
|
|
219
|
+
|
|
220
|
+
- label: "Integration Tests"
|
|
221
|
+
command: |
|
|
222
|
+
buildkite-agent artifact download "dist/*" .
|
|
223
|
+
make test-integration
|
|
224
|
+
depends_on: "build"
|
|
225
|
+
|
|
226
|
+
- wait
|
|
227
|
+
|
|
228
|
+
- block: ":shipit: Deploy to production?"
|
|
229
|
+
branches: "main"
|
|
230
|
+
|
|
231
|
+
- label: ":rocket: Deploy"
|
|
232
|
+
command: |
|
|
233
|
+
buildkite-agent artifact download "dist/*" .
|
|
234
|
+
scripts/deploy.sh
|
|
235
|
+
branches: "main"
|
|
236
|
+
concurrency: 1
|
|
237
|
+
concurrency_group: "deploy/production"
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Plugin Composition
|
|
241
|
+
|
|
242
|
+
Combine multiple plugins in a single step:
|
|
243
|
+
|
|
244
|
+
```yaml
|
|
245
|
+
steps:
|
|
246
|
+
- label: ":docker: Build and Test"
|
|
247
|
+
plugins:
|
|
248
|
+
- docker-login#v2.1.0:
|
|
249
|
+
username: myuser
|
|
250
|
+
password-env: DOCKER_PASSWORD
|
|
251
|
+
- docker-compose#v5.5.0:
|
|
252
|
+
build: app
|
|
253
|
+
image-repository: index.docker.io/org/repo
|
|
254
|
+
cache-from:
|
|
255
|
+
- "app:index.docker.io/org/repo:latest"
|
|
256
|
+
- test-collector#v2.0.0:
|
|
257
|
+
files: "tmp/junit-*.xml"
|
|
258
|
+
format: "junit"
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Plugins execute in order: login first, then compose build, then test collection.
|
|
262
|
+
|
|
263
|
+
## Notification Routing
|
|
264
|
+
|
|
265
|
+
Route notifications to different channels based on branch or build state:
|
|
266
|
+
|
|
267
|
+
```yaml
|
|
268
|
+
notify:
|
|
269
|
+
- slack:
|
|
270
|
+
channels:
|
|
271
|
+
- "#deploys"
|
|
272
|
+
message: ":rocket: Deploy build {{build.number}} {{build.state}}"
|
|
273
|
+
if: build.branch == "main"
|
|
274
|
+
|
|
275
|
+
- slack:
|
|
276
|
+
channels:
|
|
277
|
+
- "#ci-alerts"
|
|
278
|
+
message: ":rotating_light: Build {{build.number}} failed on {{build.branch}}"
|
|
279
|
+
if: build.state == "failed" && build.branch != "main"
|
|
280
|
+
|
|
281
|
+
- email: "oncall@example.com"
|
|
282
|
+
if: build.state == "failed" && build.branch == "main"
|
|
283
|
+
|
|
284
|
+
steps:
|
|
285
|
+
- command: "make test"
|
|
286
|
+
```
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Retry and Error Codes Reference
|
|
2
|
+
|
|
3
|
+
Comprehensive guide to Buildkite exit codes, retry strategies, and failure handling.
|
|
4
|
+
|
|
5
|
+
## Exit Code Table
|
|
6
|
+
|
|
7
|
+
| Exit code | Meaning | Retryable | Recommendation |
|
|
8
|
+
|-----------|---------|-----------|----------------|
|
|
9
|
+
| `0` | Success | — | No action needed |
|
|
10
|
+
| `1` | General error (test failure, script error) | Usually no | Fix the code; don't auto-retry genuine failures |
|
|
11
|
+
| `-1` | Agent lost connection | Yes | Agent crashed, network drop, or OOM kill. Always retry. |
|
|
12
|
+
| `2` | Misuse of shell command | No | Fix the script syntax |
|
|
13
|
+
| `125` | Docker daemon error | Sometimes | Docker pull failed or daemon unavailable. Retry once. |
|
|
14
|
+
| `126` | Command not executable | No | Fix file permissions: `chmod +x script.sh` |
|
|
15
|
+
| `127` | Command not found | No | Install missing binary or fix PATH |
|
|
16
|
+
| `128` | Invalid exit argument | No | Script called `exit` with invalid value |
|
|
17
|
+
| `137` | SIGKILL (OOM) | Sometimes | Container hit memory limit. Increase memory or optimize. |
|
|
18
|
+
| `143` | SIGTERM | Yes | Spot instance termination, agent shutdown. Always retry. |
|
|
19
|
+
| `255` | SSH failure or timeout | Yes | Network timeout, SSH connection lost. Retry with limit. |
|
|
20
|
+
|
|
21
|
+
## Retry Strategy Recommendations
|
|
22
|
+
|
|
23
|
+
### Infrastructure failures (always retry)
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
retry:
|
|
27
|
+
automatic:
|
|
28
|
+
- exit_status: -1 # Agent lost
|
|
29
|
+
limit: 2
|
|
30
|
+
- exit_status: 143 # Spot termination
|
|
31
|
+
limit: 2
|
|
32
|
+
- exit_status: 255 # SSH/timeout
|
|
33
|
+
limit: 2
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Network-sensitive steps (retry with backoff)
|
|
37
|
+
|
|
38
|
+
For steps that fetch external dependencies (npm install, docker pull, apt-get):
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
retry:
|
|
42
|
+
automatic:
|
|
43
|
+
- exit_status: -1
|
|
44
|
+
limit: 2
|
|
45
|
+
- exit_status: 125 # Docker daemon
|
|
46
|
+
limit: 1
|
|
47
|
+
- exit_status: "*" # Catch network errors (ECONNRESET, ETIMEDOUT)
|
|
48
|
+
limit: 1
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Deploy steps (no auto-retry)
|
|
52
|
+
|
|
53
|
+
Deployment steps should not auto-retry to prevent double-deploys:
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
retry:
|
|
57
|
+
automatic: false
|
|
58
|
+
manual:
|
|
59
|
+
allowed: true
|
|
60
|
+
reason: "Review logs before retrying a deployment"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Test steps (targeted retry)
|
|
64
|
+
|
|
65
|
+
Retry only infrastructure failures, not test failures:
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
retry:
|
|
69
|
+
automatic:
|
|
70
|
+
- exit_status: -1
|
|
71
|
+
limit: 2
|
|
72
|
+
- exit_status: 143
|
|
73
|
+
limit: 2
|
|
74
|
+
manual:
|
|
75
|
+
allowed: true
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Do not use `exit_status: "*"` for test steps — it masks real test failures and wastes compute.
|
|
79
|
+
|
|
80
|
+
## soft_fail vs retry
|
|
81
|
+
|
|
82
|
+
| Mechanism | Purpose | Build status |
|
|
83
|
+
|-----------|---------|-------------|
|
|
84
|
+
| `retry.automatic` | Re-run the step hoping for a different result | Passes if retry succeeds |
|
|
85
|
+
| `retry.manual` | Allow humans to re-run from the UI | Stays failed until retried |
|
|
86
|
+
| `soft_fail` | Acknowledge failure without blocking the build | Build passes regardless |
|
|
87
|
+
| `soft_fail` with `exit_status` | Treat specific codes as soft failure | Only matched codes are soft |
|
|
88
|
+
|
|
89
|
+
### soft_fail examples
|
|
90
|
+
|
|
91
|
+
```yaml
|
|
92
|
+
# Treat any failure as soft (non-blocking)
|
|
93
|
+
- label: "Lint"
|
|
94
|
+
command: "make lint"
|
|
95
|
+
soft_fail: true
|
|
96
|
+
|
|
97
|
+
# Only treat exit code 1 as soft (other codes still hard-fail)
|
|
98
|
+
- label: "Optional integration test"
|
|
99
|
+
command: "make test-integration"
|
|
100
|
+
soft_fail:
|
|
101
|
+
- exit_status: 1
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Retry Limits
|
|
105
|
+
|
|
106
|
+
| `limit` value | Meaning |
|
|
107
|
+
|---------------|---------|
|
|
108
|
+
| `1` | Retry once (2 total attempts) |
|
|
109
|
+
| `2` | Retry twice (3 total attempts) |
|
|
110
|
+
| `10` | Maximum allowed value |
|
|
111
|
+
|
|
112
|
+
Keep limits low. High retry counts on genuine failures waste agent time and delay feedback. Recommended: `limit: 2` for infrastructure, `limit: 1` for everything else.
|
|
113
|
+
|
|
114
|
+
## Combining Retry Rules
|
|
115
|
+
|
|
116
|
+
Multiple automatic retry rules are evaluated in order. The first matching rule applies:
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
retry:
|
|
120
|
+
automatic:
|
|
121
|
+
- exit_status: -1 # Agent lost → retry 2x
|
|
122
|
+
limit: 2
|
|
123
|
+
- exit_status: 143 # Spot termination → retry 2x
|
|
124
|
+
limit: 2
|
|
125
|
+
- exit_status: 255 # SSH/timeout → retry 1x
|
|
126
|
+
limit: 1
|
|
127
|
+
- exit_status: "*" # Anything else → retry 1x
|
|
128
|
+
limit: 1
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Place specific codes before the wildcard `"*"`. The wildcard catches all non-zero exits not matched by earlier rules.
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# Step Types Reference
|
|
2
|
+
|
|
3
|
+
Detailed attribute tables for all Buildkite pipeline step types.
|
|
4
|
+
|
|
5
|
+
## Command Step
|
|
6
|
+
|
|
7
|
+
The primary step type. Runs one or more shell commands on an agent.
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
steps:
|
|
11
|
+
- label: ":hammer: Build"
|
|
12
|
+
command: "make build"
|
|
13
|
+
# OR multiple commands:
|
|
14
|
+
commands:
|
|
15
|
+
- "npm ci"
|
|
16
|
+
- "npm test"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Command step attributes
|
|
20
|
+
|
|
21
|
+
| Attribute | Default | Description |
|
|
22
|
+
|-----------|---------|-------------|
|
|
23
|
+
| `label` | — | Display label in Buildkite UI (supports emoji `:emoji:`) |
|
|
24
|
+
| `command` / `commands` | — | Shell command(s) to execute |
|
|
25
|
+
| `key` | — | Unique identifier for `depends_on` references |
|
|
26
|
+
| `env` | `{}` | Environment variables for this step |
|
|
27
|
+
| `agents` | `{}` | Agent targeting: `queue`, tags |
|
|
28
|
+
| `artifact_paths` | — | Glob pattern(s) for files to upload after step completes |
|
|
29
|
+
| `branches` | all | Branch filter (e.g., `"main"`, `"release/*"`) |
|
|
30
|
+
| `parallelism` | `1` | Number of parallel jobs to create |
|
|
31
|
+
| `timeout_in_minutes` | pipeline default | Max execution time before kill |
|
|
32
|
+
| `retry` | — | Automatic and manual retry rules (see retry reference) |
|
|
33
|
+
| `depends_on` | — | Step key(s) that must pass first |
|
|
34
|
+
| `if` | — | Boolean expression to conditionally run step |
|
|
35
|
+
| `skip` | `false` | Skip reason string, or `true` to skip silently |
|
|
36
|
+
| `soft_fail` | `false` | Treat failure as neutral (build continues green) |
|
|
37
|
+
| `cancel_on_build_failing` | `false` | Cancel this job if another job fails the build |
|
|
38
|
+
| `concurrency` | unlimited | Max parallel jobs in `concurrency_group` |
|
|
39
|
+
| `concurrency_group` | — | Shared concurrency namespace |
|
|
40
|
+
| `concurrency_method` | `ordered` | `ordered` (FIFO) or `eager` |
|
|
41
|
+
| `priority` | `0` | Scheduling priority (higher = sooner) |
|
|
42
|
+
| `plugins` | — | Plugin configurations |
|
|
43
|
+
| `notify` | — | Step-level notifications |
|
|
44
|
+
| `matrix` | — | Matrix build configuration |
|
|
45
|
+
| `cache` | — | Built-in cache (hosted agents only) |
|
|
46
|
+
|
|
47
|
+
## Wait Step
|
|
48
|
+
|
|
49
|
+
Blocks execution until all preceding steps complete successfully.
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
# Simple form
|
|
53
|
+
- wait
|
|
54
|
+
|
|
55
|
+
# Explicit null form (equivalent)
|
|
56
|
+
- wait: ~
|
|
57
|
+
|
|
58
|
+
# Continue on failure — downstream steps run even if prior steps failed
|
|
59
|
+
- wait:
|
|
60
|
+
continue_on_failure: true
|
|
61
|
+
|
|
62
|
+
# Conditional wait
|
|
63
|
+
- wait:
|
|
64
|
+
if: build.source == "schedule"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Wait step attributes
|
|
68
|
+
|
|
69
|
+
| Attribute | Default | Description |
|
|
70
|
+
|-----------|---------|-------------|
|
|
71
|
+
| `continue_on_failure` | `false` | Proceed even if prior steps failed |
|
|
72
|
+
| `if` | — | Conditional expression |
|
|
73
|
+
|
|
74
|
+
## Block Step
|
|
75
|
+
|
|
76
|
+
Pauses the build for manual approval. The build remains in a "blocked" state until unblocked via UI or API.
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
# Simple form
|
|
80
|
+
- block: ":shipit: Deploy to production"
|
|
81
|
+
|
|
82
|
+
# With branch restriction
|
|
83
|
+
- block: ":shipit: Release"
|
|
84
|
+
branches: "main"
|
|
85
|
+
|
|
86
|
+
# With select field
|
|
87
|
+
- block: "Release"
|
|
88
|
+
fields:
|
|
89
|
+
- select: "Environment"
|
|
90
|
+
key: "deploy-env"
|
|
91
|
+
options:
|
|
92
|
+
- label: "Staging"
|
|
93
|
+
value: "staging"
|
|
94
|
+
- label: "Production"
|
|
95
|
+
value: "production"
|
|
96
|
+
required: true
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Block step attributes
|
|
100
|
+
|
|
101
|
+
| Attribute | Default | Description |
|
|
102
|
+
|-----------|---------|-------------|
|
|
103
|
+
| `block` | — | Label displayed on the block step |
|
|
104
|
+
| `key` | — | Unique identifier for `depends_on` |
|
|
105
|
+
| `prompt` | — | Instructional text shown to the unblocker |
|
|
106
|
+
| `fields` | — | Input fields (text or select) |
|
|
107
|
+
| `branches` | all | Branch filter |
|
|
108
|
+
| `if` | — | Conditional expression |
|
|
109
|
+
| `depends_on` | — | Step key(s) that must pass first |
|
|
110
|
+
| `allow_dependency_failure` | `false` | Show block even if dependencies failed |
|
|
111
|
+
|
|
112
|
+
## Trigger Step
|
|
113
|
+
|
|
114
|
+
Creates a build on another pipeline.
|
|
115
|
+
|
|
116
|
+
```yaml
|
|
117
|
+
steps:
|
|
118
|
+
- trigger: "deploy-pipeline"
|
|
119
|
+
label: ":rocket: Trigger deploy"
|
|
120
|
+
build:
|
|
121
|
+
branch: "main"
|
|
122
|
+
commit: "HEAD"
|
|
123
|
+
message: "Triggered from upstream"
|
|
124
|
+
env:
|
|
125
|
+
DEPLOY_VERSION: "1.2.3"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Trigger step attributes
|
|
129
|
+
|
|
130
|
+
| Attribute | Default | Description |
|
|
131
|
+
|-----------|---------|-------------|
|
|
132
|
+
| `trigger` | — | Pipeline slug to trigger |
|
|
133
|
+
| `label` | — | Display label |
|
|
134
|
+
| `build` | `{}` | Build parameters: `branch`, `commit`, `message`, `env`, `meta_data` |
|
|
135
|
+
| `async` | `false` | Don't wait for triggered build to complete |
|
|
136
|
+
| `branches` | all | Branch filter |
|
|
137
|
+
| `if` | — | Conditional expression |
|
|
138
|
+
| `depends_on` | — | Step key(s) that must pass first |
|
|
139
|
+
| `soft_fail` | `false` | Treat triggered build failure as neutral |
|
|
140
|
+
| `skip` | `false` | Skip reason or boolean |
|
|
141
|
+
|
|
142
|
+
## Group Step
|
|
143
|
+
|
|
144
|
+
Visually groups steps in the Buildkite UI. Collapsible in the build view.
|
|
145
|
+
|
|
146
|
+
```yaml
|
|
147
|
+
steps:
|
|
148
|
+
- group: ":test_tube: Tests"
|
|
149
|
+
steps:
|
|
150
|
+
- label: "Unit"
|
|
151
|
+
command: "make test-unit"
|
|
152
|
+
- label: "Integration"
|
|
153
|
+
command: "make test-integration"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Group step attributes
|
|
157
|
+
|
|
158
|
+
| Attribute | Default | Description |
|
|
159
|
+
|-----------|---------|-------------|
|
|
160
|
+
| `group` | — | Group label |
|
|
161
|
+
| `key` | — | Unique identifier for `depends_on` |
|
|
162
|
+
| `steps` | — | Nested steps (any type except group) |
|
|
163
|
+
| `if` | — | Conditional expression (prevents all nested steps + plugins) |
|
|
164
|
+
| `depends_on` | — | Step key(s) that must pass first |
|
|
165
|
+
| `notify` | — | Group-level notifications |
|
|
166
|
+
| `allow_dependency_failure` | `false` | Run group even if dependencies failed |
|
|
167
|
+
|
|
168
|
+
## Input Step
|
|
169
|
+
|
|
170
|
+
Collects structured input from a user before the build continues. Similar to block but designed for data collection rather than approval gates.
|
|
171
|
+
|
|
172
|
+
```yaml
|
|
173
|
+
steps:
|
|
174
|
+
- input: "Deployment Configuration"
|
|
175
|
+
fields:
|
|
176
|
+
- text: "Release tag"
|
|
177
|
+
key: "release-tag"
|
|
178
|
+
hint: "The git tag to deploy (e.g., v1.2.3)"
|
|
179
|
+
required: true
|
|
180
|
+
- select: "Region"
|
|
181
|
+
key: "deploy-region"
|
|
182
|
+
multiple: true
|
|
183
|
+
options:
|
|
184
|
+
- label: "US East"
|
|
185
|
+
value: "us-east-1"
|
|
186
|
+
- label: "EU West"
|
|
187
|
+
value: "eu-west-1"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Access collected values in subsequent steps with `build.env("release-tag")` in conditionals or via the Buildkite meta-data API.
|
|
191
|
+
|
|
192
|
+
### Input step attributes
|
|
193
|
+
|
|
194
|
+
| Attribute | Default | Description |
|
|
195
|
+
|-----------|---------|-------------|
|
|
196
|
+
| `input` | — | Label displayed on the input step |
|
|
197
|
+
| `key` | — | Unique identifier for `depends_on` |
|
|
198
|
+
| `prompt` | — | Instructional text |
|
|
199
|
+
| `fields` | — | Input fields (text or select) |
|
|
200
|
+
| `branches` | all | Branch filter |
|
|
201
|
+
| `if` | — | Conditional expression |
|
|
202
|
+
| `depends_on` | — | Step key(s) that must pass first |
|
|
203
|
+
|
|
204
|
+
### Field types
|
|
205
|
+
|
|
206
|
+
**Text field:**
|
|
207
|
+
|
|
208
|
+
| Attribute | Default | Description |
|
|
209
|
+
|-----------|---------|-------------|
|
|
210
|
+
| `text` | — | Field label |
|
|
211
|
+
| `key` | — | Meta-data key to store value |
|
|
212
|
+
| `hint` | — | Helper text below the field |
|
|
213
|
+
| `required` | `true` | Require a value before continuing |
|
|
214
|
+
| `default` | — | Pre-filled value |
|
|
215
|
+
|
|
216
|
+
**Select field:**
|
|
217
|
+
|
|
218
|
+
| Attribute | Default | Description |
|
|
219
|
+
|-----------|---------|-------------|
|
|
220
|
+
| `select` | — | Field label |
|
|
221
|
+
| `key` | — | Meta-data key to store value |
|
|
222
|
+
| `options` | — | Array of `{label, value}` choices |
|
|
223
|
+
| `multiple` | `false` | Allow selecting multiple options |
|
|
224
|
+
| `required` | `true` | Require a selection before continuing |
|
|
225
|
+
| `default` | — | Pre-selected value |
|