@bastani/atomic 0.6.8 → 0.7.0-2
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,862 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Context Compression Evaluation
|
|
3
|
-
|
|
4
|
-
Public API for evaluating context compression quality using probe-based
|
|
5
|
-
assessment. This module provides three composable components:
|
|
6
|
-
|
|
7
|
-
- **ProbeGenerator**: Extracts factual claims, file operations, and decisions
|
|
8
|
-
from conversation history, then generates typed probes for evaluation.
|
|
9
|
-
Use when: building a compression evaluation pipeline and needing to
|
|
10
|
-
automatically derive test questions from raw conversation history.
|
|
11
|
-
|
|
12
|
-
- **CompressionEvaluator**: Scores probe responses against a multi-dimensional
|
|
13
|
-
rubric (accuracy, context awareness, artifact trail, completeness,
|
|
14
|
-
continuity, instruction following). Use when: comparing compression methods
|
|
15
|
-
or validating that a compression strategy preserves critical information.
|
|
16
|
-
|
|
17
|
-
- **StructuredSummarizer**: Implements anchored iterative summarization with
|
|
18
|
-
explicit sections for session intent, file tracking, decisions, and next
|
|
19
|
-
steps. Use when: compressing long-running coding sessions where file
|
|
20
|
-
tracking and decision rationale must survive compression.
|
|
21
|
-
|
|
22
|
-
Top-level convenience function:
|
|
23
|
-
- **evaluate_compression_quality**: End-to-end pipeline that generates probes,
|
|
24
|
-
collects model responses, evaluates them, and returns a scored summary with
|
|
25
|
-
recommendations. Use when: running a one-shot compression quality check
|
|
26
|
-
without wiring up individual components.
|
|
27
|
-
|
|
28
|
-
PRODUCTION NOTES:
|
|
29
|
-
- The LLM judge calls are stubbed for demonstration. Production systems
|
|
30
|
-
should implement actual API calls to a frontier model.
|
|
31
|
-
- Token estimation uses simplified heuristics. Production systems should
|
|
32
|
-
use model-specific tokenizers.
|
|
33
|
-
- Ground truth extraction uses pattern matching. Production systems may
|
|
34
|
-
benefit from more sophisticated fact extraction.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
from dataclasses import dataclass, field
|
|
38
|
-
from typing import List, Dict, Optional, Callable
|
|
39
|
-
from enum import Enum
|
|
40
|
-
import json
|
|
41
|
-
import re
|
|
42
|
-
|
|
43
|
-
__all__ = [
|
|
44
|
-
"ProbeType",
|
|
45
|
-
"Probe",
|
|
46
|
-
"CriterionResult",
|
|
47
|
-
"EvaluationResult",
|
|
48
|
-
"RUBRIC_CRITERIA",
|
|
49
|
-
"ProbeGenerator",
|
|
50
|
-
"CompressionEvaluator",
|
|
51
|
-
"StructuredSummarizer",
|
|
52
|
-
"evaluate_compression_quality",
|
|
53
|
-
]
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
class ProbeType(Enum):
|
|
57
|
-
"""Types of evaluation probes for compression quality assessment."""
|
|
58
|
-
RECALL = "recall"
|
|
59
|
-
ARTIFACT = "artifact"
|
|
60
|
-
CONTINUATION = "continuation"
|
|
61
|
-
DECISION = "decision"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
@dataclass
|
|
65
|
-
class Probe:
|
|
66
|
-
"""A probe question for evaluating compression quality.
|
|
67
|
-
|
|
68
|
-
Use when: constructing evaluation inputs for CompressionEvaluator.
|
|
69
|
-
Each probe targets a specific information category that compression
|
|
70
|
-
may have lost.
|
|
71
|
-
"""
|
|
72
|
-
probe_type: ProbeType
|
|
73
|
-
question: str
|
|
74
|
-
ground_truth: Optional[str] = None
|
|
75
|
-
context_reference: Optional[str] = None
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
@dataclass
|
|
79
|
-
class CriterionResult:
|
|
80
|
-
"""Result for a single evaluation criterion."""
|
|
81
|
-
criterion_id: str
|
|
82
|
-
score: float
|
|
83
|
-
reasoning: str
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
@dataclass
|
|
87
|
-
class EvaluationResult:
|
|
88
|
-
"""Complete evaluation result for a probe response.
|
|
89
|
-
|
|
90
|
-
Contains per-criterion scores, per-dimension aggregates, and an
|
|
91
|
-
overall aggregate score.
|
|
92
|
-
"""
|
|
93
|
-
probe: Probe
|
|
94
|
-
response: str
|
|
95
|
-
criterion_results: List[CriterionResult]
|
|
96
|
-
aggregate_score: float
|
|
97
|
-
dimension_scores: Dict[str, float] = field(default_factory=dict)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
# Evaluation Rubrics
|
|
101
|
-
|
|
102
|
-
RUBRIC_CRITERIA: Dict[str, List[Dict]] = {
|
|
103
|
-
"accuracy": [
|
|
104
|
-
{
|
|
105
|
-
"id": "accuracy_factual",
|
|
106
|
-
"question": "Are facts, file paths, and technical details correct?",
|
|
107
|
-
"weight": 0.6
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"id": "accuracy_technical",
|
|
111
|
-
"question": "Are code references and technical concepts correct?",
|
|
112
|
-
"weight": 0.4
|
|
113
|
-
}
|
|
114
|
-
],
|
|
115
|
-
"context_awareness": [
|
|
116
|
-
{
|
|
117
|
-
"id": "context_conversation_state",
|
|
118
|
-
"question": "Does the response reflect current conversation state?",
|
|
119
|
-
"weight": 0.5
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"id": "context_artifact_state",
|
|
123
|
-
"question": "Does the response reflect which files/artifacts were accessed?",
|
|
124
|
-
"weight": 0.5
|
|
125
|
-
}
|
|
126
|
-
],
|
|
127
|
-
"artifact_trail": [
|
|
128
|
-
{
|
|
129
|
-
"id": "artifact_files_created",
|
|
130
|
-
"question": "Does the agent know which files were created?",
|
|
131
|
-
"weight": 0.3
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"id": "artifact_files_modified",
|
|
135
|
-
"question": "Does the agent know which files were modified?",
|
|
136
|
-
"weight": 0.4
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"id": "artifact_key_details",
|
|
140
|
-
"question": "Does the agent remember function names, variable names, error messages?",
|
|
141
|
-
"weight": 0.3
|
|
142
|
-
}
|
|
143
|
-
],
|
|
144
|
-
"completeness": [
|
|
145
|
-
{
|
|
146
|
-
"id": "completeness_coverage",
|
|
147
|
-
"question": "Does the response address all parts of the question?",
|
|
148
|
-
"weight": 0.6
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"id": "completeness_depth",
|
|
152
|
-
"question": "Is sufficient detail provided?",
|
|
153
|
-
"weight": 0.4
|
|
154
|
-
}
|
|
155
|
-
],
|
|
156
|
-
"continuity": [
|
|
157
|
-
{
|
|
158
|
-
"id": "continuity_work_state",
|
|
159
|
-
"question": "Can the agent continue without re-fetching information?",
|
|
160
|
-
"weight": 0.4
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"id": "continuity_todo_state",
|
|
164
|
-
"question": "Does the agent maintain awareness of pending tasks?",
|
|
165
|
-
"weight": 0.3
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
"id": "continuity_reasoning",
|
|
169
|
-
"question": "Does the agent retain rationale behind previous decisions?",
|
|
170
|
-
"weight": 0.3
|
|
171
|
-
}
|
|
172
|
-
],
|
|
173
|
-
"instruction_following": [
|
|
174
|
-
{
|
|
175
|
-
"id": "instruction_format",
|
|
176
|
-
"question": "Does the response follow the requested format?",
|
|
177
|
-
"weight": 0.5
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
"id": "instruction_constraints",
|
|
181
|
-
"question": "Does the response respect stated constraints?",
|
|
182
|
-
"weight": 0.5
|
|
183
|
-
}
|
|
184
|
-
]
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
class ProbeGenerator:
|
|
189
|
-
"""Generate typed probes from conversation history.
|
|
190
|
-
|
|
191
|
-
Use when: automatically deriving evaluation questions from raw
|
|
192
|
-
conversation history at compression points. Extracts facts, file
|
|
193
|
-
operations, and decisions via pattern matching, then produces
|
|
194
|
-
one probe per category.
|
|
195
|
-
|
|
196
|
-
For production systems, replace the regex-based extraction with
|
|
197
|
-
an LLM-based extractor for higher recall.
|
|
198
|
-
"""
|
|
199
|
-
|
|
200
|
-
def __init__(self, conversation_history: str) -> None:
|
|
201
|
-
self.history = conversation_history
|
|
202
|
-
self.extracted_facts = self._extract_facts()
|
|
203
|
-
self.extracted_files = self._extract_files()
|
|
204
|
-
self.extracted_decisions = self._extract_decisions()
|
|
205
|
-
|
|
206
|
-
def generate_probes(self) -> List[Probe]:
|
|
207
|
-
"""Generate all probe types for evaluation.
|
|
208
|
-
|
|
209
|
-
Use when: preparing evaluation inputs at a compression point.
|
|
210
|
-
Returns one probe per category (recall, artifact, continuation,
|
|
211
|
-
decision) based on extractable content from the history.
|
|
212
|
-
"""
|
|
213
|
-
probes: List[Probe] = []
|
|
214
|
-
|
|
215
|
-
# Recall probes
|
|
216
|
-
if self.extracted_facts:
|
|
217
|
-
probes.append(Probe(
|
|
218
|
-
probe_type=ProbeType.RECALL,
|
|
219
|
-
question="What was the original error or issue that started this session?",
|
|
220
|
-
ground_truth=self.extracted_facts.get("original_error"),
|
|
221
|
-
context_reference="session_start"
|
|
222
|
-
))
|
|
223
|
-
|
|
224
|
-
# Artifact probes
|
|
225
|
-
if self.extracted_files:
|
|
226
|
-
probes.append(Probe(
|
|
227
|
-
probe_type=ProbeType.ARTIFACT,
|
|
228
|
-
question="Which files have we modified? Describe what changed in each.",
|
|
229
|
-
ground_truth=json.dumps(self.extracted_files),
|
|
230
|
-
context_reference="file_operations"
|
|
231
|
-
))
|
|
232
|
-
|
|
233
|
-
# Continuation probes
|
|
234
|
-
probes.append(Probe(
|
|
235
|
-
probe_type=ProbeType.CONTINUATION,
|
|
236
|
-
question="What should we do next?",
|
|
237
|
-
ground_truth=self.extracted_facts.get("next_steps"),
|
|
238
|
-
context_reference="task_state"
|
|
239
|
-
))
|
|
240
|
-
|
|
241
|
-
# Decision probes
|
|
242
|
-
if self.extracted_decisions:
|
|
243
|
-
probes.append(Probe(
|
|
244
|
-
probe_type=ProbeType.DECISION,
|
|
245
|
-
question="What key decisions did we make and why?",
|
|
246
|
-
ground_truth=json.dumps(self.extracted_decisions),
|
|
247
|
-
context_reference="decision_points"
|
|
248
|
-
))
|
|
249
|
-
|
|
250
|
-
return probes
|
|
251
|
-
|
|
252
|
-
def _extract_facts(self) -> Dict[str, str]:
|
|
253
|
-
"""Extract factual claims from history."""
|
|
254
|
-
facts: Dict[str, str] = {}
|
|
255
|
-
|
|
256
|
-
# Extract error patterns
|
|
257
|
-
error_patterns = [
|
|
258
|
-
r"error[:\s]+(.+?)(?:\n|$)",
|
|
259
|
-
r"(\d{3})\s+(Unauthorized|Not Found|Internal Server Error)",
|
|
260
|
-
r"exception[:\s]+(.+?)(?:\n|$)"
|
|
261
|
-
]
|
|
262
|
-
|
|
263
|
-
for pattern in error_patterns:
|
|
264
|
-
match = re.search(pattern, self.history, re.IGNORECASE)
|
|
265
|
-
if match:
|
|
266
|
-
facts["original_error"] = match.group(0).strip()
|
|
267
|
-
break
|
|
268
|
-
|
|
269
|
-
# Extract next steps
|
|
270
|
-
next_step_patterns = [
|
|
271
|
-
r"next[:\s]+(.+?)(?:\n|$)",
|
|
272
|
-
r"TODO[:\s]+(.+?)(?:\n|$)",
|
|
273
|
-
r"remaining[:\s]+(.+?)(?:\n|$)"
|
|
274
|
-
]
|
|
275
|
-
|
|
276
|
-
for pattern in next_step_patterns:
|
|
277
|
-
match = re.search(pattern, self.history, re.IGNORECASE)
|
|
278
|
-
if match:
|
|
279
|
-
facts["next_steps"] = match.group(0).strip()
|
|
280
|
-
break
|
|
281
|
-
|
|
282
|
-
return facts
|
|
283
|
-
|
|
284
|
-
def _extract_files(self) -> List[Dict[str, str]]:
|
|
285
|
-
"""Extract file operations from history."""
|
|
286
|
-
files: List[Dict[str, str]] = []
|
|
287
|
-
|
|
288
|
-
# Common file patterns
|
|
289
|
-
file_patterns = [
|
|
290
|
-
r"(?:modified|changed|updated|edited)\s+([^\s]+\.[a-z]+)",
|
|
291
|
-
r"(?:created|added)\s+([^\s]+\.[a-z]+)",
|
|
292
|
-
r"(?:read|examined|opened)\s+([^\s]+\.[a-z]+)"
|
|
293
|
-
]
|
|
294
|
-
|
|
295
|
-
for pattern in file_patterns:
|
|
296
|
-
matches = re.findall(pattern, self.history, re.IGNORECASE)
|
|
297
|
-
for match in matches:
|
|
298
|
-
if match not in [f["path"] for f in files]:
|
|
299
|
-
files.append({
|
|
300
|
-
"path": match,
|
|
301
|
-
"operation": "modified" if "modif" in pattern else "created" if "creat" in pattern else "read"
|
|
302
|
-
})
|
|
303
|
-
|
|
304
|
-
return files
|
|
305
|
-
|
|
306
|
-
def _extract_decisions(self) -> List[Dict[str, str]]:
|
|
307
|
-
"""Extract decision points from history."""
|
|
308
|
-
decisions: List[Dict[str, str]] = []
|
|
309
|
-
|
|
310
|
-
decision_patterns = [
|
|
311
|
-
r"decided to\s+(.+?)(?:\n|$)",
|
|
312
|
-
r"chose\s+(.+?)(?:\n|$)",
|
|
313
|
-
r"going with\s+(.+?)(?:\n|$)",
|
|
314
|
-
r"will use\s+(.+?)(?:\n|$)"
|
|
315
|
-
]
|
|
316
|
-
|
|
317
|
-
for pattern in decision_patterns:
|
|
318
|
-
matches = re.findall(pattern, self.history, re.IGNORECASE)
|
|
319
|
-
for match in matches:
|
|
320
|
-
decisions.append({
|
|
321
|
-
"decision": match.strip(),
|
|
322
|
-
"context": pattern.split("\\s+")[0]
|
|
323
|
-
})
|
|
324
|
-
|
|
325
|
-
return decisions[:5] # Limit to 5 decisions
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
class CompressionEvaluator:
|
|
329
|
-
"""Evaluate compression quality using probes and LLM judge.
|
|
330
|
-
|
|
331
|
-
Use when: comparing compression methods or validating that a specific
|
|
332
|
-
compression pass preserved critical information. Scores responses
|
|
333
|
-
across six dimensions (accuracy, context awareness, artifact trail,
|
|
334
|
-
completeness, continuity, instruction following) and produces an
|
|
335
|
-
aggregate quality score.
|
|
336
|
-
|
|
337
|
-
The evaluate() method is the primary entry point. Call it once per
|
|
338
|
-
probe, then call get_summary() to retrieve aggregated results.
|
|
339
|
-
"""
|
|
340
|
-
|
|
341
|
-
def __init__(self, model: str = "gpt-5.2") -> None:
|
|
342
|
-
self.model = model
|
|
343
|
-
self.results: List[EvaluationResult] = []
|
|
344
|
-
|
|
345
|
-
def evaluate(self,
|
|
346
|
-
probe: Probe,
|
|
347
|
-
response: str,
|
|
348
|
-
compressed_context: str) -> EvaluationResult:
|
|
349
|
-
"""Evaluate a single probe response against the rubric.
|
|
350
|
-
|
|
351
|
-
Use when: scoring how well a model's response (given compressed
|
|
352
|
-
context) answers a probe question. Returns per-criterion scores,
|
|
353
|
-
per-dimension aggregates, and an overall score.
|
|
354
|
-
|
|
355
|
-
Args:
|
|
356
|
-
probe: The probe question with expected ground truth.
|
|
357
|
-
response: The model's response to evaluate.
|
|
358
|
-
compressed_context: The compressed context that was provided
|
|
359
|
-
to the model when generating the response.
|
|
360
|
-
|
|
361
|
-
Returns:
|
|
362
|
-
EvaluationResult with scores and reasoning across all
|
|
363
|
-
applicable dimensions.
|
|
364
|
-
"""
|
|
365
|
-
# Get relevant criteria based on probe type
|
|
366
|
-
criteria = self._get_criteria_for_probe(probe.probe_type)
|
|
367
|
-
|
|
368
|
-
# Evaluate each criterion
|
|
369
|
-
criterion_results: List[CriterionResult] = []
|
|
370
|
-
for criterion in criteria:
|
|
371
|
-
result = self._evaluate_criterion(
|
|
372
|
-
criterion,
|
|
373
|
-
probe,
|
|
374
|
-
response,
|
|
375
|
-
compressed_context
|
|
376
|
-
)
|
|
377
|
-
criterion_results.append(result)
|
|
378
|
-
|
|
379
|
-
# Calculate dimension scores
|
|
380
|
-
dimension_scores = self._calculate_dimension_scores(criterion_results)
|
|
381
|
-
|
|
382
|
-
# Calculate aggregate score
|
|
383
|
-
aggregate_score = sum(dimension_scores.values()) / len(dimension_scores) if dimension_scores else 0.0
|
|
384
|
-
|
|
385
|
-
result = EvaluationResult(
|
|
386
|
-
probe=probe,
|
|
387
|
-
response=response,
|
|
388
|
-
criterion_results=criterion_results,
|
|
389
|
-
aggregate_score=aggregate_score,
|
|
390
|
-
dimension_scores=dimension_scores
|
|
391
|
-
)
|
|
392
|
-
|
|
393
|
-
self.results.append(result)
|
|
394
|
-
return result
|
|
395
|
-
|
|
396
|
-
def get_summary(self) -> Dict:
|
|
397
|
-
"""Get summary of all evaluation results.
|
|
398
|
-
|
|
399
|
-
Use when: all probes have been evaluated and an aggregate
|
|
400
|
-
report is needed to compare methods or make a go/no-go
|
|
401
|
-
decision on a compression strategy.
|
|
402
|
-
|
|
403
|
-
Returns:
|
|
404
|
-
Dictionary with total evaluations, average score,
|
|
405
|
-
per-dimension averages, and weakest/strongest dimensions.
|
|
406
|
-
"""
|
|
407
|
-
if not self.results:
|
|
408
|
-
return {"error": "No evaluations performed"}
|
|
409
|
-
|
|
410
|
-
avg_score = sum(r.aggregate_score for r in self.results) / len(self.results)
|
|
411
|
-
|
|
412
|
-
# Average dimension scores
|
|
413
|
-
dimension_totals: Dict[str, float] = {}
|
|
414
|
-
dimension_counts: Dict[str, int] = {}
|
|
415
|
-
|
|
416
|
-
for result in self.results:
|
|
417
|
-
for dim, score in result.dimension_scores.items():
|
|
418
|
-
dimension_totals[dim] = dimension_totals.get(dim, 0) + score
|
|
419
|
-
dimension_counts[dim] = dimension_counts.get(dim, 0) + 1
|
|
420
|
-
|
|
421
|
-
avg_dimensions = {
|
|
422
|
-
dim: dimension_totals[dim] / dimension_counts[dim]
|
|
423
|
-
for dim in dimension_totals
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
return {
|
|
427
|
-
"total_evaluations": len(self.results),
|
|
428
|
-
"average_score": avg_score,
|
|
429
|
-
"dimension_averages": avg_dimensions,
|
|
430
|
-
"weakest_dimension": min(avg_dimensions, key=avg_dimensions.get) if avg_dimensions else None,
|
|
431
|
-
"strongest_dimension": max(avg_dimensions, key=avg_dimensions.get) if avg_dimensions else None,
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
def _get_criteria_for_probe(self, probe_type: ProbeType) -> List[Dict]:
|
|
435
|
-
"""Get relevant criteria for probe type."""
|
|
436
|
-
criteria: List[Dict] = []
|
|
437
|
-
|
|
438
|
-
# All probes get accuracy and completeness
|
|
439
|
-
criteria.extend(RUBRIC_CRITERIA["accuracy"])
|
|
440
|
-
criteria.extend(RUBRIC_CRITERIA["completeness"])
|
|
441
|
-
|
|
442
|
-
# Add type-specific criteria
|
|
443
|
-
if probe_type == ProbeType.ARTIFACT:
|
|
444
|
-
criteria.extend(RUBRIC_CRITERIA["artifact_trail"])
|
|
445
|
-
elif probe_type == ProbeType.CONTINUATION:
|
|
446
|
-
criteria.extend(RUBRIC_CRITERIA["continuity"])
|
|
447
|
-
elif probe_type == ProbeType.RECALL:
|
|
448
|
-
criteria.extend(RUBRIC_CRITERIA["context_awareness"])
|
|
449
|
-
elif probe_type == ProbeType.DECISION:
|
|
450
|
-
criteria.extend(RUBRIC_CRITERIA["context_awareness"])
|
|
451
|
-
criteria.extend(RUBRIC_CRITERIA["continuity"])
|
|
452
|
-
|
|
453
|
-
criteria.extend(RUBRIC_CRITERIA["instruction_following"])
|
|
454
|
-
|
|
455
|
-
return criteria
|
|
456
|
-
|
|
457
|
-
def _evaluate_criterion(self,
|
|
458
|
-
criterion: Dict,
|
|
459
|
-
probe: Probe,
|
|
460
|
-
response: str,
|
|
461
|
-
context: str) -> CriterionResult:
|
|
462
|
-
"""
|
|
463
|
-
Evaluate a single criterion using LLM judge.
|
|
464
|
-
|
|
465
|
-
PRODUCTION NOTE: This is a stub implementation.
|
|
466
|
-
Production systems should call the actual LLM API:
|
|
467
|
-
|
|
468
|
-
```python
|
|
469
|
-
result = openai.chat.completions.create(
|
|
470
|
-
model="gpt-5.2",
|
|
471
|
-
messages=[
|
|
472
|
-
{"role": "system", "content": JUDGE_SYSTEM_PROMPT},
|
|
473
|
-
{"role": "user", "content": self._format_judge_input(criterion, probe, response, context)}
|
|
474
|
-
]
|
|
475
|
-
)
|
|
476
|
-
return self._parse_judge_output(result)
|
|
477
|
-
```
|
|
478
|
-
"""
|
|
479
|
-
# Stub implementation - in production, call LLM judge
|
|
480
|
-
score = self._heuristic_score(criterion, response, probe.ground_truth)
|
|
481
|
-
reasoning = f"Evaluated {criterion['id']} based on response content."
|
|
482
|
-
|
|
483
|
-
return CriterionResult(
|
|
484
|
-
criterion_id=criterion["id"],
|
|
485
|
-
score=score,
|
|
486
|
-
reasoning=reasoning
|
|
487
|
-
)
|
|
488
|
-
|
|
489
|
-
def _heuristic_score(self,
|
|
490
|
-
criterion: Dict,
|
|
491
|
-
response: str,
|
|
492
|
-
ground_truth: Optional[str]) -> float:
|
|
493
|
-
"""
|
|
494
|
-
Heuristic scoring for demonstration.
|
|
495
|
-
|
|
496
|
-
Production systems should use LLM judge instead.
|
|
497
|
-
"""
|
|
498
|
-
score = 3.0 # Base score
|
|
499
|
-
|
|
500
|
-
# Adjust based on response length and content
|
|
501
|
-
if len(response) < 50:
|
|
502
|
-
score -= 1.0 # Too short
|
|
503
|
-
elif len(response) > 500:
|
|
504
|
-
score += 0.5 # Detailed
|
|
505
|
-
|
|
506
|
-
# Check for technical content
|
|
507
|
-
if any(ext in response for ext in [".ts", ".py", ".js", ".md"]):
|
|
508
|
-
score += 0.5 # Contains file references
|
|
509
|
-
|
|
510
|
-
overlap_ratio = self._ground_truth_overlap_ratio(response, ground_truth)
|
|
511
|
-
if overlap_ratio >= 0.75:
|
|
512
|
-
score += 1.0
|
|
513
|
-
elif overlap_ratio >= 0.4:
|
|
514
|
-
score += 0.5
|
|
515
|
-
elif ground_truth:
|
|
516
|
-
score -= 0.5
|
|
517
|
-
|
|
518
|
-
return min(5.0, max(0.0, score))
|
|
519
|
-
|
|
520
|
-
def _ground_truth_overlap_ratio(self,
|
|
521
|
-
response: str,
|
|
522
|
-
ground_truth: Optional[str]) -> float:
|
|
523
|
-
if not ground_truth:
|
|
524
|
-
return 0.0
|
|
525
|
-
|
|
526
|
-
terms = self._extract_ground_truth_terms(ground_truth)
|
|
527
|
-
if not terms:
|
|
528
|
-
return 1.0 if ground_truth.lower() in response.lower() else 0.0
|
|
529
|
-
|
|
530
|
-
response_lower = response.lower()
|
|
531
|
-
matches = sum(1 for term in terms if term in response_lower)
|
|
532
|
-
return matches / len(terms)
|
|
533
|
-
|
|
534
|
-
def _extract_ground_truth_terms(self, ground_truth: str) -> List[str]:
|
|
535
|
-
try:
|
|
536
|
-
parsed = json.loads(ground_truth)
|
|
537
|
-
except json.JSONDecodeError:
|
|
538
|
-
return [ground_truth.lower()] if ground_truth.strip() else []
|
|
539
|
-
|
|
540
|
-
terms: List[str] = []
|
|
541
|
-
|
|
542
|
-
def collect(value) -> None:
|
|
543
|
-
if isinstance(value, str):
|
|
544
|
-
normalized = value.strip().lower()
|
|
545
|
-
if normalized:
|
|
546
|
-
terms.append(normalized)
|
|
547
|
-
elif isinstance(value, dict):
|
|
548
|
-
for nested in value.values():
|
|
549
|
-
collect(nested)
|
|
550
|
-
elif isinstance(value, list):
|
|
551
|
-
for nested in value:
|
|
552
|
-
collect(nested)
|
|
553
|
-
|
|
554
|
-
collect(parsed)
|
|
555
|
-
return list(dict.fromkeys(terms))
|
|
556
|
-
|
|
557
|
-
def _calculate_dimension_scores(self,
|
|
558
|
-
criterion_results: List[CriterionResult]) -> Dict[str, float]:
|
|
559
|
-
"""Calculate dimension scores from criterion results."""
|
|
560
|
-
dimension_scores: Dict[str, float] = {}
|
|
561
|
-
|
|
562
|
-
for dimension, criteria in RUBRIC_CRITERIA.items():
|
|
563
|
-
criterion_ids = [c["id"] for c in criteria]
|
|
564
|
-
relevant_results = [
|
|
565
|
-
r for r in criterion_results
|
|
566
|
-
if r.criterion_id in criterion_ids
|
|
567
|
-
]
|
|
568
|
-
|
|
569
|
-
if relevant_results:
|
|
570
|
-
# Weighted average
|
|
571
|
-
total_weight = sum(
|
|
572
|
-
c["weight"] for c in criteria
|
|
573
|
-
if c["id"] in [r.criterion_id for r in relevant_results]
|
|
574
|
-
)
|
|
575
|
-
weighted_sum = sum(
|
|
576
|
-
r.score * next(c["weight"] for c in criteria if c["id"] == r.criterion_id)
|
|
577
|
-
for r in relevant_results
|
|
578
|
-
)
|
|
579
|
-
dimension_scores[dimension] = weighted_sum / total_weight if total_weight > 0 else 0.0
|
|
580
|
-
|
|
581
|
-
return dimension_scores
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
class StructuredSummarizer:
|
|
585
|
-
"""Generate structured summaries with explicit sections.
|
|
586
|
-
|
|
587
|
-
Use when: implementing anchored iterative summarization for
|
|
588
|
-
long-running coding sessions. Maintains a persistent summary
|
|
589
|
-
with dedicated sections for session intent, file modifications,
|
|
590
|
-
decisions, current state, and next steps.
|
|
591
|
-
|
|
592
|
-
Call update_from_span() each time a new content span is truncated.
|
|
593
|
-
The summarizer merges new information into existing sections rather
|
|
594
|
-
than regenerating, preventing cumulative detail loss.
|
|
595
|
-
"""
|
|
596
|
-
|
|
597
|
-
TEMPLATE = """## Session Intent
|
|
598
|
-
{intent}
|
|
599
|
-
|
|
600
|
-
## Files Modified
|
|
601
|
-
{files_modified}
|
|
602
|
-
|
|
603
|
-
## Files Read (Not Modified)
|
|
604
|
-
{files_read}
|
|
605
|
-
|
|
606
|
-
## Decisions Made
|
|
607
|
-
{decisions}
|
|
608
|
-
|
|
609
|
-
## Current State
|
|
610
|
-
{current_state}
|
|
611
|
-
|
|
612
|
-
## Next Steps
|
|
613
|
-
{next_steps}
|
|
614
|
-
"""
|
|
615
|
-
|
|
616
|
-
def __init__(self) -> None:
|
|
617
|
-
self.sections: Dict = {
|
|
618
|
-
"intent": "",
|
|
619
|
-
"files_modified": [],
|
|
620
|
-
"files_read": [],
|
|
621
|
-
"decisions": [],
|
|
622
|
-
"current_state": "",
|
|
623
|
-
"next_steps": []
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
def update_from_span(self, new_content: str) -> str:
|
|
627
|
-
"""Update summary from newly truncated content span.
|
|
628
|
-
|
|
629
|
-
Use when: a compression trigger fires and a portion of
|
|
630
|
-
conversation history is about to be discarded. Pass the
|
|
631
|
-
content that will be truncated; the summarizer extracts
|
|
632
|
-
structured information and merges it with prior state.
|
|
633
|
-
|
|
634
|
-
Args:
|
|
635
|
-
new_content: The conversation span being truncated.
|
|
636
|
-
|
|
637
|
-
Returns:
|
|
638
|
-
Formatted summary string with all sections populated.
|
|
639
|
-
"""
|
|
640
|
-
# Extract information from new content
|
|
641
|
-
new_info = self._extract_from_content(new_content)
|
|
642
|
-
|
|
643
|
-
# Merge with existing sections
|
|
644
|
-
self._merge_sections(new_info)
|
|
645
|
-
|
|
646
|
-
# Generate formatted summary
|
|
647
|
-
return self._format_summary()
|
|
648
|
-
|
|
649
|
-
def _extract_from_content(self, content: str) -> Dict:
|
|
650
|
-
"""Extract structured information from content."""
|
|
651
|
-
extracted: Dict = {
|
|
652
|
-
"intent": "",
|
|
653
|
-
"files_modified": [],
|
|
654
|
-
"files_read": [],
|
|
655
|
-
"decisions": [],
|
|
656
|
-
"current_state": "",
|
|
657
|
-
"next_steps": []
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
# Extract file modifications
|
|
661
|
-
mod_pattern = r"(?:modified|changed|updated|fixed)\s+([^\s]+\.[a-z]+)[:\s]*(.+?)(?:\n|$)"
|
|
662
|
-
for match in re.finditer(mod_pattern, content, re.IGNORECASE):
|
|
663
|
-
extracted["files_modified"].append({
|
|
664
|
-
"path": match.group(1),
|
|
665
|
-
"change": match.group(2).strip()[:100]
|
|
666
|
-
})
|
|
667
|
-
|
|
668
|
-
# Extract file reads
|
|
669
|
-
read_pattern = r"(?:read|examined|opened|checked)\s+([^\s]+\.[a-z]+)"
|
|
670
|
-
for match in re.finditer(read_pattern, content, re.IGNORECASE):
|
|
671
|
-
file_path = match.group(1)
|
|
672
|
-
if file_path not in [f["path"] for f in extracted["files_modified"]]:
|
|
673
|
-
extracted["files_read"].append(file_path)
|
|
674
|
-
|
|
675
|
-
# Extract decisions
|
|
676
|
-
decision_pattern = r"(?:decided|chose|going with|will use)\s+(.+?)(?:\n|$)"
|
|
677
|
-
for match in re.finditer(decision_pattern, content, re.IGNORECASE):
|
|
678
|
-
extracted["decisions"].append(match.group(1).strip()[:150])
|
|
679
|
-
|
|
680
|
-
return extracted
|
|
681
|
-
|
|
682
|
-
def _merge_sections(self, new_info: Dict) -> None:
|
|
683
|
-
"""Merge new information with existing sections."""
|
|
684
|
-
# Update intent if empty
|
|
685
|
-
if new_info["intent"] and not self.sections["intent"]:
|
|
686
|
-
self.sections["intent"] = new_info["intent"]
|
|
687
|
-
|
|
688
|
-
# Merge file lists (deduplicate by path)
|
|
689
|
-
existing_mod_paths = [f["path"] for f in self.sections["files_modified"]]
|
|
690
|
-
for file_info in new_info["files_modified"]:
|
|
691
|
-
if file_info["path"] not in existing_mod_paths:
|
|
692
|
-
self.sections["files_modified"].append(file_info)
|
|
693
|
-
|
|
694
|
-
# Merge read files
|
|
695
|
-
for file_path in new_info["files_read"]:
|
|
696
|
-
if file_path not in self.sections["files_read"]:
|
|
697
|
-
self.sections["files_read"].append(file_path)
|
|
698
|
-
|
|
699
|
-
# Append decisions
|
|
700
|
-
self.sections["decisions"].extend(new_info["decisions"])
|
|
701
|
-
|
|
702
|
-
# Update current state (latest wins)
|
|
703
|
-
if new_info["current_state"]:
|
|
704
|
-
self.sections["current_state"] = new_info["current_state"]
|
|
705
|
-
|
|
706
|
-
# Merge next steps
|
|
707
|
-
self.sections["next_steps"].extend(new_info["next_steps"])
|
|
708
|
-
|
|
709
|
-
def _format_summary(self) -> str:
|
|
710
|
-
"""Format sections into summary string."""
|
|
711
|
-
files_modified_str = "\n".join(
|
|
712
|
-
f"- {f['path']}: {f['change']}"
|
|
713
|
-
for f in self.sections["files_modified"]
|
|
714
|
-
) or "None"
|
|
715
|
-
|
|
716
|
-
files_read_str = "\n".join(
|
|
717
|
-
f"- {f}" for f in self.sections["files_read"]
|
|
718
|
-
) or "None"
|
|
719
|
-
|
|
720
|
-
decisions_str = "\n".join(
|
|
721
|
-
f"- {d}" for d in self.sections["decisions"][-5:] # Keep last 5
|
|
722
|
-
) or "None"
|
|
723
|
-
|
|
724
|
-
next_steps_str = "\n".join(
|
|
725
|
-
f"{i+1}. {s}" for i, s in enumerate(self.sections["next_steps"][-5:])
|
|
726
|
-
) or "None"
|
|
727
|
-
|
|
728
|
-
return self.TEMPLATE.format(
|
|
729
|
-
intent=self.sections["intent"] or "Not specified",
|
|
730
|
-
files_modified=files_modified_str,
|
|
731
|
-
files_read=files_read_str,
|
|
732
|
-
decisions=decisions_str,
|
|
733
|
-
current_state=self.sections["current_state"] or "In progress",
|
|
734
|
-
next_steps=next_steps_str
|
|
735
|
-
)
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
def evaluate_compression_quality(
|
|
739
|
-
original_history: str,
|
|
740
|
-
compressed_context: str,
|
|
741
|
-
model_response_fn: Callable[[str, str], str],
|
|
742
|
-
) -> Dict:
|
|
743
|
-
"""Evaluate compression quality for a conversation end-to-end.
|
|
744
|
-
|
|
745
|
-
Use when: running a one-shot quality check on a compression pass.
|
|
746
|
-
Generates probes from original history, collects model responses
|
|
747
|
-
using the compressed context, evaluates each response, and returns
|
|
748
|
-
a scored summary with actionable recommendations.
|
|
749
|
-
|
|
750
|
-
Args:
|
|
751
|
-
original_history: The full conversation before compression.
|
|
752
|
-
compressed_context: The compressed version to evaluate.
|
|
753
|
-
model_response_fn: Callable that takes (compressed_context, question)
|
|
754
|
-
and returns the model's response string.
|
|
755
|
-
|
|
756
|
-
Returns:
|
|
757
|
-
Dictionary with total evaluations, average score, per-dimension
|
|
758
|
-
averages, weakest/strongest dimensions, and recommendations list.
|
|
759
|
-
"""
|
|
760
|
-
# Generate probes
|
|
761
|
-
generator = ProbeGenerator(original_history)
|
|
762
|
-
probes = generator.generate_probes()
|
|
763
|
-
|
|
764
|
-
# Evaluate each probe
|
|
765
|
-
evaluator = CompressionEvaluator()
|
|
766
|
-
|
|
767
|
-
for probe in probes:
|
|
768
|
-
# Get model response using compressed context
|
|
769
|
-
response = model_response_fn(compressed_context, probe.question)
|
|
770
|
-
|
|
771
|
-
# Evaluate response
|
|
772
|
-
evaluator.evaluate(probe, response, compressed_context)
|
|
773
|
-
|
|
774
|
-
# Get summary
|
|
775
|
-
summary = evaluator.get_summary()
|
|
776
|
-
|
|
777
|
-
# Add recommendations
|
|
778
|
-
summary["recommendations"] = []
|
|
779
|
-
|
|
780
|
-
if summary.get("weakest_dimension") == "artifact_trail":
|
|
781
|
-
summary["recommendations"].append(
|
|
782
|
-
"Consider implementing separate artifact tracking outside compression"
|
|
783
|
-
)
|
|
784
|
-
|
|
785
|
-
if summary.get("average_score", 0) < 3.5:
|
|
786
|
-
summary["recommendations"].append(
|
|
787
|
-
"Compression quality is below threshold - consider less aggressive compression"
|
|
788
|
-
)
|
|
789
|
-
|
|
790
|
-
return summary
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
if __name__ == "__main__":
|
|
794
|
-
# Demo: generate probes and evaluate a sample compression
|
|
795
|
-
|
|
796
|
-
sample_history = """
|
|
797
|
-
User reported error: 401 Unauthorized on /api/auth/login endpoint.
|
|
798
|
-
Examined auth.controller.ts - JWT generation looks correct.
|
|
799
|
-
Examined middleware/cors.ts - no issues found.
|
|
800
|
-
Modified config/redis.ts: Fixed connection pooling configuration.
|
|
801
|
-
Modified services/session.service.ts: Added retry logic for transient failures.
|
|
802
|
-
Decided to use Redis connection pool instead of per-request connections.
|
|
803
|
-
Modified tests/auth.test.ts: Updated mock setup for new config.
|
|
804
|
-
14 tests passing, 2 failing (mock setup issues).
|
|
805
|
-
Next: Fix remaining test failures in session service mocks.
|
|
806
|
-
"""
|
|
807
|
-
|
|
808
|
-
sample_compressed = """
|
|
809
|
-
## Session Intent
|
|
810
|
-
Debug 401 Unauthorized on /api/auth/login.
|
|
811
|
-
|
|
812
|
-
## Root Cause
|
|
813
|
-
Stale Redis connection in session store.
|
|
814
|
-
|
|
815
|
-
## Files Modified
|
|
816
|
-
- config/redis.ts: Fixed connection pooling
|
|
817
|
-
- services/session.service.ts: Added retry logic
|
|
818
|
-
- tests/auth.test.ts: Updated mock setup
|
|
819
|
-
|
|
820
|
-
## Test Status
|
|
821
|
-
14 passing, 2 failing
|
|
822
|
-
|
|
823
|
-
## Next Steps
|
|
824
|
-
1. Fix remaining test failures
|
|
825
|
-
"""
|
|
826
|
-
|
|
827
|
-
# Stub model response function
|
|
828
|
-
def mock_model_response(context: str, question: str) -> str:
|
|
829
|
-
if "error" in question.lower():
|
|
830
|
-
return "The original error was a 401 Unauthorized on /api/auth/login."
|
|
831
|
-
if "files" in question.lower():
|
|
832
|
-
return "Modified config/redis.ts, services/session.service.ts, tests/auth.test.ts."
|
|
833
|
-
if "next" in question.lower():
|
|
834
|
-
return "Fix remaining test failures in session service mocks."
|
|
835
|
-
if "decision" in question.lower():
|
|
836
|
-
return "Decided to use Redis connection pool instead of per-request connections."
|
|
837
|
-
return "No specific information available."
|
|
838
|
-
|
|
839
|
-
# Run evaluation
|
|
840
|
-
result = evaluate_compression_quality(
|
|
841
|
-
original_history=sample_history,
|
|
842
|
-
compressed_context=sample_compressed,
|
|
843
|
-
model_response_fn=mock_model_response,
|
|
844
|
-
)
|
|
845
|
-
|
|
846
|
-
print("=== Compression Quality Evaluation ===")
|
|
847
|
-
print(f"Total evaluations: {result['total_evaluations']}")
|
|
848
|
-
print(f"Average score: {result['average_score']:.2f}")
|
|
849
|
-
print()
|
|
850
|
-
print("Dimension averages:")
|
|
851
|
-
for dim, score in result.get("dimension_averages", {}).items():
|
|
852
|
-
print(f" {dim}: {score:.2f}")
|
|
853
|
-
print()
|
|
854
|
-
print(f"Weakest dimension: {result.get('weakest_dimension')}")
|
|
855
|
-
print(f"Strongest dimension: {result.get('strongest_dimension')}")
|
|
856
|
-
print()
|
|
857
|
-
if result.get("recommendations"):
|
|
858
|
-
print("Recommendations:")
|
|
859
|
-
for rec in result["recommendations"]:
|
|
860
|
-
print(f" - {rec}")
|
|
861
|
-
else:
|
|
862
|
-
print("No recommendations - compression quality looks acceptable.")
|