@bastani/atomic 0.6.8-0 → 0.7.0-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/bin/atomic +65 -0
- package/package.json +17 -82
- package/postinstall.mjs +47 -0
- package/.agents/skills/ado-commit/SKILL.md +0 -94
- package/.agents/skills/ado-create-pr/SKILL.md +0 -211
- package/.agents/skills/advanced-evaluation/SKILL.md +0 -404
- package/.agents/skills/advanced-evaluation/references/bias-mitigation.md +0 -288
- package/.agents/skills/advanced-evaluation/references/evaluation-pipeline.md +0 -43
- package/.agents/skills/advanced-evaluation/references/implementation-patterns.md +0 -315
- package/.agents/skills/advanced-evaluation/references/metrics-guide.md +0 -331
- package/.agents/skills/advanced-evaluation/scripts/evaluation_example.py +0 -392
- package/.agents/skills/ast-grep/SKILL.md +0 -325
- package/.agents/skills/ast-grep/references/rule_reference.md +0 -297
- package/.agents/skills/bdi-mental-states/SKILL.md +0 -313
- package/.agents/skills/bdi-mental-states/references/bdi-ontology-core.md +0 -207
- package/.agents/skills/bdi-mental-states/references/framework-integration.md +0 -582
- package/.agents/skills/bdi-mental-states/references/rdf-examples.md +0 -315
- package/.agents/skills/bdi-mental-states/references/sparql-competency.md +0 -420
- package/.agents/skills/bun/SKILL.md +0 -233
- package/.agents/skills/context-compression/SKILL.md +0 -274
- package/.agents/skills/context-compression/references/evaluation-framework.md +0 -213
- package/.agents/skills/context-compression/scripts/compression_evaluator.py +0 -862
- package/.agents/skills/context-compression/tests/test_compression_evaluator.py +0 -56
- package/.agents/skills/context-degradation/SKILL.md +0 -208
- package/.agents/skills/context-degradation/references/patterns.md +0 -314
- package/.agents/skills/context-degradation/scripts/degradation_detector.py +0 -614
- package/.agents/skills/context-fundamentals/SKILL.md +0 -203
- package/.agents/skills/context-fundamentals/references/context-components.md +0 -283
- package/.agents/skills/context-fundamentals/scripts/context_manager.py +0 -533
- package/.agents/skills/context-optimization/SKILL.md +0 -197
- package/.agents/skills/context-optimization/references/optimization_techniques.md +0 -272
- package/.agents/skills/context-optimization/scripts/compaction.py +0 -562
- package/.agents/skills/create-spec/SKILL.md +0 -249
- package/.agents/skills/docx/LICENSE.txt +0 -30
- package/.agents/skills/docx/SKILL.md +0 -592
- package/.agents/skills/docx/scripts/__init__.py +0 -1
- package/.agents/skills/docx/scripts/accept_changes.py +0 -135
- package/.agents/skills/docx/scripts/comment.py +0 -318
- package/.agents/skills/docx/scripts/office/helpers/__init__.py +0 -0
- package/.agents/skills/docx/scripts/office/helpers/merge_runs.py +0 -199
- package/.agents/skills/docx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/.agents/skills/docx/scripts/office/pack.py +0 -159
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/.agents/skills/docx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/.agents/skills/docx/scripts/office/soffice.py +0 -183
- package/.agents/skills/docx/scripts/office/unpack.py +0 -132
- package/.agents/skills/docx/scripts/office/validate.py +0 -111
- package/.agents/skills/docx/scripts/office/validators/__init__.py +0 -15
- package/.agents/skills/docx/scripts/office/validators/base.py +0 -847
- package/.agents/skills/docx/scripts/office/validators/docx.py +0 -446
- package/.agents/skills/docx/scripts/office/validators/pptx.py +0 -275
- package/.agents/skills/docx/scripts/office/validators/redlining.py +0 -247
- package/.agents/skills/docx/scripts/templates/comments.xml +0 -3
- package/.agents/skills/docx/scripts/templates/commentsExtended.xml +0 -3
- package/.agents/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/.agents/skills/docx/scripts/templates/commentsIds.xml +0 -3
- package/.agents/skills/docx/scripts/templates/people.xml +0 -3
- package/.agents/skills/evaluation/SKILL.md +0 -253
- package/.agents/skills/evaluation/references/metrics.md +0 -339
- package/.agents/skills/evaluation/scripts/evaluator.py +0 -627
- package/.agents/skills/explain-code/SKILL.md +0 -232
- package/.agents/skills/filesystem-context/SKILL.md +0 -289
- package/.agents/skills/filesystem-context/references/implementation-patterns.md +0 -549
- package/.agents/skills/filesystem-context/scripts/filesystem_context.py +0 -425
- package/.agents/skills/find-skills/SKILL.md +0 -144
- package/.agents/skills/gh-commit/SKILL.md +0 -245
- package/.agents/skills/gh-create-pr/SKILL.md +0 -95
- package/.agents/skills/hosted-agents/SKILL.md +0 -262
- package/.agents/skills/hosted-agents/references/infrastructure-patterns.md +0 -700
- package/.agents/skills/hosted-agents/scripts/sandbox_manager.py +0 -590
- package/.agents/skills/impeccable/SKILL.md +0 -178
- package/.agents/skills/impeccable/agents/openai.yaml +0 -4
- package/.agents/skills/impeccable/reference/adapt.md +0 -190
- package/.agents/skills/impeccable/reference/animate.md +0 -175
- package/.agents/skills/impeccable/reference/audit.md +0 -134
- package/.agents/skills/impeccable/reference/bolder.md +0 -113
- package/.agents/skills/impeccable/reference/brand.md +0 -114
- package/.agents/skills/impeccable/reference/clarify.md +0 -174
- package/.agents/skills/impeccable/reference/cognitive-load.md +0 -106
- package/.agents/skills/impeccable/reference/color-and-contrast.md +0 -105
- package/.agents/skills/impeccable/reference/colorize.md +0 -154
- package/.agents/skills/impeccable/reference/craft.md +0 -193
- package/.agents/skills/impeccable/reference/critique.md +0 -213
- package/.agents/skills/impeccable/reference/delight.md +0 -302
- package/.agents/skills/impeccable/reference/distill.md +0 -111
- package/.agents/skills/impeccable/reference/document.md +0 -427
- package/.agents/skills/impeccable/reference/extract.md +0 -70
- package/.agents/skills/impeccable/reference/harden.md +0 -347
- package/.agents/skills/impeccable/reference/heuristics-scoring.md +0 -234
- package/.agents/skills/impeccable/reference/interaction-design.md +0 -195
- package/.agents/skills/impeccable/reference/layout.md +0 -141
- package/.agents/skills/impeccable/reference/live.md +0 -594
- package/.agents/skills/impeccable/reference/motion-design.md +0 -109
- package/.agents/skills/impeccable/reference/onboard.md +0 -234
- package/.agents/skills/impeccable/reference/optimize.md +0 -258
- package/.agents/skills/impeccable/reference/overdrive.md +0 -130
- package/.agents/skills/impeccable/reference/personas.md +0 -178
- package/.agents/skills/impeccable/reference/polish.md +0 -232
- package/.agents/skills/impeccable/reference/product.md +0 -62
- package/.agents/skills/impeccable/reference/quieter.md +0 -99
- package/.agents/skills/impeccable/reference/responsive-design.md +0 -114
- package/.agents/skills/impeccable/reference/shape.md +0 -151
- package/.agents/skills/impeccable/reference/spatial-design.md +0 -100
- package/.agents/skills/impeccable/reference/teach.md +0 -156
- package/.agents/skills/impeccable/reference/typeset.md +0 -124
- package/.agents/skills/impeccable/reference/typography.md +0 -159
- package/.agents/skills/impeccable/reference/ux-writing.md +0 -107
- package/.agents/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
- package/.agents/skills/impeccable/scripts/command-metadata.json +0 -94
- package/.agents/skills/impeccable/scripts/design-parser.mjs +0 -820
- package/.agents/skills/impeccable/scripts/detect-csp.mjs +0 -198
- package/.agents/skills/impeccable/scripts/is-generated.mjs +0 -69
- package/.agents/skills/impeccable/scripts/live-accept.mjs +0 -595
- package/.agents/skills/impeccable/scripts/live-browser.js +0 -4781
- package/.agents/skills/impeccable/scripts/live-inject.mjs +0 -445
- package/.agents/skills/impeccable/scripts/live-poll.mjs +0 -186
- package/.agents/skills/impeccable/scripts/live-server.mjs +0 -694
- package/.agents/skills/impeccable/scripts/live-wrap.mjs +0 -571
- package/.agents/skills/impeccable/scripts/live.mjs +0 -247
- package/.agents/skills/impeccable/scripts/load-context.mjs +0 -141
- package/.agents/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
- package/.agents/skills/impeccable/scripts/pin.mjs +0 -214
- package/.agents/skills/init/SKILL.md +0 -140
- package/.agents/skills/liteparse/SKILL.md +0 -223
- package/.agents/skills/memory-systems/SKILL.md +0 -221
- package/.agents/skills/memory-systems/references/implementation.md +0 -551
- package/.agents/skills/memory-systems/scripts/memory_store.py +0 -616
- package/.agents/skills/multi-agent-patterns/SKILL.md +0 -259
- package/.agents/skills/multi-agent-patterns/references/frameworks.md +0 -433
- package/.agents/skills/multi-agent-patterns/scripts/coordination.py +0 -613
- package/.agents/skills/opentui/SKILL.md +0 -202
- package/.agents/skills/opentui/references/animation/REFERENCE.md +0 -431
- package/.agents/skills/opentui/references/components/REFERENCE.md +0 -144
- package/.agents/skills/opentui/references/components/code-diff.md +0 -672
- package/.agents/skills/opentui/references/components/containers.md +0 -417
- package/.agents/skills/opentui/references/components/inputs.md +0 -531
- package/.agents/skills/opentui/references/components/text-display.md +0 -386
- package/.agents/skills/opentui/references/core/REFERENCE.md +0 -145
- package/.agents/skills/opentui/references/core/api.md +0 -543
- package/.agents/skills/opentui/references/core/configuration.md +0 -168
- package/.agents/skills/opentui/references/core/gotchas.md +0 -393
- package/.agents/skills/opentui/references/core/patterns.md +0 -449
- package/.agents/skills/opentui/references/keyboard/REFERENCE.md +0 -617
- package/.agents/skills/opentui/references/layout/REFERENCE.md +0 -337
- package/.agents/skills/opentui/references/layout/patterns.md +0 -444
- package/.agents/skills/opentui/references/react/REFERENCE.md +0 -174
- package/.agents/skills/opentui/references/react/api.md +0 -436
- package/.agents/skills/opentui/references/react/configuration.md +0 -302
- package/.agents/skills/opentui/references/react/gotchas.md +0 -443
- package/.agents/skills/opentui/references/react/patterns.md +0 -501
- package/.agents/skills/opentui/references/solid/REFERENCE.md +0 -201
- package/.agents/skills/opentui/references/solid/api.md +0 -564
- package/.agents/skills/opentui/references/solid/configuration.md +0 -316
- package/.agents/skills/opentui/references/solid/gotchas.md +0 -427
- package/.agents/skills/opentui/references/solid/patterns.md +0 -560
- package/.agents/skills/opentui/references/testing/REFERENCE.md +0 -614
- package/.agents/skills/pdf/LICENSE.txt +0 -30
- package/.agents/skills/pdf/SKILL.md +0 -316
- package/.agents/skills/pdf/forms.md +0 -294
- package/.agents/skills/pdf/reference.md +0 -612
- package/.agents/skills/pdf/scripts/check_bounding_boxes.py +0 -65
- package/.agents/skills/pdf/scripts/check_fillable_fields.py +0 -11
- package/.agents/skills/pdf/scripts/convert_pdf_to_images.py +0 -33
- package/.agents/skills/pdf/scripts/create_validation_image.py +0 -37
- package/.agents/skills/pdf/scripts/extract_form_field_info.py +0 -122
- package/.agents/skills/pdf/scripts/extract_form_structure.py +0 -115
- package/.agents/skills/pdf/scripts/fill_fillable_fields.py +0 -98
- package/.agents/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
- package/.agents/skills/playwright-cli/SKILL.md +0 -390
- package/.agents/skills/playwright-cli/references/element-attributes.md +0 -23
- package/.agents/skills/playwright-cli/references/playwright-tests.md +0 -39
- package/.agents/skills/playwright-cli/references/request-mocking.md +0 -87
- package/.agents/skills/playwright-cli/references/running-code.md +0 -241
- package/.agents/skills/playwright-cli/references/session-management.md +0 -225
- package/.agents/skills/playwright-cli/references/spec-driven-testing.md +0 -305
- package/.agents/skills/playwright-cli/references/storage-state.md +0 -275
- package/.agents/skills/playwright-cli/references/test-generation.md +0 -134
- package/.agents/skills/playwright-cli/references/tracing.md +0 -139
- package/.agents/skills/playwright-cli/references/video-recording.md +0 -143
- package/.agents/skills/pptx/LICENSE.txt +0 -30
- package/.agents/skills/pptx/SKILL.md +0 -234
- package/.agents/skills/pptx/editing.md +0 -205
- package/.agents/skills/pptx/pptxgenjs.md +0 -420
- package/.agents/skills/pptx/scripts/__init__.py +0 -0
- package/.agents/skills/pptx/scripts/add_slide.py +0 -195
- package/.agents/skills/pptx/scripts/clean.py +0 -286
- package/.agents/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- package/.agents/skills/pptx/scripts/office/helpers/merge_runs.py +0 -199
- package/.agents/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/.agents/skills/pptx/scripts/office/pack.py +0 -159
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/.agents/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/.agents/skills/pptx/scripts/office/soffice.py +0 -183
- package/.agents/skills/pptx/scripts/office/unpack.py +0 -132
- package/.agents/skills/pptx/scripts/office/validate.py +0 -111
- package/.agents/skills/pptx/scripts/office/validators/__init__.py +0 -15
- package/.agents/skills/pptx/scripts/office/validators/base.py +0 -847
- package/.agents/skills/pptx/scripts/office/validators/docx.py +0 -446
- package/.agents/skills/pptx/scripts/office/validators/pptx.py +0 -275
- package/.agents/skills/pptx/scripts/office/validators/redlining.py +0 -247
- package/.agents/skills/pptx/scripts/thumbnail.py +0 -289
- package/.agents/skills/project-development/SKILL.md +0 -293
- package/.agents/skills/project-development/references/case-studies.md +0 -388
- package/.agents/skills/project-development/references/pipeline-patterns.md +0 -610
- package/.agents/skills/project-development/scripts/pipeline_template.py +0 -796
- package/.agents/skills/prompt-engineer/SKILL.md +0 -265
- package/.agents/skills/prompt-engineer/references/advanced_patterns.md +0 -271
- package/.agents/skills/prompt-engineer/references/core_prompting.md +0 -137
- package/.agents/skills/prompt-engineer/references/quality_improvement.md +0 -193
- package/.agents/skills/research-codebase/SKILL.md +0 -229
- package/.agents/skills/ripgrep/SKILL.md +0 -384
- package/.agents/skills/skill-creator/LICENSE.txt +0 -202
- package/.agents/skills/skill-creator/SKILL.md +0 -487
- package/.agents/skills/skill-creator/agents/analyzer.md +0 -274
- package/.agents/skills/skill-creator/agents/comparator.md +0 -202
- package/.agents/skills/skill-creator/agents/grader.md +0 -223
- package/.agents/skills/skill-creator/assets/eval_review.html +0 -146
- package/.agents/skills/skill-creator/eval-viewer/generate_review.py +0 -471
- package/.agents/skills/skill-creator/eval-viewer/viewer.html +0 -1325
- package/.agents/skills/skill-creator/references/schemas.md +0 -430
- package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/.agents/skills/skill-creator/scripts/generate_report.py +0 -326
- package/.agents/skills/skill-creator/scripts/improve_description.py +0 -247
- package/.agents/skills/skill-creator/scripts/package_skill.py +0 -136
- package/.agents/skills/skill-creator/scripts/quick_validate.py +0 -103
- package/.agents/skills/skill-creator/scripts/run_eval.py +0 -310
- package/.agents/skills/skill-creator/scripts/run_loop.py +0 -328
- package/.agents/skills/skill-creator/scripts/utils.py +0 -47
- package/.agents/skills/sl-commit/SKILL.md +0 -53
- package/.agents/skills/sl-submit-diff/SKILL.md +0 -57
- package/.agents/skills/tdd/SKILL.md +0 -111
- package/.agents/skills/tdd/deep-modules.md +0 -33
- package/.agents/skills/tdd/interface-design.md +0 -31
- package/.agents/skills/tdd/mocking.md +0 -59
- package/.agents/skills/tdd/refactoring.md +0 -10
- package/.agents/skills/tdd/tests.md +0 -61
- package/.agents/skills/tool-design/SKILL.md +0 -273
- package/.agents/skills/tool-design/references/architectural_reduction.md +0 -210
- package/.agents/skills/tool-design/references/best_practices.md +0 -176
- package/.agents/skills/tool-design/scripts/description_generator.py +0 -528
- package/.agents/skills/typescript-advanced-types/SKILL.md +0 -720
- package/.agents/skills/typescript-expert/SKILL.md +0 -434
- package/.agents/skills/typescript-expert/references/tsconfig-strict.json +0 -92
- package/.agents/skills/typescript-expert/references/typescript-cheatsheet.md +0 -383
- package/.agents/skills/typescript-expert/references/utility-types.ts +0 -335
- package/.agents/skills/typescript-expert/scripts/ts_diagnostic.py +0 -203
- package/.agents/skills/typescript-react-reviewer/SKILL.md +0 -201
- package/.agents/skills/typescript-react-reviewer/references/antipatterns.md +0 -510
- package/.agents/skills/typescript-react-reviewer/references/checklist.md +0 -267
- package/.agents/skills/typescript-react-reviewer/references/react19-patterns.md +0 -305
- package/.agents/skills/workflow-creator/SKILL.md +0 -553
- package/.agents/skills/workflow-creator/references/agent-sessions.md +0 -891
- package/.agents/skills/workflow-creator/references/agent-setup-recipe.md +0 -266
- package/.agents/skills/workflow-creator/references/computation-and-validation.md +0 -201
- package/.agents/skills/workflow-creator/references/control-flow.md +0 -470
- package/.agents/skills/workflow-creator/references/failure-modes.md +0 -1014
- package/.agents/skills/workflow-creator/references/getting-started.md +0 -392
- package/.agents/skills/workflow-creator/references/registry-and-validation.md +0 -141
- package/.agents/skills/workflow-creator/references/running-workflows.md +0 -418
- package/.agents/skills/workflow-creator/references/session-config.md +0 -431
- package/.agents/skills/workflow-creator/references/state-and-data-flow.md +0 -356
- package/.agents/skills/workflow-creator/references/user-input.md +0 -234
- package/.agents/skills/workflow-creator/references/workflow-inputs.md +0 -392
- package/.agents/skills/xlsx/LICENSE.txt +0 -30
- package/.agents/skills/xlsx/SKILL.md +0 -294
- package/.agents/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/.agents/skills/xlsx/scripts/office/helpers/merge_runs.py +0 -199
- package/.agents/skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/.agents/skills/xlsx/scripts/office/pack.py +0 -159
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/.agents/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/.agents/skills/xlsx/scripts/office/soffice.py +0 -183
- package/.agents/skills/xlsx/scripts/office/unpack.py +0 -132
- package/.agents/skills/xlsx/scripts/office/validate.py +0 -111
- package/.agents/skills/xlsx/scripts/office/validators/__init__.py +0 -15
- package/.agents/skills/xlsx/scripts/office/validators/base.py +0 -847
- package/.agents/skills/xlsx/scripts/office/validators/docx.py +0 -446
- package/.agents/skills/xlsx/scripts/office/validators/pptx.py +0 -275
- package/.agents/skills/xlsx/scripts/office/validators/redlining.py +0 -247
- package/.agents/skills/xlsx/scripts/recalc.py +0 -184
- package/.claude/agents/code-simplifier.md +0 -52
- package/.claude/agents/codebase-analyzer.md +0 -166
- package/.claude/agents/codebase-locator.md +0 -122
- package/.claude/agents/codebase-online-researcher.md +0 -148
- package/.claude/agents/codebase-pattern-finder.md +0 -247
- package/.claude/agents/codebase-research-analyzer.md +0 -179
- package/.claude/agents/codebase-research-locator.md +0 -145
- package/.claude/agents/debugger.md +0 -91
- package/.claude/agents/orchestrator.md +0 -19
- package/.claude/agents/planner.md +0 -295
- package/.claude/agents/reviewer.md +0 -98
- package/.claude/agents/worker.md +0 -165
- package/.claude/settings.json +0 -27
- package/.github/agents/code-simplifier.md +0 -52
- package/.github/agents/codebase-analyzer.md +0 -166
- package/.github/agents/codebase-locator.md +0 -122
- package/.github/agents/codebase-online-researcher.md +0 -146
- package/.github/agents/codebase-pattern-finder.md +0 -247
- package/.github/agents/codebase-research-analyzer.md +0 -179
- package/.github/agents/codebase-research-locator.md +0 -145
- package/.github/agents/debugger.md +0 -98
- package/.github/agents/orchestrator.md +0 -27
- package/.github/agents/planner.md +0 -305
- package/.github/agents/reviewer.md +0 -95
- package/.github/agents/worker.md +0 -237
- package/.github/lsp.json +0 -93
- package/.mcp.json +0 -20
- package/.opencode/agents/code-simplifier.md +0 -62
- package/.opencode/agents/codebase-analyzer.md +0 -171
- package/.opencode/agents/codebase-locator.md +0 -127
- package/.opencode/agents/codebase-online-researcher.md +0 -152
- package/.opencode/agents/codebase-pattern-finder.md +0 -252
- package/.opencode/agents/codebase-research-analyzer.md +0 -183
- package/.opencode/agents/codebase-research-locator.md +0 -149
- package/.opencode/agents/debugger.md +0 -99
- package/.opencode/agents/orchestrator.md +0 -27
- package/.opencode/agents/planner.md +0 -309
- package/.opencode/agents/reviewer.md +0 -103
- package/.opencode/agents/worker.md +0 -165
- package/.opencode/opencode.json +0 -25
- package/README.md +0 -1624
- package/assets/settings.schema.json +0 -51
- package/dist/commands/cli/claude-inflight-hook.d.ts +0 -100
- package/dist/commands/cli/claude-inflight-hook.d.ts.map +0 -1
- package/dist/commands/cli/claude-stop-hook.d.ts +0 -80
- package/dist/commands/cli/claude-stop-hook.d.ts.map +0 -1
- package/dist/lib/atomic-temp.d.ts +0 -8
- package/dist/lib/atomic-temp.d.ts.map +0 -1
- package/dist/lib/path-root-guard.d.ts +0 -4
- package/dist/lib/path-root-guard.d.ts.map +0 -1
- package/dist/lib/spawn.d.ts +0 -102
- package/dist/lib/spawn.d.ts.map +0 -1
- package/dist/lib/terminal-env.d.ts +0 -9
- package/dist/lib/terminal-env.d.ts.map +0 -1
- package/dist/sdk/components/attached-statusline.d.ts +0 -26
- package/dist/sdk/components/attached-statusline.d.ts.map +0 -1
- package/dist/sdk/components/color-utils.d.ts +0 -4
- package/dist/sdk/components/color-utils.d.ts.map +0 -1
- package/dist/sdk/components/compact-switcher.d.ts +0 -10
- package/dist/sdk/components/compact-switcher.d.ts.map +0 -1
- package/dist/sdk/components/connectors.d.ts +0 -16
- package/dist/sdk/components/connectors.d.ts.map +0 -1
- package/dist/sdk/components/edge.d.ts +0 -4
- package/dist/sdk/components/edge.d.ts.map +0 -1
- package/dist/sdk/components/error-boundary.d.ts +0 -23
- package/dist/sdk/components/error-boundary.d.ts.map +0 -1
- package/dist/sdk/components/graph-theme.d.ts +0 -18
- package/dist/sdk/components/graph-theme.d.ts.map +0 -1
- package/dist/sdk/components/header.d.ts +0 -3
- package/dist/sdk/components/header.d.ts.map +0 -1
- package/dist/sdk/components/hooks.d.ts +0 -15
- package/dist/sdk/components/hooks.d.ts.map +0 -1
- package/dist/sdk/components/layout.d.ts +0 -27
- package/dist/sdk/components/layout.d.ts.map +0 -1
- package/dist/sdk/components/node-card.d.ts +0 -10
- package/dist/sdk/components/node-card.d.ts.map +0 -1
- package/dist/sdk/components/orchestrator-panel-contexts.d.ts +0 -16
- package/dist/sdk/components/orchestrator-panel-contexts.d.ts.map +0 -1
- package/dist/sdk/components/orchestrator-panel-store.d.ts +0 -52
- package/dist/sdk/components/orchestrator-panel-store.d.ts.map +0 -1
- package/dist/sdk/components/orchestrator-panel-types.d.ts +0 -18
- package/dist/sdk/components/orchestrator-panel-types.d.ts.map +0 -1
- package/dist/sdk/components/orchestrator-panel.d.ts +0 -86
- package/dist/sdk/components/orchestrator-panel.d.ts.map +0 -1
- package/dist/sdk/components/renderer-background.d.ts +0 -9
- package/dist/sdk/components/renderer-background.d.ts.map +0 -1
- package/dist/sdk/components/session-graph-panel.d.ts +0 -7
- package/dist/sdk/components/session-graph-panel.d.ts.map +0 -1
- package/dist/sdk/components/status-helpers.d.ts +0 -6
- package/dist/sdk/components/status-helpers.d.ts.map +0 -1
- package/dist/sdk/components/statusline.d.ts +0 -5
- package/dist/sdk/components/statusline.d.ts.map +0 -1
- package/dist/sdk/components/tui-diagnostics.d.ts +0 -56
- package/dist/sdk/components/tui-diagnostics.d.ts.map +0 -1
- package/dist/sdk/components/workflow-picker-panel.d.ts +0 -126
- package/dist/sdk/components/workflow-picker-panel.d.ts.map +0 -1
- package/dist/sdk/define-workflow.d.ts +0 -107
- package/dist/sdk/define-workflow.d.ts.map +0 -1
- package/dist/sdk/errors.d.ts +0 -46
- package/dist/sdk/errors.d.ts.map +0 -1
- package/dist/sdk/index.d.ts +0 -26
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/primitives/inputs.d.ts +0 -36
- package/dist/sdk/primitives/inputs.d.ts.map +0 -1
- package/dist/sdk/primitives/metadata.d.ts +0 -40
- package/dist/sdk/primitives/metadata.d.ts.map +0 -1
- package/dist/sdk/primitives/run.d.ts +0 -57
- package/dist/sdk/primitives/run.d.ts.map +0 -1
- package/dist/sdk/primitives/sessions.d.ts +0 -128
- package/dist/sdk/primitives/sessions.d.ts.map +0 -1
- package/dist/sdk/providers/claude.d.ts +0 -392
- package/dist/sdk/providers/claude.d.ts.map +0 -1
- package/dist/sdk/providers/copilot.d.ts +0 -55
- package/dist/sdk/providers/copilot.d.ts.map +0 -1
- package/dist/sdk/providers/opencode.d.ts +0 -27
- package/dist/sdk/providers/opencode.d.ts.map +0 -1
- package/dist/sdk/registry.d.ts +0 -27
- package/dist/sdk/registry.d.ts.map +0 -1
- package/dist/sdk/runtime/attached-footer.d.ts +0 -31
- package/dist/sdk/runtime/attached-footer.d.ts.map +0 -1
- package/dist/sdk/runtime/cc-debounce.d.ts +0 -29
- package/dist/sdk/runtime/cc-debounce.d.ts.map +0 -1
- package/dist/sdk/runtime/executor-env.d.ts +0 -20
- package/dist/sdk/runtime/executor-env.d.ts.map +0 -1
- package/dist/sdk/runtime/executor.d.ts +0 -265
- package/dist/sdk/runtime/executor.d.ts.map +0 -1
- package/dist/sdk/runtime/graph-inference.d.ts +0 -35
- package/dist/sdk/runtime/graph-inference.d.ts.map +0 -1
- package/dist/sdk/runtime/orchestrator-entry.d.ts +0 -26
- package/dist/sdk/runtime/orchestrator-entry.d.ts.map +0 -1
- package/dist/sdk/runtime/panel.d.ts +0 -9
- package/dist/sdk/runtime/panel.d.ts.map +0 -1
- package/dist/sdk/runtime/port-discovery.d.ts +0 -71
- package/dist/sdk/runtime/port-discovery.d.ts.map +0 -1
- package/dist/sdk/runtime/status-writer.d.ts +0 -101
- package/dist/sdk/runtime/status-writer.d.ts.map +0 -1
- package/dist/sdk/runtime/theme.d.ts +0 -33
- package/dist/sdk/runtime/theme.d.ts.map +0 -1
- package/dist/sdk/runtime/tmux.d.ts +0 -307
- package/dist/sdk/runtime/tmux.d.ts.map +0 -1
- package/dist/sdk/runtime/version-compat.d.ts +0 -28
- package/dist/sdk/runtime/version-compat.d.ts.map +0 -1
- package/dist/sdk/types.d.ts +0 -435
- package/dist/sdk/types.d.ts.map +0 -1
- package/dist/sdk/worker-shared.d.ts +0 -42
- package/dist/sdk/worker-shared.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts +0 -81
- package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts +0 -37
- package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/batching.d.ts +0 -43
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/batching.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts +0 -14
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts +0 -136
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts +0 -58
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scratch.d.ts +0 -43
- package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scratch.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts +0 -37
- package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/claude/index.d.ts +0 -68
- package/dist/sdk/workflows/builtin/open-claude-design/claude/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/copilot/index.d.ts +0 -56
- package/dist/sdk/workflows/builtin/open-claude-design/copilot/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/constants.d.ts +0 -72
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/constants.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/design-system.d.ts +0 -46
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/design-system.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/export.d.ts +0 -32
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/export.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/import.d.ts +0 -33
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/import.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/prompts.d.ts +0 -106
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/prompts.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/scan.d.ts +0 -50
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/scan.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/validation.d.ts +0 -12
- package/dist/sdk/workflows/builtin/open-claude-design/helpers/validation.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/open-claude-design/opencode/index.d.ts +0 -58
- package/dist/sdk/workflows/builtin/open-claude-design/opencode/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts +0 -37
- package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts +0 -34
- package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/helpers/copilot-reviewer.d.ts +0 -25
- package/dist/sdk/workflows/builtin/ralph/helpers/copilot-reviewer.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts +0 -69
- package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts +0 -266
- package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts +0 -24
- package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts.map +0 -1
- package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts +0 -33
- package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts.map +0 -1
- package/dist/sdk/workflows/index.d.ts +0 -32
- package/dist/sdk/workflows/index.d.ts.map +0 -1
- package/dist/services/config/additional-instructions.d.ts +0 -67
- package/dist/services/config/additional-instructions.d.ts.map +0 -1
- package/dist/services/config/atomic-config.d.ts +0 -42
- package/dist/services/config/atomic-config.d.ts.map +0 -1
- package/dist/services/config/definitions.d.ts +0 -52
- package/dist/services/config/definitions.d.ts.map +0 -1
- package/dist/services/config/index.d.ts +0 -7
- package/dist/services/config/index.d.ts.map +0 -1
- package/dist/services/config/scm-sync.d.ts +0 -37
- package/dist/services/config/scm-sync.d.ts.map +0 -1
- package/dist/services/config/settings-schema.d.ts +0 -2
- package/dist/services/config/settings-schema.d.ts.map +0 -1
- package/dist/services/system/copy.d.ts +0 -84
- package/dist/services/system/copy.d.ts.map +0 -1
- package/dist/services/system/detect.d.ts +0 -75
- package/dist/services/system/detect.d.ts.map +0 -1
- package/dist/theme/colors.d.ts +0 -35
- package/dist/theme/colors.d.ts.map +0 -1
- package/src/cli.ts +0 -397
- package/src/commands/builtin-registry.ts +0 -37
- package/src/commands/cli/chat/index.test.ts +0 -252
- package/src/commands/cli/chat/index.ts +0 -430
- package/src/commands/cli/chat.ts +0 -8
- package/src/commands/cli/claude-ask-hook.test.ts +0 -128
- package/src/commands/cli/claude-ask-hook.ts +0 -84
- package/src/commands/cli/claude-inflight-hook.test.ts +0 -598
- package/src/commands/cli/claude-inflight-hook.ts +0 -359
- package/src/commands/cli/claude-session-start-hook.ts +0 -61
- package/src/commands/cli/claude-stop-hook.test.ts +0 -317
- package/src/commands/cli/claude-stop-hook.ts +0 -441
- package/src/commands/cli/completions.ts +0 -24
- package/src/commands/cli/config.ts +0 -80
- package/src/commands/cli/footer.tsx +0 -248
- package/src/commands/cli/init/index.ts +0 -41
- package/src/commands/cli/init/onboarding.ts +0 -61
- package/src/commands/cli/init.ts +0 -8
- package/src/commands/cli/management-commands.ts +0 -112
- package/src/commands/cli/session.test.ts +0 -830
- package/src/commands/cli/session.ts +0 -447
- package/src/commands/cli/workflow-command.test.ts +0 -618
- package/src/commands/cli/workflow-inputs.test.ts +0 -353
- package/src/commands/cli/workflow-inputs.ts +0 -266
- package/src/commands/cli/workflow-list.test.ts +0 -235
- package/src/commands/cli/workflow-list.ts +0 -0
- package/src/commands/cli/workflow-status.test.ts +0 -451
- package/src/commands/cli/workflow-status.ts +0 -330
- package/src/commands/cli/workflow.ts +0 -196
- package/src/completions/bash.ts +0 -102
- package/src/completions/fish.ts +0 -136
- package/src/completions/index.ts +0 -7
- package/src/completions/powershell.ts +0 -195
- package/src/completions/zsh.ts +0 -150
- package/src/lib/atomic-temp.test.ts +0 -86
- package/src/lib/atomic-temp.ts +0 -62
- package/src/lib/common-ignore.ts +0 -46
- package/src/lib/merge.ts +0 -103
- package/src/lib/path-root-guard.ts +0 -38
- package/src/lib/spawn.test.ts +0 -109
- package/src/lib/spawn.ts +0 -678
- package/src/lib/terminal-env.test.ts +0 -343
- package/src/lib/terminal-env.ts +0 -100
- package/src/scripts/bump-version.ts +0 -94
- package/src/scripts/bundle-configs.ts +0 -116
- package/src/scripts/clean-dist.test.ts +0 -53
- package/src/scripts/clean-dist.ts +0 -37
- package/src/scripts/constants-base.ts +0 -14
- package/src/scripts/constants.ts +0 -35
- package/src/sdk/components/attached-statusline.tsx +0 -86
- package/src/sdk/components/color-utils.ts +0 -20
- package/src/sdk/components/compact-switcher.tsx +0 -78
- package/src/sdk/components/connectors.test.ts +0 -707
- package/src/sdk/components/connectors.ts +0 -160
- package/src/sdk/components/edge.tsx +0 -13
- package/src/sdk/components/error-boundary.tsx +0 -38
- package/src/sdk/components/graph-theme.ts +0 -37
- package/src/sdk/components/header.tsx +0 -85
- package/src/sdk/components/hooks.ts +0 -21
- package/src/sdk/components/layout.test.ts +0 -1245
- package/src/sdk/components/layout.ts +0 -223
- package/src/sdk/components/node-card.tsx +0 -91
- package/src/sdk/components/orchestrator-panel-contexts.ts +0 -35
- package/src/sdk/components/orchestrator-panel-store.test.ts +0 -847
- package/src/sdk/components/orchestrator-panel-store.ts +0 -187
- package/src/sdk/components/orchestrator-panel-types.ts +0 -23
- package/src/sdk/components/orchestrator-panel.tsx +0 -262
- package/src/sdk/components/renderer-background.ts +0 -49
- package/src/sdk/components/session-graph-panel.tsx +0 -471
- package/src/sdk/components/status-helpers.ts +0 -33
- package/src/sdk/components/statusline.tsx +0 -68
- package/src/sdk/components/tui-diagnostics.ts +0 -273
- package/src/sdk/components/workflow-picker-panel.tsx +0 -1613
- package/src/sdk/define-workflow.test.ts +0 -354
- package/src/sdk/define-workflow.ts +0 -275
- package/src/sdk/errors.test.ts +0 -83
- package/src/sdk/errors.ts +0 -77
- package/src/sdk/index.test.ts +0 -92
- package/src/sdk/index.ts +0 -101
- package/src/sdk/primitives/inputs.ts +0 -48
- package/src/sdk/primitives/metadata.ts +0 -63
- package/src/sdk/primitives/run.ts +0 -81
- package/src/sdk/primitives/sessions.test.ts +0 -594
- package/src/sdk/primitives/sessions.ts +0 -328
- package/src/sdk/providers/claude.ts +0 -1450
- package/src/sdk/providers/copilot.test.ts +0 -365
- package/src/sdk/providers/copilot.ts +0 -185
- package/src/sdk/providers/headless-hil-policy.test.ts +0 -211
- package/src/sdk/providers/opencode.ts +0 -88
- package/src/sdk/registry.ts +0 -132
- package/src/sdk/runtime/attached-footer.ts +0 -155
- package/src/sdk/runtime/cc-debounce.ts +0 -104
- package/src/sdk/runtime/executor-env.ts +0 -45
- package/src/sdk/runtime/executor.test.ts +0 -1321
- package/src/sdk/runtime/executor.ts +0 -2136
- package/src/sdk/runtime/graph-inference.ts +0 -50
- package/src/sdk/runtime/orchestrator-entry.ts +0 -110
- package/src/sdk/runtime/panel.tsx +0 -9
- package/src/sdk/runtime/port-discovery.test.ts +0 -573
- package/src/sdk/runtime/port-discovery.ts +0 -496
- package/src/sdk/runtime/status-writer.test.ts +0 -245
- package/src/sdk/runtime/status-writer.ts +0 -201
- package/src/sdk/runtime/theme.ts +0 -71
- package/src/sdk/runtime/tmux.conf +0 -112
- package/src/sdk/runtime/tmux.ts +0 -785
- package/src/sdk/runtime/version-compat.ts +0 -68
- package/src/sdk/types.ts +0 -548
- package/src/sdk/worker-shared.test.ts +0 -163
- package/src/sdk/worker-shared.ts +0 -155
- package/src/sdk/workflows/builtin/deep-research-codebase/claude/index.ts +0 -569
- package/src/sdk/workflows/builtin/deep-research-codebase/copilot/index.ts +0 -481
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/batching.ts +0 -65
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.ts +0 -24
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/ignore-by-default.d.ts +0 -8
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.ts +0 -958
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/scout.ts +0 -505
- package/src/sdk/workflows/builtin/deep-research-codebase/helpers/scratch.ts +0 -115
- package/src/sdk/workflows/builtin/deep-research-codebase/opencode/index.ts +0 -530
- package/src/sdk/workflows/builtin/open-claude-design/claude/index.ts +0 -500
- package/src/sdk/workflows/builtin/open-claude-design/copilot/index.ts +0 -508
- package/src/sdk/workflows/builtin/open-claude-design/helpers/constants.ts +0 -159
- package/src/sdk/workflows/builtin/open-claude-design/helpers/design-system.ts +0 -88
- package/src/sdk/workflows/builtin/open-claude-design/helpers/export.ts +0 -193
- package/src/sdk/workflows/builtin/open-claude-design/helpers/import.ts +0 -52
- package/src/sdk/workflows/builtin/open-claude-design/helpers/prompts.ts +0 -1110
- package/src/sdk/workflows/builtin/open-claude-design/helpers/scan.ts +0 -117
- package/src/sdk/workflows/builtin/open-claude-design/helpers/validation.ts +0 -38
- package/src/sdk/workflows/builtin/open-claude-design/opencode/index.ts +0 -610
- package/src/sdk/workflows/builtin/ralph/claude/index.ts +0 -272
- package/src/sdk/workflows/builtin/ralph/copilot/index.ts +0 -298
- package/src/sdk/workflows/builtin/ralph/helpers/copilot-reviewer.ts +0 -105
- package/src/sdk/workflows/builtin/ralph/helpers/git.ts +0 -201
- package/src/sdk/workflows/builtin/ralph/helpers/prompts.ts +0 -1108
- package/src/sdk/workflows/builtin/ralph/helpers/review.ts +0 -33
- package/src/sdk/workflows/builtin/ralph/opencode/index.ts +0 -290
- package/src/sdk/workflows/index.ts +0 -116
- package/src/services/config/additional-instructions.ts +0 -273
- package/src/services/config/atomic-config.ts +0 -210
- package/src/services/config/atomic-global-config.ts +0 -348
- package/src/services/config/config-path.ts +0 -19
- package/src/services/config/definitions.ts +0 -125
- package/src/services/config/index.ts +0 -7
- package/src/services/config/scm-sync.ts +0 -185
- package/src/services/config/settings-schema.ts +0 -2
- package/src/services/config/settings.ts +0 -144
- package/src/services/system/agents.ts +0 -95
- package/src/services/system/auth.test.ts +0 -343
- package/src/services/system/auth.ts +0 -140
- package/src/services/system/auto-sync.ts +0 -128
- package/src/services/system/copy.ts +0 -392
- package/src/services/system/detect.ts +0 -161
- package/src/services/system/file-lock.ts +0 -289
- package/src/services/system/install-ui.ts +0 -296
- package/src/services/system/skills.ts +0 -58
- package/src/theme/colors.ts +0 -96
- package/src/theme/logo.ts +0 -123
- package/src/version.ts +0 -7
|
@@ -1,590 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Sandbox Manager for Hosted Agent Infrastructure.
|
|
3
|
-
|
|
4
|
-
Use when: building background coding agents that need sandboxed execution
|
|
5
|
-
environments with pre-built images, warm pools, and session snapshots.
|
|
6
|
-
|
|
7
|
-
This module provides composable building blocks for sandbox lifecycle
|
|
8
|
-
management. Each class handles one concern (image building, warm pools,
|
|
9
|
-
session coordination) and can be used independently or combined via
|
|
10
|
-
SandboxManager.
|
|
11
|
-
|
|
12
|
-
Note: This is pseudocode demonstrating architectural patterns.
|
|
13
|
-
Adapt for your specific infrastructure (Modal, Fly.io, etc.).
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
from dataclasses import dataclass, field
|
|
17
|
-
from datetime import datetime, timedelta
|
|
18
|
-
from typing import Optional, Callable, Any
|
|
19
|
-
from enum import Enum
|
|
20
|
-
import asyncio
|
|
21
|
-
|
|
22
|
-
__all__ = [
|
|
23
|
-
"SandboxState",
|
|
24
|
-
"UserIdentity",
|
|
25
|
-
"SandboxConfig",
|
|
26
|
-
"Sandbox",
|
|
27
|
-
"RepositoryImage",
|
|
28
|
-
"ImageBuilder",
|
|
29
|
-
"WarmSandbox",
|
|
30
|
-
"WarmPoolManager",
|
|
31
|
-
"SandboxManager",
|
|
32
|
-
"AgentSession",
|
|
33
|
-
]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class SandboxState(Enum):
|
|
37
|
-
"""Sandbox lifecycle states."""
|
|
38
|
-
CREATING = "creating"
|
|
39
|
-
SYNCING = "syncing"
|
|
40
|
-
READY = "ready"
|
|
41
|
-
EXECUTING = "executing"
|
|
42
|
-
SNAPSHOTTING = "snapshotting"
|
|
43
|
-
TERMINATED = "terminated"
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
@dataclass
|
|
47
|
-
class UserIdentity:
|
|
48
|
-
"""User identity for commit attribution.
|
|
49
|
-
|
|
50
|
-
Use when: configuring sandbox git identity so commits are
|
|
51
|
-
attributed to the prompting user, not the app.
|
|
52
|
-
"""
|
|
53
|
-
id: str
|
|
54
|
-
name: str
|
|
55
|
-
email: str
|
|
56
|
-
github_token: str
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
@dataclass
|
|
60
|
-
class SandboxConfig:
|
|
61
|
-
"""Configuration for sandbox creation.
|
|
62
|
-
|
|
63
|
-
Use when: defining resource limits and timeouts for a new sandbox
|
|
64
|
-
to prevent cost runaway and resource exhaustion.
|
|
65
|
-
"""
|
|
66
|
-
repo_url: str
|
|
67
|
-
base_image: str
|
|
68
|
-
memory_mb: int = 4096
|
|
69
|
-
cpu_cores: int = 2
|
|
70
|
-
disk_gb: int = 10
|
|
71
|
-
timeout_hours: int = 4
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
@dataclass
|
|
75
|
-
class Sandbox:
|
|
76
|
-
"""Represents a sandboxed execution environment.
|
|
77
|
-
|
|
78
|
-
Use when: interacting with a running sandbox to execute commands,
|
|
79
|
-
read/write files, or take snapshots for session continuity.
|
|
80
|
-
"""
|
|
81
|
-
id: str
|
|
82
|
-
config: SandboxConfig
|
|
83
|
-
state: SandboxState
|
|
84
|
-
created_at: datetime
|
|
85
|
-
snapshot_id: Optional[str] = None
|
|
86
|
-
current_user: Optional[UserIdentity] = None
|
|
87
|
-
|
|
88
|
-
# Event handlers
|
|
89
|
-
on_state_change: Optional[Callable[[SandboxState], None]] = None
|
|
90
|
-
|
|
91
|
-
async def execute_command(self, command: str) -> dict[str, Any]:
|
|
92
|
-
"""Execute a command in the sandbox.
|
|
93
|
-
|
|
94
|
-
Use when: running shell commands (git, build tools, tests)
|
|
95
|
-
inside the isolated environment.
|
|
96
|
-
|
|
97
|
-
Returns:
|
|
98
|
-
dict with keys "stdout", "stderr", "exit_code".
|
|
99
|
-
"""
|
|
100
|
-
# Implementation depends on infrastructure
|
|
101
|
-
pass
|
|
102
|
-
|
|
103
|
-
async def read_file(self, path: str) -> str:
|
|
104
|
-
"""Read a file from the sandbox filesystem.
|
|
105
|
-
|
|
106
|
-
Use when: agent needs to inspect source code or config files.
|
|
107
|
-
Safe to call before git sync completes.
|
|
108
|
-
"""
|
|
109
|
-
pass
|
|
110
|
-
|
|
111
|
-
async def write_file(self, path: str, content: str) -> None:
|
|
112
|
-
"""Write a file to the sandbox filesystem.
|
|
113
|
-
|
|
114
|
-
Use when: agent needs to modify source code. Block this
|
|
115
|
-
until git sync completes to avoid write conflicts.
|
|
116
|
-
"""
|
|
117
|
-
pass
|
|
118
|
-
|
|
119
|
-
async def snapshot(self) -> str:
|
|
120
|
-
"""Create a snapshot of current filesystem state.
|
|
121
|
-
|
|
122
|
-
Use when: preserving session state before sandbox termination
|
|
123
|
-
so follow-up prompts can restore instantly.
|
|
124
|
-
"""
|
|
125
|
-
self.state = SandboxState.SNAPSHOTTING
|
|
126
|
-
snapshot_id = await self._create_snapshot()
|
|
127
|
-
self.snapshot_id = snapshot_id
|
|
128
|
-
self.state = SandboxState.READY
|
|
129
|
-
return snapshot_id
|
|
130
|
-
|
|
131
|
-
async def _create_snapshot(self) -> str:
|
|
132
|
-
"""Create snapshot (infrastructure-specific)."""
|
|
133
|
-
pass
|
|
134
|
-
|
|
135
|
-
async def restore(self, snapshot_id: str) -> None:
|
|
136
|
-
"""Restore sandbox to a previous snapshot."""
|
|
137
|
-
pass
|
|
138
|
-
|
|
139
|
-
async def terminate(self) -> None:
|
|
140
|
-
"""Terminate the sandbox."""
|
|
141
|
-
self.state = SandboxState.TERMINATED
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
@dataclass
|
|
145
|
-
class RepositoryImage:
|
|
146
|
-
"""Pre-built image for a repository.
|
|
147
|
-
|
|
148
|
-
Use when: checking whether a cached environment image exists
|
|
149
|
-
and whether it is recent enough to use.
|
|
150
|
-
"""
|
|
151
|
-
repo_url: str
|
|
152
|
-
image_id: str
|
|
153
|
-
commit_sha: str
|
|
154
|
-
built_at: datetime
|
|
155
|
-
|
|
156
|
-
def is_stale(self, max_age: timedelta = timedelta(minutes=30)) -> bool:
|
|
157
|
-
"""Check if image is older than max age."""
|
|
158
|
-
return datetime.utcnow() - self.built_at > max_age
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
class ImageBuilder:
|
|
162
|
-
"""Builds and manages repository images.
|
|
163
|
-
|
|
164
|
-
Use when: setting up the periodic image build loop that
|
|
165
|
-
pre-bakes development environments for fast sandbox spin-up.
|
|
166
|
-
"""
|
|
167
|
-
|
|
168
|
-
def __init__(self, github_app_token_provider: Callable[[], str]) -> None:
|
|
169
|
-
self.token_provider = github_app_token_provider
|
|
170
|
-
self.images: dict[str, RepositoryImage] = {}
|
|
171
|
-
|
|
172
|
-
async def build_image(self, repo_url: str) -> RepositoryImage:
|
|
173
|
-
"""Build a new image for a repository.
|
|
174
|
-
|
|
175
|
-
Use when: the current image is stale or no image exists yet.
|
|
176
|
-
Runs clone, dependency install, build, and cache warming.
|
|
177
|
-
"""
|
|
178
|
-
print(f"Building image for {repo_url}...")
|
|
179
|
-
|
|
180
|
-
# Get fresh token for clone
|
|
181
|
-
token = self.token_provider()
|
|
182
|
-
|
|
183
|
-
# These operations run in build environment
|
|
184
|
-
build_steps: list[str] = [
|
|
185
|
-
# Clone repository
|
|
186
|
-
f"git clone https://x-access-token:{token}@github.com/{repo_url} /workspace",
|
|
187
|
-
|
|
188
|
-
# Install dependencies
|
|
189
|
-
"cd /workspace && npm install",
|
|
190
|
-
|
|
191
|
-
# Run build
|
|
192
|
-
"cd /workspace && npm run build",
|
|
193
|
-
|
|
194
|
-
# Warm caches by running once
|
|
195
|
-
"cd /workspace && npm run dev &",
|
|
196
|
-
"sleep 5", # Let dev server start
|
|
197
|
-
"cd /workspace && npm test -- --run || true", # Run tests to warm cache
|
|
198
|
-
]
|
|
199
|
-
|
|
200
|
-
# Execute build steps (infrastructure-specific)
|
|
201
|
-
for step in build_steps:
|
|
202
|
-
await self._execute_build_step(step)
|
|
203
|
-
|
|
204
|
-
# Get current commit
|
|
205
|
-
commit_sha: str = await self._get_commit_sha()
|
|
206
|
-
|
|
207
|
-
# Create and store image
|
|
208
|
-
image = RepositoryImage(
|
|
209
|
-
repo_url=repo_url,
|
|
210
|
-
image_id=await self._finalize_image(),
|
|
211
|
-
commit_sha=commit_sha,
|
|
212
|
-
built_at=datetime.utcnow()
|
|
213
|
-
)
|
|
214
|
-
|
|
215
|
-
self.images[repo_url] = image
|
|
216
|
-
return image
|
|
217
|
-
|
|
218
|
-
def get_latest_image(self, repo_url: str) -> Optional[RepositoryImage]:
|
|
219
|
-
"""Get the most recent image for a repository."""
|
|
220
|
-
return self.images.get(repo_url)
|
|
221
|
-
|
|
222
|
-
async def _execute_build_step(self, command: str) -> None:
|
|
223
|
-
"""Execute a build step (infrastructure-specific)."""
|
|
224
|
-
pass
|
|
225
|
-
|
|
226
|
-
async def _get_commit_sha(self) -> str:
|
|
227
|
-
"""Get current HEAD commit SHA."""
|
|
228
|
-
pass
|
|
229
|
-
|
|
230
|
-
async def _finalize_image(self) -> str:
|
|
231
|
-
"""Finalize and store the image, return image ID."""
|
|
232
|
-
pass
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
@dataclass
|
|
236
|
-
class WarmSandbox:
|
|
237
|
-
"""A pre-warmed sandbox ready for use.
|
|
238
|
-
|
|
239
|
-
Use when: tracking warm pool inventory and claiming a sandbox
|
|
240
|
-
for an incoming user session.
|
|
241
|
-
"""
|
|
242
|
-
sandbox: Sandbox
|
|
243
|
-
repo_url: str
|
|
244
|
-
created_at: datetime
|
|
245
|
-
image_version: str
|
|
246
|
-
is_claimed: bool = False
|
|
247
|
-
sync_complete: bool = False
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
class WarmPoolManager:
|
|
251
|
-
"""Manages pools of pre-warmed sandboxes.
|
|
252
|
-
|
|
253
|
-
Use when: reducing cold start latency by maintaining ready-to-use
|
|
254
|
-
sandboxes that are pre-synced to the latest code.
|
|
255
|
-
"""
|
|
256
|
-
|
|
257
|
-
def __init__(
|
|
258
|
-
self,
|
|
259
|
-
image_builder: ImageBuilder,
|
|
260
|
-
target_pool_size: int = 3,
|
|
261
|
-
max_age: timedelta = timedelta(minutes=25)
|
|
262
|
-
) -> None:
|
|
263
|
-
self.image_builder = image_builder
|
|
264
|
-
self.target_size = target_pool_size
|
|
265
|
-
self.max_age = max_age
|
|
266
|
-
self.pools: dict[str, list[WarmSandbox]] = {}
|
|
267
|
-
|
|
268
|
-
async def get_warm_sandbox(self, repo_url: str) -> Optional[WarmSandbox]:
|
|
269
|
-
"""Get a pre-warmed sandbox if available.
|
|
270
|
-
|
|
271
|
-
Use when: a user submits a prompt and needs a sandbox immediately.
|
|
272
|
-
Returns None if no valid warm sandbox is available.
|
|
273
|
-
"""
|
|
274
|
-
if repo_url not in self.pools:
|
|
275
|
-
return None
|
|
276
|
-
|
|
277
|
-
for warm in self.pools[repo_url]:
|
|
278
|
-
if not warm.is_claimed and self._is_valid(warm):
|
|
279
|
-
warm.is_claimed = True
|
|
280
|
-
return warm
|
|
281
|
-
|
|
282
|
-
return None
|
|
283
|
-
|
|
284
|
-
def _is_valid(self, warm: WarmSandbox) -> bool:
|
|
285
|
-
"""Check if a warm sandbox is still valid."""
|
|
286
|
-
age: timedelta = datetime.utcnow() - warm.created_at
|
|
287
|
-
if age > self.max_age:
|
|
288
|
-
return False
|
|
289
|
-
|
|
290
|
-
# Check if image is still current
|
|
291
|
-
current = self.image_builder.get_latest_image(warm.repo_url)
|
|
292
|
-
if not current or current.image_id != warm.image_version:
|
|
293
|
-
return False
|
|
294
|
-
|
|
295
|
-
return True
|
|
296
|
-
|
|
297
|
-
async def maintain_pool(self, repo_url: str) -> None:
|
|
298
|
-
"""Ensure pool has target number of warm sandboxes.
|
|
299
|
-
|
|
300
|
-
Use when: called periodically or after an image rebuild to
|
|
301
|
-
keep the warm pool populated.
|
|
302
|
-
"""
|
|
303
|
-
if repo_url not in self.pools:
|
|
304
|
-
self.pools[repo_url] = []
|
|
305
|
-
|
|
306
|
-
# Remove invalid sandboxes
|
|
307
|
-
valid: list[WarmSandbox] = [w for w in self.pools[repo_url] if self._is_valid(w)]
|
|
308
|
-
self.pools[repo_url] = valid
|
|
309
|
-
|
|
310
|
-
# Count available (unclaimed) sandboxes
|
|
311
|
-
available: int = len([w for w in valid if not w.is_claimed])
|
|
312
|
-
needed: int = self.target_size - available
|
|
313
|
-
|
|
314
|
-
# Create new warm sandboxes
|
|
315
|
-
for _ in range(max(0, needed)):
|
|
316
|
-
warm = await self._create_warm_sandbox(repo_url)
|
|
317
|
-
self.pools[repo_url].append(warm)
|
|
318
|
-
|
|
319
|
-
async def _create_warm_sandbox(self, repo_url: str) -> WarmSandbox:
|
|
320
|
-
"""Create a new warm sandbox."""
|
|
321
|
-
image: Optional[RepositoryImage] = self.image_builder.get_latest_image(repo_url)
|
|
322
|
-
if not image:
|
|
323
|
-
raise ValueError(f"No image available for {repo_url}")
|
|
324
|
-
|
|
325
|
-
# Create sandbox from image
|
|
326
|
-
sandbox: Sandbox = await self._create_sandbox_from_image(image)
|
|
327
|
-
|
|
328
|
-
warm = WarmSandbox(
|
|
329
|
-
sandbox=sandbox,
|
|
330
|
-
repo_url=repo_url,
|
|
331
|
-
created_at=datetime.utcnow(),
|
|
332
|
-
image_version=image.image_id,
|
|
333
|
-
sync_complete=False
|
|
334
|
-
)
|
|
335
|
-
|
|
336
|
-
# Start syncing to latest in background
|
|
337
|
-
asyncio.create_task(self._sync_to_latest(warm))
|
|
338
|
-
|
|
339
|
-
return warm
|
|
340
|
-
|
|
341
|
-
async def _sync_to_latest(self, warm: WarmSandbox) -> None:
|
|
342
|
-
"""Sync sandbox to latest commit on base branch."""
|
|
343
|
-
await warm.sandbox.execute_command("git fetch origin main")
|
|
344
|
-
await warm.sandbox.execute_command("git reset --hard origin/main")
|
|
345
|
-
warm.sync_complete = True
|
|
346
|
-
|
|
347
|
-
async def _create_sandbox_from_image(self, image: RepositoryImage) -> Sandbox:
|
|
348
|
-
"""Create a sandbox from an image (infrastructure-specific)."""
|
|
349
|
-
pass
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
class SandboxManager:
|
|
353
|
-
"""Main manager for sandbox lifecycle.
|
|
354
|
-
|
|
355
|
-
Use when: orchestrating the full sandbox lifecycle including
|
|
356
|
-
image building, warm pools, and session management. This is the
|
|
357
|
-
top-level entry point that composes ImageBuilder and WarmPoolManager.
|
|
358
|
-
"""
|
|
359
|
-
|
|
360
|
-
def __init__(
|
|
361
|
-
self,
|
|
362
|
-
repositories: list[str],
|
|
363
|
-
github_app_token_provider: Callable[[], str],
|
|
364
|
-
build_interval: timedelta = timedelta(minutes=30)
|
|
365
|
-
) -> None:
|
|
366
|
-
self.repositories = repositories
|
|
367
|
-
self.image_builder = ImageBuilder(github_app_token_provider)
|
|
368
|
-
self.warm_pool = WarmPoolManager(self.image_builder)
|
|
369
|
-
self.build_interval = build_interval
|
|
370
|
-
self.active_sessions: dict[str, Sandbox] = {}
|
|
371
|
-
|
|
372
|
-
async def start_build_loop(self) -> None:
|
|
373
|
-
"""Start the background image build loop.
|
|
374
|
-
|
|
375
|
-
Use when: initializing the system. Runs indefinitely, rebuilding
|
|
376
|
-
images every build_interval to keep environments fresh.
|
|
377
|
-
"""
|
|
378
|
-
while True:
|
|
379
|
-
for repo in self.repositories:
|
|
380
|
-
try:
|
|
381
|
-
await self.image_builder.build_image(repo)
|
|
382
|
-
await self.warm_pool.maintain_pool(repo)
|
|
383
|
-
except Exception as e:
|
|
384
|
-
print(f"Failed to build {repo}: {e}")
|
|
385
|
-
|
|
386
|
-
await asyncio.sleep(self.build_interval.total_seconds())
|
|
387
|
-
|
|
388
|
-
async def start_session(
|
|
389
|
-
self,
|
|
390
|
-
repo_url: str,
|
|
391
|
-
user: UserIdentity,
|
|
392
|
-
snapshot_id: Optional[str] = None
|
|
393
|
-
) -> Sandbox:
|
|
394
|
-
"""Start a new session for a user.
|
|
395
|
-
|
|
396
|
-
Use when: a user submits a prompt. Tries warm pool first,
|
|
397
|
-
then snapshot restore, then cold start as fallback.
|
|
398
|
-
"""
|
|
399
|
-
# Try to get from warm pool first
|
|
400
|
-
warm: Optional[WarmSandbox] = await self.warm_pool.get_warm_sandbox(repo_url)
|
|
401
|
-
|
|
402
|
-
if warm:
|
|
403
|
-
sandbox = warm.sandbox
|
|
404
|
-
# Wait for sync if not complete
|
|
405
|
-
if not warm.sync_complete:
|
|
406
|
-
await self._wait_for_sync(warm)
|
|
407
|
-
elif snapshot_id:
|
|
408
|
-
# Restore from previous session snapshot
|
|
409
|
-
sandbox = await self._restore_from_snapshot(snapshot_id)
|
|
410
|
-
else:
|
|
411
|
-
# Cold start from latest image
|
|
412
|
-
sandbox = await self._cold_start(repo_url)
|
|
413
|
-
|
|
414
|
-
# Configure for user
|
|
415
|
-
await self._configure_for_user(sandbox, user)
|
|
416
|
-
|
|
417
|
-
# Track session
|
|
418
|
-
session_id: str = f"{user.id}_{datetime.utcnow().isoformat()}"
|
|
419
|
-
self.active_sessions[session_id] = sandbox
|
|
420
|
-
|
|
421
|
-
return sandbox
|
|
422
|
-
|
|
423
|
-
async def on_user_typing(self, user: UserIdentity, repo_url: str) -> None:
|
|
424
|
-
"""Called when user starts typing a prompt.
|
|
425
|
-
|
|
426
|
-
Use when: implementing predictive warm-up. Starts preparing a
|
|
427
|
-
sandbox so it is ready by the time the user submits.
|
|
428
|
-
"""
|
|
429
|
-
warm: Optional[WarmSandbox] = await self.warm_pool.get_warm_sandbox(repo_url)
|
|
430
|
-
|
|
431
|
-
if not warm:
|
|
432
|
-
# Start warming one now
|
|
433
|
-
asyncio.create_task(self.warm_pool.maintain_pool(repo_url))
|
|
434
|
-
|
|
435
|
-
async def end_session(self, session_id: str) -> Optional[str]:
|
|
436
|
-
"""End a session and return snapshot ID for potential follow-up.
|
|
437
|
-
|
|
438
|
-
Use when: a session completes. Always snapshots before termination
|
|
439
|
-
to prevent state loss.
|
|
440
|
-
"""
|
|
441
|
-
if session_id not in self.active_sessions:
|
|
442
|
-
return None
|
|
443
|
-
|
|
444
|
-
sandbox: Sandbox = self.active_sessions[session_id]
|
|
445
|
-
|
|
446
|
-
# Create snapshot before terminating
|
|
447
|
-
snapshot_id: str = await sandbox.snapshot()
|
|
448
|
-
|
|
449
|
-
# Terminate sandbox
|
|
450
|
-
await sandbox.terminate()
|
|
451
|
-
|
|
452
|
-
del self.active_sessions[session_id]
|
|
453
|
-
|
|
454
|
-
return snapshot_id
|
|
455
|
-
|
|
456
|
-
async def _configure_for_user(
|
|
457
|
-
self,
|
|
458
|
-
sandbox: Sandbox,
|
|
459
|
-
user: UserIdentity
|
|
460
|
-
) -> None:
|
|
461
|
-
"""Configure sandbox for a specific user."""
|
|
462
|
-
sandbox.current_user = user
|
|
463
|
-
|
|
464
|
-
# Set git identity
|
|
465
|
-
await sandbox.execute_command(
|
|
466
|
-
f'git config user.name "{user.name}"'
|
|
467
|
-
)
|
|
468
|
-
await sandbox.execute_command(
|
|
469
|
-
f'git config user.email "{user.email}"'
|
|
470
|
-
)
|
|
471
|
-
|
|
472
|
-
async def _wait_for_sync(self, warm: WarmSandbox) -> None:
|
|
473
|
-
"""Wait for sync to complete."""
|
|
474
|
-
while not warm.sync_complete:
|
|
475
|
-
await asyncio.sleep(0.1)
|
|
476
|
-
|
|
477
|
-
async def _restore_from_snapshot(self, snapshot_id: str) -> Sandbox:
|
|
478
|
-
"""Restore a sandbox from a snapshot."""
|
|
479
|
-
pass
|
|
480
|
-
|
|
481
|
-
async def _cold_start(self, repo_url: str) -> Sandbox:
|
|
482
|
-
"""Start a sandbox from cold (no warm pool available)."""
|
|
483
|
-
pass
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
class AgentSession:
|
|
487
|
-
"""Agent session with file read/write coordination.
|
|
488
|
-
|
|
489
|
-
Use when: wrapping a Sandbox to enforce the pattern where reads
|
|
490
|
-
are allowed before sync completes but writes are blocked until
|
|
491
|
-
sync finishes, preventing write conflicts.
|
|
492
|
-
"""
|
|
493
|
-
|
|
494
|
-
def __init__(self, sandbox: Sandbox) -> None:
|
|
495
|
-
self.sandbox = sandbox
|
|
496
|
-
self.sync_complete: bool = False
|
|
497
|
-
self.pending_writes: list[tuple[str, str]] = []
|
|
498
|
-
|
|
499
|
-
async def read_file(self, path: str) -> str:
|
|
500
|
-
"""Read a file -- allowed even before sync completes.
|
|
501
|
-
|
|
502
|
-
Use when: agent needs to research code immediately. Safe because
|
|
503
|
-
in large repos, files being worked on are unlikely to have
|
|
504
|
-
changed in the last 30 minutes since image build.
|
|
505
|
-
"""
|
|
506
|
-
return await self.sandbox.read_file(path)
|
|
507
|
-
|
|
508
|
-
async def write_file(self, path: str, content: str) -> None:
|
|
509
|
-
"""Write a file -- blocks until sync is complete.
|
|
510
|
-
|
|
511
|
-
Use when: agent needs to modify source code. Queues the write
|
|
512
|
-
and waits for git sync to finish to prevent conflicts.
|
|
513
|
-
"""
|
|
514
|
-
if not self.sync_complete:
|
|
515
|
-
# Queue the write
|
|
516
|
-
self.pending_writes.append((path, content))
|
|
517
|
-
await self._wait_for_sync()
|
|
518
|
-
|
|
519
|
-
await self.sandbox.write_file(path, content)
|
|
520
|
-
|
|
521
|
-
def mark_sync_complete(self) -> None:
|
|
522
|
-
"""Called when git sync is complete."""
|
|
523
|
-
self.sync_complete = True
|
|
524
|
-
|
|
525
|
-
async def _wait_for_sync(self) -> None:
|
|
526
|
-
"""Wait for sync to complete, then flush pending writes."""
|
|
527
|
-
while not self.sync_complete:
|
|
528
|
-
await asyncio.sleep(0.1)
|
|
529
|
-
|
|
530
|
-
# Flush pending writes
|
|
531
|
-
for path, content in self.pending_writes:
|
|
532
|
-
await self.sandbox.write_file(path, content)
|
|
533
|
-
self.pending_writes.clear()
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
if __name__ == "__main__":
|
|
537
|
-
async def _demo() -> None:
|
|
538
|
-
"""Demonstrate sandbox manager usage end-to-end."""
|
|
539
|
-
|
|
540
|
-
def get_github_token() -> str:
|
|
541
|
-
"""Get GitHub App installation token."""
|
|
542
|
-
# Implementation: call GitHub API to get installation token
|
|
543
|
-
return "ghs_xxxx"
|
|
544
|
-
|
|
545
|
-
# Initialize manager with target repositories
|
|
546
|
-
manager = SandboxManager(
|
|
547
|
-
repositories=[
|
|
548
|
-
"myorg/frontend",
|
|
549
|
-
"myorg/backend",
|
|
550
|
-
"myorg/shared-libs"
|
|
551
|
-
],
|
|
552
|
-
github_app_token_provider=get_github_token
|
|
553
|
-
)
|
|
554
|
-
|
|
555
|
-
# Start background build loop
|
|
556
|
-
asyncio.create_task(manager.start_build_loop())
|
|
557
|
-
|
|
558
|
-
# Simulate user session
|
|
559
|
-
user = UserIdentity(
|
|
560
|
-
id="user123",
|
|
561
|
-
name="Alice Developer",
|
|
562
|
-
email="alice@example.com",
|
|
563
|
-
github_token="gho_user_token"
|
|
564
|
-
)
|
|
565
|
-
|
|
566
|
-
# User starts typing -- predictively warm a sandbox
|
|
567
|
-
await manager.on_user_typing(user, "myorg/frontend")
|
|
568
|
-
|
|
569
|
-
# User submits prompt -- get sandbox
|
|
570
|
-
sandbox: Sandbox = await manager.start_session("myorg/frontend", user)
|
|
571
|
-
|
|
572
|
-
# Create session wrapper for read/write coordination
|
|
573
|
-
session = AgentSession(sandbox)
|
|
574
|
-
|
|
575
|
-
# Agent can read immediately (before sync completes)
|
|
576
|
-
readme: str = await session.read_file("/workspace/README.md")
|
|
577
|
-
|
|
578
|
-
# Agent work happens here...
|
|
579
|
-
|
|
580
|
-
# End session and get snapshot for follow-up
|
|
581
|
-
# Find the session_id that was generated during start_session
|
|
582
|
-
active_ids = list(manager.active_sessions.keys())
|
|
583
|
-
if active_ids:
|
|
584
|
-
session_id = active_ids[0]
|
|
585
|
-
snapshot_id: Optional[str] = await manager.end_session(session_id)
|
|
586
|
-
print(f"Session ended, snapshot: {snapshot_id}")
|
|
587
|
-
else:
|
|
588
|
-
print("No active session found")
|
|
589
|
-
|
|
590
|
-
asyncio.run(_demo())
|