@cairn-tool/cairn 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.markdownlintrc +7 -0
- package/LICENSE +21 -0
- package/README.md +1431 -0
- package/dist/agent/audit/baseline.d.ts +69 -0
- package/dist/agent/audit/baseline.js +128 -0
- package/dist/agent/audit/baseline.js.map +1 -0
- package/dist/agent/audit/index.d.ts +126 -0
- package/dist/agent/audit/index.js +625 -0
- package/dist/agent/audit/index.js.map +1 -0
- package/dist/agent/import/detect.d.ts +49 -0
- package/dist/agent/import/detect.js +159 -0
- package/dist/agent/import/detect.js.map +1 -0
- package/dist/agent/import/normalize.d.ts +72 -0
- package/dist/agent/import/normalize.js +475 -0
- package/dist/agent/import/normalize.js.map +1 -0
- package/dist/agent/install/index.d.ts +211 -0
- package/dist/agent/install/index.js +907 -0
- package/dist/agent/install/index.js.map +1 -0
- package/dist/agent/manifest.d.ts +75 -0
- package/dist/agent/manifest.js +210 -0
- package/dist/agent/manifest.js.map +1 -0
- package/dist/agent/marketplace/index.d.ts +69 -0
- package/dist/agent/marketplace/index.js +212 -0
- package/dist/agent/marketplace/index.js.map +1 -0
- package/dist/agent/marketplace/spec.d.ts +48 -0
- package/dist/agent/marketplace/spec.js +237 -0
- package/dist/agent/marketplace/spec.js.map +1 -0
- package/dist/agent/output.d.ts +36 -0
- package/dist/agent/output.js +56 -0
- package/dist/agent/output.js.map +1 -0
- package/dist/agent/overlays.d.ts +38 -0
- package/dist/agent/overlays.js +223 -0
- package/dist/agent/overlays.js.map +1 -0
- package/dist/agent/package/index.d.ts +105 -0
- package/dist/agent/package/index.js +339 -0
- package/dist/agent/package/index.js.map +1 -0
- package/dist/agent/package/tar.d.ts +36 -0
- package/dist/agent/package/tar.js +137 -0
- package/dist/agent/package/tar.js.map +1 -0
- package/dist/agent/parser.d.ts +13 -0
- package/dist/agent/parser.js +559 -0
- package/dist/agent/parser.js.map +1 -0
- package/dist/agent/render.d.ts +16 -0
- package/dist/agent/render.js +721 -0
- package/dist/agent/render.js.map +1 -0
- package/dist/agent/sarif.d.ts +18 -0
- package/dist/agent/sarif.js +56 -0
- package/dist/agent/sarif.js.map +1 -0
- package/dist/agent/scaffold.d.ts +86 -0
- package/dist/agent/scaffold.js +250 -0
- package/dist/agent/scaffold.js.map +1 -0
- package/dist/agent/targets/antigravity.d.ts +17 -0
- package/dist/agent/targets/antigravity.js +218 -0
- package/dist/agent/targets/antigravity.js.map +1 -0
- package/dist/agent/targets/claude-code.d.ts +2 -0
- package/dist/agent/targets/claude-code.js +220 -0
- package/dist/agent/targets/claude-code.js.map +1 -0
- package/dist/agent/targets/codex.d.ts +2 -0
- package/dist/agent/targets/codex.js +212 -0
- package/dist/agent/targets/codex.js.map +1 -0
- package/dist/agent/targets/cursor.d.ts +2 -0
- package/dist/agent/targets/cursor.js +210 -0
- package/dist/agent/targets/cursor.js.map +1 -0
- package/dist/agent/targets/index.d.ts +31 -0
- package/dist/agent/targets/index.js +64 -0
- package/dist/agent/targets/index.js.map +1 -0
- package/dist/agent/targets/opencode.d.ts +15 -0
- package/dist/agent/targets/opencode.js +215 -0
- package/dist/agent/targets/opencode.js.map +1 -0
- package/dist/agent/targets/schema.d.ts +315 -0
- package/dist/agent/targets/schema.js +179 -0
- package/dist/agent/targets/schema.js.map +1 -0
- package/dist/agent/test/assert.d.ts +46 -0
- package/dist/agent/test/assert.js +288 -0
- package/dist/agent/test/assert.js.map +1 -0
- package/dist/agent/test/index.d.ts +73 -0
- package/dist/agent/test/index.js +181 -0
- package/dist/agent/test/index.js.map +1 -0
- package/dist/agent/test/schema.d.ts +81 -0
- package/dist/agent/test/schema.js +235 -0
- package/dist/agent/test/schema.js.map +1 -0
- package/dist/agent/types.d.ts +204 -0
- package/dist/agent/types.js +11 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/upgrade.d.ts +29 -0
- package/dist/agent/upgrade.js +72 -0
- package/dist/agent/upgrade.js.map +1 -0
- package/dist/agent/writer.d.ts +30 -0
- package/dist/agent/writer.js +73 -0
- package/dist/agent/writer.js.map +1 -0
- package/dist/archive/db.d.ts +20 -0
- package/dist/archive/db.js +98 -0
- package/dist/archive/db.js.map +1 -0
- package/dist/archive/progress.d.ts +62 -0
- package/dist/archive/progress.js +151 -0
- package/dist/archive/progress.js.map +1 -0
- package/dist/archive/query.d.ts +86 -0
- package/dist/archive/query.js +241 -0
- package/dist/archive/query.js.map +1 -0
- package/dist/archive/run.d.ts +91 -0
- package/dist/archive/run.js +331 -0
- package/dist/archive/run.js.map +1 -0
- package/dist/archive/segments.d.ts +89 -0
- package/dist/archive/segments.js +144 -0
- package/dist/archive/segments.js.map +1 -0
- package/dist/archive/sets.d.ts +58 -0
- package/dist/archive/sets.js +344 -0
- package/dist/archive/sets.js.map +1 -0
- package/dist/archive/tar-read.d.ts +35 -0
- package/dist/archive/tar-read.js +90 -0
- package/dist/archive/tar-read.js.map +1 -0
- package/dist/audit-baseline.d.ts +66 -0
- package/dist/audit-baseline.js +124 -0
- package/dist/audit-baseline.js.map +1 -0
- package/dist/automation.d.ts +16 -0
- package/dist/automation.js +38 -0
- package/dist/automation.js.map +1 -0
- package/dist/backlinks.d.ts +15 -0
- package/dist/backlinks.js +30 -0
- package/dist/backlinks.js.map +1 -0
- package/dist/checkers/katex.d.ts +3 -0
- package/dist/checkers/katex.js +71 -0
- package/dist/checkers/katex.js.map +1 -0
- package/dist/checkers/markdown-lint.d.ts +28 -0
- package/dist/checkers/markdown-lint.js +53 -0
- package/dist/checkers/markdown-lint.js.map +1 -0
- package/dist/checkers/mermaid.d.ts +6 -0
- package/dist/checkers/mermaid.js +53 -0
- package/dist/checkers/mermaid.js.map +1 -0
- package/dist/checkers/references.d.ts +3 -0
- package/dist/checkers/references.js +55 -0
- package/dist/checkers/references.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +1117 -0
- package/dist/cli.js.map +1 -0
- package/dist/command-result.d.ts +6 -0
- package/dist/command-result.js +13 -0
- package/dist/command-result.js.map +1 -0
- package/dist/commands/agent-audit.d.ts +21 -0
- package/dist/commands/agent-audit.js +119 -0
- package/dist/commands/agent-audit.js.map +1 -0
- package/dist/commands/agent-doctor.d.ts +25 -0
- package/dist/commands/agent-doctor.js +217 -0
- package/dist/commands/agent-doctor.js.map +1 -0
- package/dist/commands/agent-import.d.ts +21 -0
- package/dist/commands/agent-import.js +212 -0
- package/dist/commands/agent-import.js.map +1 -0
- package/dist/commands/agent-install.d.ts +18 -0
- package/dist/commands/agent-install.js +59 -0
- package/dist/commands/agent-install.js.map +1 -0
- package/dist/commands/agent-installed.d.ts +6 -0
- package/dist/commands/agent-installed.js +17 -0
- package/dist/commands/agent-installed.js.map +1 -0
- package/dist/commands/agent-marketplace.d.ts +11 -0
- package/dist/commands/agent-marketplace.js +178 -0
- package/dist/commands/agent-marketplace.js.map +1 -0
- package/dist/commands/agent-package.d.ts +16 -0
- package/dist/commands/agent-package.js +159 -0
- package/dist/commands/agent-package.js.map +1 -0
- package/dist/commands/agent-scaffold.d.ts +17 -0
- package/dist/commands/agent-scaffold.js +181 -0
- package/dist/commands/agent-scaffold.js.map +1 -0
- package/dist/commands/agent-specs.d.ts +7 -0
- package/dist/commands/agent-specs.js +20 -0
- package/dist/commands/agent-specs.js.map +1 -0
- package/dist/commands/agent-test.d.ts +21 -0
- package/dist/commands/agent-test.js +50 -0
- package/dist/commands/agent-test.js.map +1 -0
- package/dist/commands/agent-uninstall.d.ts +6 -0
- package/dist/commands/agent-uninstall.js +45 -0
- package/dist/commands/agent-uninstall.js.map +1 -0
- package/dist/commands/agent-upgrade.d.ts +5 -0
- package/dist/commands/agent-upgrade.js +105 -0
- package/dist/commands/agent-upgrade.js.map +1 -0
- package/dist/commands/agent.d.ts +27 -0
- package/dist/commands/agent.js +549 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/archive.d.ts +47 -0
- package/dist/commands/archive.js +311 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/audit.d.ts +25 -0
- package/dist/commands/audit.js +325 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/check-snippets.d.ts +58 -0
- package/dist/commands/check-snippets.js +247 -0
- package/dist/commands/check-snippets.js.map +1 -0
- package/dist/commands/check-urls.d.ts +52 -0
- package/dist/commands/check-urls.js +205 -0
- package/dist/commands/check-urls.js.map +1 -0
- package/dist/commands/code-blocks.d.ts +8 -0
- package/dist/commands/code-blocks.js +66 -0
- package/dist/commands/code-blocks.js.map +1 -0
- package/dist/commands/completion.d.ts +15 -0
- package/dist/commands/completion.js +20 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/context.d.ts +16 -0
- package/dist/commands/context.js +131 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/describe.d.ts +12 -0
- package/dist/commands/describe.js +62 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/diff.d.ts +11 -0
- package/dist/commands/diff.js +185 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/fix.d.ts +59 -0
- package/dist/commands/fix.js +173 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/frontmatter.d.ts +7 -0
- package/dist/commands/frontmatter.js +84 -0
- package/dist/commands/frontmatter.js.map +1 -0
- package/dist/commands/graph.d.ts +12 -0
- package/dist/commands/graph.js +122 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/headers.d.ts +7 -0
- package/dist/commands/headers.js +48 -0
- package/dist/commands/headers.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.js +32 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/links.d.ts +9 -0
- package/dist/commands/links.js +123 -0
- package/dist/commands/links.js.map +1 -0
- package/dist/commands/lint-dir.d.ts +15 -0
- package/dist/commands/lint-dir.js +156 -0
- package/dist/commands/lint-dir.js.map +1 -0
- package/dist/commands/lint.d.ts +14 -0
- package/dist/commands/lint.js +45 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/orphans.d.ts +10 -0
- package/dist/commands/orphans.js +74 -0
- package/dist/commands/orphans.js.map +1 -0
- package/dist/commands/outline.d.ts +7 -0
- package/dist/commands/outline.js +54 -0
- package/dist/commands/outline.js.map +1 -0
- package/dist/commands/query.d.ts +18 -0
- package/dist/commands/query.js +341 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/refs-to.d.ts +8 -0
- package/dist/commands/refs-to.js +65 -0
- package/dist/commands/refs-to.js.map +1 -0
- package/dist/commands/refs.d.ts +10 -0
- package/dist/commands/refs.js +103 -0
- package/dist/commands/refs.js.map +1 -0
- package/dist/commands/rename-file.d.ts +16 -0
- package/dist/commands/rename-file.js +215 -0
- package/dist/commands/rename-file.js.map +1 -0
- package/dist/commands/rename-heading.d.ts +10 -0
- package/dist/commands/rename-heading.js +182 -0
- package/dist/commands/rename-heading.js.map +1 -0
- package/dist/commands/schema.d.ts +10 -0
- package/dist/commands/schema.js +34 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/scripts.d.ts +59 -0
- package/dist/commands/scripts.js +222 -0
- package/dist/commands/scripts.js.map +1 -0
- package/dist/commands/section.d.ts +9 -0
- package/dist/commands/section.js +49 -0
- package/dist/commands/section.js.map +1 -0
- package/dist/commands/serve.d.ts +6 -0
- package/dist/commands/serve.js +48 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/stats.d.ts +6 -0
- package/dist/commands/stats.js +109 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/structure.d.ts +6 -0
- package/dist/commands/structure.js +130 -0
- package/dist/commands/structure.js.map +1 -0
- package/dist/commands/tables.d.ts +8 -0
- package/dist/commands/tables.js +77 -0
- package/dist/commands/tables.js.map +1 -0
- package/dist/commands/tasks.d.ts +8 -0
- package/dist/commands/tasks.js +59 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/toc.d.ts +18 -0
- package/dist/commands/toc.js +105 -0
- package/dist/commands/toc.js.map +1 -0
- package/dist/commands/update-check.d.ts +36 -0
- package/dist/commands/update-check.js +119 -0
- package/dist/commands/update-check.js.map +1 -0
- package/dist/commands/usage.d.ts +56 -0
- package/dist/commands/usage.js +883 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/validate-frontmatter.d.ts +13 -0
- package/dist/commands/validate-frontmatter.js +34 -0
- package/dist/commands/validate-frontmatter.js.map +1 -0
- package/dist/completion/model.d.ts +49 -0
- package/dist/completion/model.js +194 -0
- package/dist/completion/model.js.map +1 -0
- package/dist/completion/shells.d.ts +2 -0
- package/dist/completion/shells.js +280 -0
- package/dist/completion/shells.js.map +1 -0
- package/dist/config-schema.d.ts +15 -0
- package/dist/config-schema.js +44 -0
- package/dist/config-schema.js.map +1 -0
- package/dist/config.d.ts +102 -0
- package/dist/config.js +614 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +106 -0
- package/dist/context.js +202 -0
- package/dist/context.js.map +1 -0
- package/dist/contract/describe.d.ts +84 -0
- package/dist/contract/describe.js +104 -0
- package/dist/contract/describe.js.map +1 -0
- package/dist/contract/registry.d.ts +2 -0
- package/dist/contract/registry.js +622 -0
- package/dist/contract/registry.js.map +1 -0
- package/dist/contract/schemas/agent.d.ts +2 -0
- package/dist/contract/schemas/agent.js +572 -0
- package/dist/contract/schemas/agent.js.map +1 -0
- package/dist/contract/schemas/archive.d.ts +3 -0
- package/dist/contract/schemas/archive.js +227 -0
- package/dist/contract/schemas/archive.js.map +1 -0
- package/dist/contract/schemas/index.d.ts +11 -0
- package/dist/contract/schemas/index.js +49 -0
- package/dist/contract/schemas/index.js.map +1 -0
- package/dist/contract/schemas/markdown.d.ts +15 -0
- package/dist/contract/schemas/markdown.js +1035 -0
- package/dist/contract/schemas/markdown.js.map +1 -0
- package/dist/contract/schemas/meta.d.ts +5 -0
- package/dist/contract/schemas/meta.js +233 -0
- package/dist/contract/schemas/meta.js.map +1 -0
- package/dist/contract/schemas/scripts.d.ts +4 -0
- package/dist/contract/schemas/scripts.js +183 -0
- package/dist/contract/schemas/scripts.js.map +1 -0
- package/dist/contract/schemas/shared.d.ts +11 -0
- package/dist/contract/schemas/shared.js +26 -0
- package/dist/contract/schemas/shared.js.map +1 -0
- package/dist/contract/schemas/usage.d.ts +6 -0
- package/dist/contract/schemas/usage.js +489 -0
- package/dist/contract/schemas/usage.js.map +1 -0
- package/dist/contract/types.d.ts +63 -0
- package/dist/contract/types.js +2 -0
- package/dist/contract/types.js.map +1 -0
- package/dist/contract/version.d.ts +20 -0
- package/dist/contract/version.js +21 -0
- package/dist/contract/version.js.map +1 -0
- package/dist/diff.d.ts +156 -0
- package/dist/diff.js +500 -0
- package/dist/diff.js.map +1 -0
- package/dist/edit-plan.d.ts +133 -0
- package/dist/edit-plan.js +245 -0
- package/dist/edit-plan.js.map +1 -0
- package/dist/fix/markdownlint-fixer.d.ts +34 -0
- package/dist/fix/markdownlint-fixer.js +125 -0
- package/dist/fix/markdownlint-fixer.js.map +1 -0
- package/dist/fix/registry.d.ts +48 -0
- package/dist/fix/registry.js +28 -0
- package/dist/fix/registry.js.map +1 -0
- package/dist/fix/relative-links-fixer.d.ts +21 -0
- package/dist/fix/relative-links-fixer.js +96 -0
- package/dist/fix/relative-links-fixer.js.map +1 -0
- package/dist/fix/snippets-fixer.d.ts +2 -0
- package/dist/fix/snippets-fixer.js +64 -0
- package/dist/fix/snippets-fixer.js.map +1 -0
- package/dist/fix/toc-fixer.d.ts +2 -0
- package/dist/fix/toc-fixer.js +94 -0
- package/dist/fix/toc-fixer.js.map +1 -0
- package/dist/formats.d.ts +22 -0
- package/dist/formats.js +34 -0
- package/dist/formats.js.map +1 -0
- package/dist/formatters.d.ts +11 -0
- package/dist/formatters.js +48 -0
- package/dist/formatters.js.map +1 -0
- package/dist/frontmatter-validation.d.ts +11 -0
- package/dist/frontmatter-validation.js +188 -0
- package/dist/frontmatter-validation.js.map +1 -0
- package/dist/git.d.ts +40 -0
- package/dist/git.js +124 -0
- package/dist/git.js.map +1 -0
- package/dist/graph.d.ts +50 -0
- package/dist/graph.js +200 -0
- package/dist/graph.js.map +1 -0
- package/dist/input-selection.d.ts +9 -0
- package/dist/input-selection.js +122 -0
- package/dist/input-selection.js.map +1 -0
- package/dist/input.d.ts +2 -0
- package/dist/input.js +32 -0
- package/dist/input.js.map +1 -0
- package/dist/link-target.d.ts +39 -0
- package/dist/link-target.js +68 -0
- package/dist/link-target.js.map +1 -0
- package/dist/lint.d.ts +13 -0
- package/dist/lint.js +27 -0
- package/dist/lint.js.map +1 -0
- package/dist/markdown-ast.d.ts +73 -0
- package/dist/markdown-ast.js +187 -0
- package/dist/markdown-ast.js.map +1 -0
- package/dist/object-path.d.ts +14 -0
- package/dist/object-path.js +14 -0
- package/dist/object-path.js.map +1 -0
- package/dist/option-utils.d.ts +13 -0
- package/dist/option-utils.js +25 -0
- package/dist/option-utils.js.map +1 -0
- package/dist/outline.d.ts +16 -0
- package/dist/outline.js +32 -0
- package/dist/outline.js.map +1 -0
- package/dist/query/entities.d.ts +60 -0
- package/dist/query/entities.js +219 -0
- package/dist/query/entities.js.map +1 -0
- package/dist/query/execute.d.ts +22 -0
- package/dist/query/execute.js +0 -0
- package/dist/query/execute.js.map +1 -0
- package/dist/query/plan.d.ts +76 -0
- package/dist/query/plan.js +183 -0
- package/dist/query/plan.js.map +1 -0
- package/dist/query/render.d.ts +3 -0
- package/dist/query/render.js +39 -0
- package/dist/query/render.js.map +1 -0
- package/dist/refs.d.ts +19 -0
- package/dist/refs.js +10 -0
- package/dist/refs.js.map +1 -0
- package/dist/result.d.ts +49 -0
- package/dist/result.js +47 -0
- package/dist/result.js.map +1 -0
- package/dist/runtime.d.ts +35 -0
- package/dist/runtime.js +77 -0
- package/dist/runtime.js.map +1 -0
- package/dist/sarif.d.ts +36 -0
- package/dist/sarif.js +30 -0
- package/dist/sarif.js.map +1 -0
- package/dist/scripts/execute.d.ts +65 -0
- package/dist/scripts/execute.js +235 -0
- package/dist/scripts/execute.js.map +1 -0
- package/dist/scripts/registry.d.ts +55 -0
- package/dist/scripts/registry.js +103 -0
- package/dist/scripts/registry.js.map +1 -0
- package/dist/scripts/resolve.d.ts +90 -0
- package/dist/scripts/resolve.js +288 -0
- package/dist/scripts/resolve.js.map +1 -0
- package/dist/sections.d.ts +53 -0
- package/dist/sections.js +100 -0
- package/dist/sections.js.map +1 -0
- package/dist/serve/errors.d.ts +25 -0
- package/dist/serve/errors.js +45 -0
- package/dist/serve/errors.js.map +1 -0
- package/dist/serve/paths.d.ts +32 -0
- package/dist/serve/paths.js +71 -0
- package/dist/serve/paths.js.map +1 -0
- package/dist/serve/server.d.ts +31 -0
- package/dist/serve/server.js +123 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/tools.d.ts +19 -0
- package/dist/serve/tools.js +597 -0
- package/dist/serve/tools.js.map +1 -0
- package/dist/snippets.d.ts +184 -0
- package/dist/snippets.js +454 -0
- package/dist/snippets.js.map +1 -0
- package/dist/sqlite-store.d.ts +62 -0
- package/dist/sqlite-store.js +104 -0
- package/dist/sqlite-store.js.map +1 -0
- package/dist/sqlite.d.ts +59 -0
- package/dist/sqlite.js +51 -0
- package/dist/sqlite.js.map +1 -0
- package/dist/toc.d.ts +58 -0
- package/dist/toc.js +83 -0
- package/dist/toc.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/update-notifier.d.ts +95 -0
- package/dist/update-notifier.js +301 -0
- package/dist/update-notifier.js.map +1 -0
- package/dist/url-cache.d.ts +14 -0
- package/dist/url-cache.js +70 -0
- package/dist/url-cache.js.map +1 -0
- package/dist/usage/aggregate.d.ts +107 -0
- package/dist/usage/aggregate.js +435 -0
- package/dist/usage/aggregate.js.map +1 -0
- package/dist/usage/db/index.d.ts +49 -0
- package/dist/usage/db/index.js +118 -0
- package/dist/usage/db/index.js.map +1 -0
- package/dist/usage/db/migrations.d.ts +29 -0
- package/dist/usage/db/migrations.js +38 -0
- package/dist/usage/db/migrations.js.map +1 -0
- package/dist/usage/db/open.d.ts +33 -0
- package/dist/usage/db/open.js +37 -0
- package/dist/usage/db/open.js.map +1 -0
- package/dist/usage/db/schema.d.ts +18 -0
- package/dist/usage/db/schema.js +147 -0
- package/dist/usage/db/schema.js.map +1 -0
- package/dist/usage/db/store.d.ts +74 -0
- package/dist/usage/db/store.js +280 -0
- package/dist/usage/db/store.js.map +1 -0
- package/dist/usage/events.d.ts +202 -0
- package/dist/usage/events.js +243 -0
- package/dist/usage/events.js.map +1 -0
- package/dist/usage/filter.d.ts +43 -0
- package/dist/usage/filter.js +97 -0
- package/dist/usage/filter.js.map +1 -0
- package/dist/usage/providers/antigravity.d.ts +2 -0
- package/dist/usage/providers/antigravity.js +431 -0
- package/dist/usage/providers/antigravity.js.map +1 -0
- package/dist/usage/providers/claude-code.d.ts +2 -0
- package/dist/usage/providers/claude-code.js +400 -0
- package/dist/usage/providers/claude-code.js.map +1 -0
- package/dist/usage/providers/codex.d.ts +2 -0
- package/dist/usage/providers/codex.js +387 -0
- package/dist/usage/providers/codex.js.map +1 -0
- package/dist/usage/providers/gemini-cli.d.ts +2 -0
- package/dist/usage/providers/gemini-cli.js +466 -0
- package/dist/usage/providers/gemini-cli.js.map +1 -0
- package/dist/usage/providers/index.d.ts +23 -0
- package/dist/usage/providers/index.js +46 -0
- package/dist/usage/providers/index.js.map +1 -0
- package/dist/usage/providers/opencode.d.ts +2 -0
- package/dist/usage/providers/opencode.js +422 -0
- package/dist/usage/providers/opencode.js.map +1 -0
- package/dist/usage/providers/protobuf.d.ts +35 -0
- package/dist/usage/providers/protobuf.js +125 -0
- package/dist/usage/providers/protobuf.js.map +1 -0
- package/dist/usage/providers/types.d.ts +74 -0
- package/dist/usage/providers/types.js +2 -0
- package/dist/usage/providers/types.js.map +1 -0
- package/dist/usage/scan.d.ts +54 -0
- package/dist/usage/scan.js +216 -0
- package/dist/usage/scan.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/dist/workspace-index.d.ts +39 -0
- package/dist/workspace-index.js +265 -0
- package/dist/workspace-index.js.map +1 -0
- package/dist/workspace.d.ts +89 -0
- package/dist/workspace.js +219 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { diagnostic } from "../types.js";
|
|
4
|
+
import { renderBundle } from "../render.js";
|
|
5
|
+
import { profileFor } from "../targets/index.js";
|
|
6
|
+
import { TEST_CHECKS, countAssertions, evaluate } from "./assert.js";
|
|
7
|
+
import { TEST_FILE_SCHEMA_VERSION, discoverTestFiles, parseTestFile } from "./schema.js";
|
|
8
|
+
export * from "./assert.js";
|
|
9
|
+
export * from "./schema.js";
|
|
10
|
+
function posix(value) {
|
|
11
|
+
return value.split(path.sep).join("/");
|
|
12
|
+
}
|
|
13
|
+
function note(code, message, extra = {}) {
|
|
14
|
+
return diagnostic(code, message, "exact", extra);
|
|
15
|
+
}
|
|
16
|
+
function fail(code, message, extra = {}) {
|
|
17
|
+
return { ...diagnostic(code, message, "unsupported", extra), severity: "error" };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Renders each `<target>/<profile>` combination at most once.
|
|
21
|
+
*
|
|
22
|
+
* Cases overlap heavily — a bundle typically asserts several things about the
|
|
23
|
+
* same tree — and rendering is the expensive part, so the cache is what keeps a
|
|
24
|
+
* large test file from re-rendering the bundle per assertion.
|
|
25
|
+
*/
|
|
26
|
+
class RenderCache {
|
|
27
|
+
bundle;
|
|
28
|
+
trees = new Map();
|
|
29
|
+
constructor(bundle) {
|
|
30
|
+
this.bundle = bundle;
|
|
31
|
+
}
|
|
32
|
+
get(target, profile) {
|
|
33
|
+
const key = `${target}/${profile}`;
|
|
34
|
+
const cached = this.trees.get(key);
|
|
35
|
+
if (cached)
|
|
36
|
+
return cached;
|
|
37
|
+
const rendered = renderBundle(this.bundle, [target], [profile]);
|
|
38
|
+
const prefix = `${key}/`;
|
|
39
|
+
const artifacts = rendered.artifacts
|
|
40
|
+
.filter((artifact) => artifact.path.startsWith(prefix))
|
|
41
|
+
.map((artifact) => ({ ...artifact, path: artifact.path.slice(prefix.length) }));
|
|
42
|
+
const tree = { target, profile, artifacts, diagnostics: rendered.diagnostics };
|
|
43
|
+
this.trees.set(key, tree);
|
|
44
|
+
return tree;
|
|
45
|
+
}
|
|
46
|
+
/** Every parse and render diagnostic the evaluated trees reported. */
|
|
47
|
+
forwarded() {
|
|
48
|
+
return [...this.trees.values()].flatMap((tree) => tree.diagnostics);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function loadCases(bundle, override) {
|
|
52
|
+
const cases = [];
|
|
53
|
+
const diagnostics = [];
|
|
54
|
+
const files = [];
|
|
55
|
+
for (const file of discoverTestFiles(bundle.root, override)) {
|
|
56
|
+
const relative = posix(path.relative(bundle.root, file)) || posix(file);
|
|
57
|
+
files.push(relative);
|
|
58
|
+
const parsed = parseTestFile(fs.readFileSync(file, "utf8"), relative);
|
|
59
|
+
cases.push(...parsed.cases);
|
|
60
|
+
diagnostics.push(...parsed.diagnostics);
|
|
61
|
+
}
|
|
62
|
+
return { files, cases, diagnostics };
|
|
63
|
+
}
|
|
64
|
+
/** The target and profile pairs a case is evaluated against, after every filter. */
|
|
65
|
+
function selection(testCase, options) {
|
|
66
|
+
const targets = options.targets.length
|
|
67
|
+
? testCase.targets.filter((target) => options.targets.includes(target))
|
|
68
|
+
: testCase.targets;
|
|
69
|
+
const pairs = [];
|
|
70
|
+
for (const target of targets)
|
|
71
|
+
for (const profile of testCase.profiles) {
|
|
72
|
+
if (!options.profiles.includes(profile))
|
|
73
|
+
continue;
|
|
74
|
+
// A target that does not support an output profile emits nothing for it,
|
|
75
|
+
// so every path assertion would fail for a reason that is a property of
|
|
76
|
+
// the target rather than of the bundle.
|
|
77
|
+
if (!profileFor(target).profiles.includes(profile))
|
|
78
|
+
continue;
|
|
79
|
+
pairs.push({ target, profile });
|
|
80
|
+
}
|
|
81
|
+
return pairs;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Runs the contract tests stored with a bundle.
|
|
85
|
+
*
|
|
86
|
+
* Nothing here executes: every expectation is evaluated against the same
|
|
87
|
+
* in-memory render `agent convert` would write.
|
|
88
|
+
*/
|
|
89
|
+
export function runTests(bundle, options) {
|
|
90
|
+
const loaded = loadCases(bundle, options.tests);
|
|
91
|
+
const diagnostics = [...loaded.diagnostics];
|
|
92
|
+
if (options.cases.length) {
|
|
93
|
+
const known = new Set(loaded.cases.map((item) => item.name));
|
|
94
|
+
const unknown = options.cases.filter((name) => !known.has(name));
|
|
95
|
+
// A typo in CI must not read as "everything passed", so this is a usage
|
|
96
|
+
// error rather than a run that selects nothing.
|
|
97
|
+
if (unknown.length)
|
|
98
|
+
throw new Error(`Unknown --case name(s): ${unknown.join(", ")}`);
|
|
99
|
+
}
|
|
100
|
+
const cache = new RenderCache(bundle);
|
|
101
|
+
const results = [];
|
|
102
|
+
for (const testCase of loaded.cases) {
|
|
103
|
+
const selected = options.cases.length && !options.cases.includes(testCase.name);
|
|
104
|
+
const pairs = selected ? [] : selection(testCase, options);
|
|
105
|
+
if (!pairs.length) {
|
|
106
|
+
const reason = selected
|
|
107
|
+
? "excluded by --case"
|
|
108
|
+
: "no selected target and profile combination applies";
|
|
109
|
+
results.push({
|
|
110
|
+
name: testCase.name,
|
|
111
|
+
file: testCase.file,
|
|
112
|
+
status: "skipped",
|
|
113
|
+
targets: [],
|
|
114
|
+
profiles: [],
|
|
115
|
+
// Zero rather than the declared count: nothing was evaluated, and
|
|
116
|
+
// counting a skipped case's expectations would make `counts.assertions`
|
|
117
|
+
// read as coverage the run never had.
|
|
118
|
+
assertions: { total: 0, passed: 0, failed: 0 },
|
|
119
|
+
failures: [],
|
|
120
|
+
reason,
|
|
121
|
+
});
|
|
122
|
+
diagnostics.push(note("AB720", `Case '${testCase.name}' was skipped: ${reason}`, {
|
|
123
|
+
path: testCase.file,
|
|
124
|
+
component: testCase.name,
|
|
125
|
+
}));
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const failures = [];
|
|
129
|
+
for (const { target, profile } of pairs)
|
|
130
|
+
for (const failure of evaluate(testCase.expect, cache.get(target, profile)))
|
|
131
|
+
failures.push({ ...failure, target, profile });
|
|
132
|
+
const total = countAssertions(testCase.expect) * pairs.length;
|
|
133
|
+
results.push({
|
|
134
|
+
name: testCase.name,
|
|
135
|
+
file: testCase.file,
|
|
136
|
+
status: failures.length ? "failed" : "passed",
|
|
137
|
+
targets: [...new Set(pairs.map((pair) => pair.target))],
|
|
138
|
+
profiles: [...new Set(pairs.map((pair) => pair.profile))],
|
|
139
|
+
assertions: {
|
|
140
|
+
total,
|
|
141
|
+
// One expectation can yield more than one failure: a single
|
|
142
|
+
// `maxSeverity` ceiling reports every diagnostic above it. So the
|
|
143
|
+
// subtraction is clamped rather than allowed to go negative.
|
|
144
|
+
passed: Math.max(total - failures.length, 0),
|
|
145
|
+
failed: failures.length,
|
|
146
|
+
},
|
|
147
|
+
failures,
|
|
148
|
+
});
|
|
149
|
+
for (const failure of failures)
|
|
150
|
+
diagnostics.push(fail(failure.code, `${testCase.name} [${failure.assertion}]: ${failure.message}`, {
|
|
151
|
+
component: testCase.name,
|
|
152
|
+
path: testCase.file,
|
|
153
|
+
target: failure.target,
|
|
154
|
+
profile: failure.profile,
|
|
155
|
+
remediation: `Expected ${failure.expected}; found ${failure.actual}.`,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
if (!loaded.cases.length)
|
|
159
|
+
diagnostics.push({
|
|
160
|
+
...diagnostic("AB701", "No test cases were found", "approximate", {
|
|
161
|
+
path: options.tests ?? "tests",
|
|
162
|
+
remediation: "Add tests/<name>.test.yaml to the bundle, or point --tests at the file that holds them.",
|
|
163
|
+
}),
|
|
164
|
+
});
|
|
165
|
+
const report = {
|
|
166
|
+
schemaVersion: TEST_FILE_SCHEMA_VERSION,
|
|
167
|
+
files: loaded.files,
|
|
168
|
+
checks: [...TEST_CHECKS],
|
|
169
|
+
counts: {
|
|
170
|
+
cases: results.length,
|
|
171
|
+
passed: results.filter((item) => item.status === "passed").length,
|
|
172
|
+
failed: results.filter((item) => item.status === "failed").length,
|
|
173
|
+
skipped: results.filter((item) => item.status === "skipped").length,
|
|
174
|
+
assertions: results.reduce((total, item) => total + item.assertions.total, 0),
|
|
175
|
+
},
|
|
176
|
+
cases: results,
|
|
177
|
+
native: [],
|
|
178
|
+
};
|
|
179
|
+
return { report, diagnostics, forwarded: cache.forwarded() };
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/test/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { AgentDiagnostic, AgentProfile, AgentTarget } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Version of the test-case file format itself.
|
|
4
|
+
*
|
|
5
|
+
* A fourth hand-owned version, alongside `CONTRACT_VERSION` (the command
|
|
6
|
+
* contract surface), `PROFILE_SCHEMA_VERSION` (the target profile structure),
|
|
7
|
+
* and the bundle `schemaVersion` (the manifest authors write). This one versions
|
|
8
|
+
* the *assertions* authors write. Semantic-release does not touch it; bump it
|
|
9
|
+
* only when an existing test file would mean something different.
|
|
10
|
+
*/
|
|
11
|
+
export declare const TEST_FILE_SCHEMA_VERSION = "1";
|
|
12
|
+
/** The directory `agent test` looks in when `--tests` is not given. */
|
|
13
|
+
export declare const DEFAULT_TESTS_ROOT = "tests";
|
|
14
|
+
export declare const SEVERITIES: readonly ["notice", "warning", "error"];
|
|
15
|
+
export type Severity = (typeof SEVERITIES)[number];
|
|
16
|
+
export interface FileExpectation {
|
|
17
|
+
/** Rendered path, relative to `<target>/<profile>/`. */
|
|
18
|
+
path: string;
|
|
19
|
+
/** Octal file mode, spelled as in `artifacts[].mode`. */
|
|
20
|
+
mode?: string;
|
|
21
|
+
includes: string[];
|
|
22
|
+
excludes: string[];
|
|
23
|
+
/** JavaScript regular expression sources, tested against the whole file. */
|
|
24
|
+
matches: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface JsonExpectation {
|
|
27
|
+
path: string;
|
|
28
|
+
/** Recursive subset match: every key here must be present with this value. */
|
|
29
|
+
contains: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
export interface DiagnosticExpectation {
|
|
32
|
+
includes: string[];
|
|
33
|
+
excludes: string[];
|
|
34
|
+
/** The worst severity the render may report. Absent means unconstrained. */
|
|
35
|
+
maxSeverity?: Severity;
|
|
36
|
+
}
|
|
37
|
+
export interface DigestExpectation {
|
|
38
|
+
/** Golden digest over every rendered artifact for the target and profile. */
|
|
39
|
+
tree?: string;
|
|
40
|
+
/** Golden digest per rendered file, keyed by rendered path. */
|
|
41
|
+
files: Record<string, string>;
|
|
42
|
+
}
|
|
43
|
+
export interface CaseExpectations {
|
|
44
|
+
paths: {
|
|
45
|
+
present: string[];
|
|
46
|
+
absent: string[];
|
|
47
|
+
};
|
|
48
|
+
files: FileExpectation[];
|
|
49
|
+
json: JsonExpectation[];
|
|
50
|
+
diagnostics?: DiagnosticExpectation;
|
|
51
|
+
digest?: DigestExpectation;
|
|
52
|
+
}
|
|
53
|
+
export interface TestCase {
|
|
54
|
+
name: string;
|
|
55
|
+
/** Test file the case was read from, bundle-relative where possible. */
|
|
56
|
+
file: string;
|
|
57
|
+
targets: AgentTarget[];
|
|
58
|
+
profiles: AgentProfile[];
|
|
59
|
+
expect: CaseExpectations;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parses one test file into cases.
|
|
63
|
+
*
|
|
64
|
+
* Structural problems become `AB700` findings rather than throws, so one
|
|
65
|
+
* malformed case does not hide every other case in the bundle — the same split
|
|
66
|
+
* `src/agent/parser.ts` makes between unreadable input and invalid content. A
|
|
67
|
+
* file whose YAML will not parse at all is the caller's error to raise.
|
|
68
|
+
*/
|
|
69
|
+
export declare function parseTestFile(content: string, file: string): {
|
|
70
|
+
cases: TestCase[];
|
|
71
|
+
diagnostics: AgentDiagnostic[];
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Test files for a bundle, in a stable order.
|
|
75
|
+
*
|
|
76
|
+
* With no override this is `<bundle>/tests/**\/*.test.yaml`, a convention rather
|
|
77
|
+
* than a manifest key: that keeps schema 2 a strict superset of schema 1 and
|
|
78
|
+
* lets a v1 or legacy bundle carry tests too. An explicit `--tests` path that
|
|
79
|
+
* does not exist throws, because a typo there must not read as "no tests".
|
|
80
|
+
*/
|
|
81
|
+
export declare function discoverTestFiles(bundleRoot: string, override?: string): string[];
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { parse as parseYaml } from "yaml";
|
|
4
|
+
import { diagnostic, TARGETS } from "../types.js";
|
|
5
|
+
import { knownKeys, object, optionalString, strings } from "../../config-schema.js";
|
|
6
|
+
/**
|
|
7
|
+
* Version of the test-case file format itself.
|
|
8
|
+
*
|
|
9
|
+
* A fourth hand-owned version, alongside `CONTRACT_VERSION` (the command
|
|
10
|
+
* contract surface), `PROFILE_SCHEMA_VERSION` (the target profile structure),
|
|
11
|
+
* and the bundle `schemaVersion` (the manifest authors write). This one versions
|
|
12
|
+
* the *assertions* authors write. Semantic-release does not touch it; bump it
|
|
13
|
+
* only when an existing test file would mean something different.
|
|
14
|
+
*/
|
|
15
|
+
export const TEST_FILE_SCHEMA_VERSION = "1";
|
|
16
|
+
/** The directory `agent test` looks in when `--tests` is not given. */
|
|
17
|
+
export const DEFAULT_TESTS_ROOT = "tests";
|
|
18
|
+
/** Suffixes a discovered test file must carry. */
|
|
19
|
+
const TEST_FILE_SUFFIXES = [".test.yaml", ".test.yml"];
|
|
20
|
+
export const SEVERITIES = ["notice", "warning", "error"];
|
|
21
|
+
const FILE_KEYS = new Set(["schemaVersion", "cases"]);
|
|
22
|
+
const CASE_KEYS = new Set(["name", "targets", "profiles", "expect"]);
|
|
23
|
+
const EXPECT_KEYS = new Set(["paths", "files", "json", "diagnostics", "digest"]);
|
|
24
|
+
const PATHS_KEYS = new Set(["present", "absent"]);
|
|
25
|
+
const FILE_EXPECT_KEYS = new Set(["path", "mode", "includes", "excludes", "matches"]);
|
|
26
|
+
const JSON_EXPECT_KEYS = new Set(["path", "contains"]);
|
|
27
|
+
const DIAGNOSTIC_KEYS = new Set(["includes", "excludes", "maxSeverity"]);
|
|
28
|
+
const DIGEST_KEYS = new Set(["tree", "files"]);
|
|
29
|
+
function invalid(message, file) {
|
|
30
|
+
return {
|
|
31
|
+
...diagnostic("AB700", message, "unsupported", {
|
|
32
|
+
path: file,
|
|
33
|
+
remediation: `Correct the test file; see the format for schemaVersion ${TEST_FILE_SCHEMA_VERSION}.`,
|
|
34
|
+
}),
|
|
35
|
+
severity: "error",
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function requiredString(value, name) {
|
|
39
|
+
const result = optionalString(value, name);
|
|
40
|
+
if (result === undefined || !result.trim())
|
|
41
|
+
throw new Error(`${name} is required`);
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
function parseTargets(value, name) {
|
|
45
|
+
const raw = strings(value, name, [...TARGETS]);
|
|
46
|
+
const unknown = raw.filter((item) => !TARGETS.includes(item));
|
|
47
|
+
if (unknown.length)
|
|
48
|
+
throw new Error(`Unknown ${name}: ${unknown.join(", ")}`);
|
|
49
|
+
return [...new Set(raw)];
|
|
50
|
+
}
|
|
51
|
+
function parseProfiles(value, name) {
|
|
52
|
+
const raw = strings(value, name, ["plugin", "project"]);
|
|
53
|
+
const unknown = raw.filter((item) => item !== "plugin" && item !== "project");
|
|
54
|
+
if (unknown.length)
|
|
55
|
+
throw new Error(`Unknown ${name}: ${unknown.join(", ")}`);
|
|
56
|
+
return [...new Set(raw)];
|
|
57
|
+
}
|
|
58
|
+
function parseFileExpectation(value, name) {
|
|
59
|
+
const entry = object(value, name);
|
|
60
|
+
knownKeys(entry, FILE_EXPECT_KEYS, name);
|
|
61
|
+
const mode = optionalString(entry.mode, `${name}.mode`);
|
|
62
|
+
if (mode !== undefined && !/^0[0-7]{3}$/.test(mode))
|
|
63
|
+
throw new Error(`${name}.mode must be a four-digit octal mode such as '0644'`);
|
|
64
|
+
const matches = strings(entry.matches, `${name}.matches`, []);
|
|
65
|
+
for (const source of matches) {
|
|
66
|
+
try {
|
|
67
|
+
new RegExp(source);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new Error(`${name}.matches has an invalid pattern: ${error.message}`, {
|
|
71
|
+
cause: error,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
path: requiredString(entry.path, `${name}.path`),
|
|
77
|
+
...(mode !== undefined ? { mode } : {}),
|
|
78
|
+
includes: strings(entry.includes, `${name}.includes`, []),
|
|
79
|
+
excludes: strings(entry.excludes, `${name}.excludes`, []),
|
|
80
|
+
matches,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function parseJsonExpectation(value, name) {
|
|
84
|
+
const entry = object(value, name);
|
|
85
|
+
knownKeys(entry, JSON_EXPECT_KEYS, name);
|
|
86
|
+
if (entry.contains === undefined)
|
|
87
|
+
throw new Error(`${name}.contains is required`);
|
|
88
|
+
return {
|
|
89
|
+
path: requiredString(entry.path, `${name}.path`),
|
|
90
|
+
contains: object(entry.contains, `${name}.contains`),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function parseDiagnosticExpectation(value, name) {
|
|
94
|
+
const entry = object(value, name);
|
|
95
|
+
knownKeys(entry, DIAGNOSTIC_KEYS, name);
|
|
96
|
+
const maxSeverity = optionalString(entry.maxSeverity, `${name}.maxSeverity`);
|
|
97
|
+
if (maxSeverity !== undefined && !SEVERITIES.includes(maxSeverity))
|
|
98
|
+
throw new Error(`${name}.maxSeverity must be one of: ${SEVERITIES.join(", ")}`);
|
|
99
|
+
return {
|
|
100
|
+
includes: strings(entry.includes, `${name}.includes`, []),
|
|
101
|
+
excludes: strings(entry.excludes, `${name}.excludes`, []),
|
|
102
|
+
...(maxSeverity !== undefined ? { maxSeverity: maxSeverity } : {}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function parseDigestExpectation(value, name) {
|
|
106
|
+
const entry = object(value, name);
|
|
107
|
+
knownKeys(entry, DIGEST_KEYS, name);
|
|
108
|
+
const files = object(entry.files, `${name}.files`);
|
|
109
|
+
const digests = {};
|
|
110
|
+
for (const [file, digest] of Object.entries(files))
|
|
111
|
+
digests[file] = requiredString(digest, `${name}.files['${file}']`);
|
|
112
|
+
return {
|
|
113
|
+
...(entry.tree !== undefined ? { tree: requiredString(entry.tree, `${name}.tree`) } : {}),
|
|
114
|
+
files: digests,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function parseExpectations(value, name) {
|
|
118
|
+
const entry = object(value, name);
|
|
119
|
+
knownKeys(entry, EXPECT_KEYS, name);
|
|
120
|
+
const paths = object(entry.paths, `${name}.paths`);
|
|
121
|
+
knownKeys(paths, PATHS_KEYS, `${name}.paths`);
|
|
122
|
+
const files = entry.files === undefined ? [] : entry.files;
|
|
123
|
+
if (!Array.isArray(files))
|
|
124
|
+
throw new Error(`${name}.files must be a list`);
|
|
125
|
+
const json = entry.json === undefined ? [] : entry.json;
|
|
126
|
+
if (!Array.isArray(json))
|
|
127
|
+
throw new Error(`${name}.json must be a list`);
|
|
128
|
+
return {
|
|
129
|
+
paths: {
|
|
130
|
+
present: strings(paths.present, `${name}.paths.present`, []),
|
|
131
|
+
absent: strings(paths.absent, `${name}.paths.absent`, []),
|
|
132
|
+
},
|
|
133
|
+
files: files.map((item, index) => parseFileExpectation(item, `${name}.files[${index}]`)),
|
|
134
|
+
json: json.map((item, index) => parseJsonExpectation(item, `${name}.json[${index}]`)),
|
|
135
|
+
...(entry.diagnostics !== undefined
|
|
136
|
+
? { diagnostics: parseDiagnosticExpectation(entry.diagnostics, `${name}.diagnostics`) }
|
|
137
|
+
: {}),
|
|
138
|
+
...(entry.digest !== undefined
|
|
139
|
+
? { digest: parseDigestExpectation(entry.digest, `${name}.digest`) }
|
|
140
|
+
: {}),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Parses one test file into cases.
|
|
145
|
+
*
|
|
146
|
+
* Structural problems become `AB700` findings rather than throws, so one
|
|
147
|
+
* malformed case does not hide every other case in the bundle — the same split
|
|
148
|
+
* `src/agent/parser.ts` makes between unreadable input and invalid content. A
|
|
149
|
+
* file whose YAML will not parse at all is the caller's error to raise.
|
|
150
|
+
*/
|
|
151
|
+
export function parseTestFile(content, file) {
|
|
152
|
+
const diagnostics = [];
|
|
153
|
+
let document;
|
|
154
|
+
try {
|
|
155
|
+
document = object(parseYaml(content) ?? {}, "Test file");
|
|
156
|
+
knownKeys(document, FILE_KEYS, "test file");
|
|
157
|
+
const schemaVersion = optionalString(document.schemaVersion, "schemaVersion");
|
|
158
|
+
if (schemaVersion === undefined)
|
|
159
|
+
throw new Error("schemaVersion is required");
|
|
160
|
+
if (schemaVersion !== TEST_FILE_SCHEMA_VERSION)
|
|
161
|
+
throw new Error(`Unsupported test schemaVersion '${schemaVersion}'; this release reads '${TEST_FILE_SCHEMA_VERSION}'`);
|
|
162
|
+
if (document.cases !== undefined && !Array.isArray(document.cases))
|
|
163
|
+
throw new Error("cases must be a list");
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
return { cases: [], diagnostics: [invalid(`${error.message}`, file)] };
|
|
167
|
+
}
|
|
168
|
+
const cases = [];
|
|
169
|
+
const seen = new Set();
|
|
170
|
+
for (const [index, item] of (document.cases ?? []).entries()) {
|
|
171
|
+
const label = `cases[${index}]`;
|
|
172
|
+
try {
|
|
173
|
+
const entry = object(item, label);
|
|
174
|
+
knownKeys(entry, CASE_KEYS, label);
|
|
175
|
+
const name = requiredString(entry.name, `${label}.name`);
|
|
176
|
+
// Names are how --case selects and how a failure is reported, so a
|
|
177
|
+
// duplicate inside one file would make both unaddressable.
|
|
178
|
+
if (seen.has(name))
|
|
179
|
+
throw new Error(`Duplicate case name '${name}'`);
|
|
180
|
+
seen.add(name);
|
|
181
|
+
cases.push({
|
|
182
|
+
name,
|
|
183
|
+
file,
|
|
184
|
+
targets: parseTargets(entry.targets, `${label}.targets`),
|
|
185
|
+
profiles: parseProfiles(entry.profiles, `${label}.profiles`),
|
|
186
|
+
expect: parseExpectations(entry.expect, `${label}.expect`),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
diagnostics.push(invalid(`${label}: ${error.message}`, file));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return { cases, diagnostics };
|
|
194
|
+
}
|
|
195
|
+
function isTestFile(name) {
|
|
196
|
+
return TEST_FILE_SUFFIXES.some((suffix) => name.endsWith(suffix));
|
|
197
|
+
}
|
|
198
|
+
function walk(directory, results) {
|
|
199
|
+
for (const entry of fs
|
|
200
|
+
.readdirSync(directory, { withFileTypes: true })
|
|
201
|
+
// Byte comparison rather than localeCompare: discovery order decides the
|
|
202
|
+
// order cases are reported in, and an ICU-dependent sort would reorder a
|
|
203
|
+
// payload between machines.
|
|
204
|
+
.sort((a, b) => (a.name < b.name ? -1 : a.name > b.name ? 1 : 0))) {
|
|
205
|
+
const full = path.join(directory, entry.name);
|
|
206
|
+
if (entry.isDirectory())
|
|
207
|
+
walk(full, results);
|
|
208
|
+
else if (entry.isFile() && isTestFile(entry.name))
|
|
209
|
+
results.push(full);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Test files for a bundle, in a stable order.
|
|
214
|
+
*
|
|
215
|
+
* With no override this is `<bundle>/tests/**\/*.test.yaml`, a convention rather
|
|
216
|
+
* than a manifest key: that keeps schema 2 a strict superset of schema 1 and
|
|
217
|
+
* lets a v1 or legacy bundle carry tests too. An explicit `--tests` path that
|
|
218
|
+
* does not exist throws, because a typo there must not read as "no tests".
|
|
219
|
+
*/
|
|
220
|
+
export function discoverTestFiles(bundleRoot, override) {
|
|
221
|
+
const root = override
|
|
222
|
+
? path.resolve(bundleRoot, override)
|
|
223
|
+
: path.join(bundleRoot, DEFAULT_TESTS_ROOT);
|
|
224
|
+
if (!fs.existsSync(root)) {
|
|
225
|
+
if (override)
|
|
226
|
+
throw new Error(`Test path does not exist: ${root}`);
|
|
227
|
+
return [];
|
|
228
|
+
}
|
|
229
|
+
if (fs.statSync(root).isFile())
|
|
230
|
+
return [root];
|
|
231
|
+
const results = [];
|
|
232
|
+
walk(root, results);
|
|
233
|
+
return results;
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/agent/test/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEpF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C,kDAAkD;AAClD,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AAmDlE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;AACtD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACtF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AACvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AACzE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/C,SAAS,OAAO,CAAC,OAAe,EAAE,IAAY;IAC5C,OAAO;QACL,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE;YAC7C,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,2DAA2D,wBAAwB,GAAG;SACpG,CAAC;QACF,QAAQ,EAAE,OAAO;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,IAAY;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;IACnF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,IAAY;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAmB,CAAC,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAkB,CAAC;AAC5C,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,IAAY;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAmB,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,IAAY;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sDAAsD,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC;IAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oCAAqC,KAAe,CAAC,OAAO,EAAE,EAAE;gBACrF,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC;QAChD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,EAAE,CAAC;QACzD,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,EAAE,CAAC;QACzD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc,EAAE,IAAY;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAClF,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC;QAChD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc,EAAE,IAAY;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,cAAc,CAAC,CAAC;IAC7E,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAuB,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gCAAgC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,EAAE,CAAC;QACzD,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,EAAE,EAAE,CAAC;QACzD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,IAAY;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,IAAI,WAAW,IAAI,IAAI,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IACnD,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sBAAsB,CAAC,CAAC;IACzE,OAAO;QACL,KAAK,EAAE;YACL,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,EAAE,CAAC;YAC5D,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,EAAE,CAAC;SAC1D;QACD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,UAAU,KAAK,GAAG,CAAC,CAAC;QACxF,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC,CAAC;QACrF,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,WAAW,EAAE,0BAA0B,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,IAAI,cAAc,CAAC,EAAE;YACvF,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE;YACpE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,IAAY;IAEZ,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QACzD,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC9E,IAAI,aAAa,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC9E,IAAI,aAAa,KAAK,wBAAwB;YAC5C,MAAM,IAAI,KAAK,CACb,mCAAmC,aAAa,0BAA0B,wBAAwB,GAAG,CACtG,CAAC;QACJ,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,GAAI,KAAe,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAe,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5E,MAAM,KAAK,GAAG,SAAS,KAAK,GAAG,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;YACzD,mEAAmE;YACnE,2DAA2D;YAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC;gBACxD,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,WAAW,CAAC;gBAC5D,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,KAAM,KAAe,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,IAAI,CAAC,SAAiB,EAAE,OAAiB;IAChD,KAAK,MAAM,KAAK,IAAI,EAAE;SACnB,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAChD,yEAAyE;QACzE,yEAAyE;QACzE,4BAA4B;SAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACxC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,QAAiB;IACrE,MAAM,IAAI,GAAG,QAAQ;QACnB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;QACpC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|