gennady 0.6.0 → 0.7.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/README.md +2 -15
- package/ai/agents/agent-resolve-conflicts.xml +6 -0
- package/ai/agents/agent-review-verifier.xml +6 -0
- package/ai/directives/architecture/README.md +21 -0
- package/ai/directives/coding/README.md +23 -0
- package/ai/directives/coding/result-conventions.xml +55 -0
- package/ai/directives/coding/svelte5-runes.xml +248 -0
- package/ai/directives/coding/sveltekit-rules.xml +247 -0
- package/ai/directives/coding/typescript-rules.xml +589 -0
- package/ai/directives/coding/uikit-component-storybook.xml +347 -0
- package/ai/directives/coding/uikit-component-svelte.xml +344 -0
- package/ai/directives/coding/uikit-spec-drafting.xml +243 -0
- package/ai/directives/dbc-audit.directive.xml +131 -0
- package/ai/directives/dev-review.directive.xml +148 -0
- package/ai/directives/infra/README.md +11 -0
- package/ai/directives/infra/eslint-setup.xml +467 -0
- package/ai/directives/infra/git-setup.xml +261 -0
- package/ai/directives/infra/nodejs-npm-setup.xml +354 -0
- package/ai/directives/infra/storybook-setup.xml +153 -0
- package/ai/directives/knowledge.xml +206 -0
- package/ai/directives/perf-auditor/perf-auditor.directive.xml +75 -0
- package/ai/directives/perf-auditor/rules/async-latency.xml +101 -0
- package/ai/directives/perf-auditor/rules/data-structures.xml +103 -0
- package/ai/directives/perf-auditor/rules/iteration-fusion.xml +96 -0
- package/ai/directives/perf-auditor/rules/memory-gc.xml +102 -0
- package/ai/directives/sdd/README.md +49 -0
- package/ai/directives/sdd/audit.directive.xml +543 -0
- package/ai/directives/sdd/discovery.directive.xml +824 -0
- package/ai/directives/sdd/fix.directive.xml +249 -0
- package/ai/directives/sdd/module-decomposition.directive.xml +666 -0
- package/ai/directives/sdd/phase-execution-protocol.xml +339 -0
- package/ai/directives/sdd/scaffold.directive.xml +717 -0
- package/ai/directives/sdd/setup.directive.xml +213 -0
- package/ai/directives/sdd/svelte-ui-discovery.directive.xml +263 -0
- package/ai/directives/semantic-change-extractor.directive.xml +99 -0
- package/ai/directives/testing/README.md +25 -0
- package/ai/directives/testing/common.xml +234 -0
- package/ai/directives/testing/node-test.xml +288 -0
- package/ai/directives/testing/playwright-cli.xml +199 -0
- package/ai/directives/testing/playwright-e2e.xml +292 -0
- package/ai/directives/testing/storybook-usage.xml +173 -0
- package/ai/directives/testing/svelte-testing.xml +237 -0
- package/ai/directives/testing/vitest-rules.xml +326 -0
- package/ai/docs/README.md +17 -0
- package/ai/docs/ai-icl.md +538 -0
- package/ai/docs/ai-priming.md +548 -0
- package/ai/docs/ai-prompt-formats.md +406 -0
- package/ai/docs/ai-promting.md +572 -0
- package/ai/drafts/DRAFT.md +120 -0
- package/ai/drafts/agent-devgen-class-from-description.rules.xml +123 -0
- package/ai/drafts/agent-typescript-devgen.v1.xml +303 -0
- package/ai/drafts/d.md +65 -0
- package/ai/drafts/music-posts.md +105 -0
- package/ai/fw/v1/architecture/blueprint-factory.xml +77 -0
- package/ai/fw/v1/core/mental-model.xml +50 -0
- package/ai/fw/v1/discovery/intent-reactor.xml +92 -0
- package/ai/fw/v1/production/swarm-protocol.xml +122 -0
- package/ai/fw/v1/review/quality-pipeline.xml +102 -0
- package/ai/fw/v2/arch-universal.xml +73 -0
- package/ai/fw-draft/README.md +79 -0
- package/ai/fw-draft/bin/discovery.sh +116 -0
- package/ai/fw-draft/gennady.xml +58 -0
- package/ai/fw-draft/provider/claude.xml +16 -0
- package/ai/fw-draft/provider/cursor.xml +23 -0
- package/ai/fw-draft/provider/default.xml +12 -0
- package/ai/fw-draft/roles/developer.xml +18 -0
- package/ai/fw-draft/router.xml +39 -0
- package/ai/fw-draft/routes/development.xml +32 -0
- package/ai/fw-draft/routes/universal.xml +58 -0
- package/ai/fw-draft/rules/dev/base/file-structure-rules.xml +89 -0
- package/ai/fw-draft/rules/dev/typescript/contacts.xml +194 -0
- package/dist/ai/agents/agent-resolve-conflicts.xml +6 -0
- package/dist/ai/agents/agent-review-verifier.xml +6 -0
- package/dist/ai/directives/architecture/README.md +21 -0
- package/dist/ai/directives/coding/README.md +23 -0
- package/dist/ai/directives/coding/result-conventions.xml +55 -0
- package/dist/ai/directives/coding/svelte5-runes.xml +248 -0
- package/dist/ai/directives/coding/sveltekit-rules.xml +247 -0
- package/dist/ai/directives/coding/typescript-rules.xml +589 -0
- package/dist/ai/directives/coding/uikit-component-storybook.xml +347 -0
- package/dist/ai/directives/coding/uikit-component-svelte.xml +344 -0
- package/dist/ai/directives/coding/uikit-spec-drafting.xml +243 -0
- package/dist/ai/directives/dbc-audit.directive.xml +131 -0
- package/dist/ai/directives/dev-review.directive.xml +148 -0
- package/dist/ai/directives/infra/README.md +11 -0
- package/dist/ai/directives/infra/eslint-setup.xml +467 -0
- package/dist/ai/directives/infra/git-setup.xml +261 -0
- package/dist/ai/directives/infra/nodejs-npm-setup.xml +354 -0
- package/dist/ai/directives/infra/storybook-setup.xml +153 -0
- package/dist/ai/directives/knowledge.xml +206 -0
- package/dist/ai/directives/perf-auditor/perf-auditor.directive.xml +75 -0
- package/dist/ai/directives/perf-auditor/rules/async-latency.xml +101 -0
- package/dist/ai/directives/perf-auditor/rules/data-structures.xml +103 -0
- package/dist/ai/directives/perf-auditor/rules/iteration-fusion.xml +96 -0
- package/dist/ai/directives/perf-auditor/rules/memory-gc.xml +102 -0
- package/dist/ai/directives/sdd/README.md +49 -0
- package/dist/ai/directives/sdd/audit.directive.xml +543 -0
- package/dist/ai/directives/sdd/discovery.directive.xml +824 -0
- package/dist/ai/directives/sdd/fix.directive.xml +249 -0
- package/dist/ai/directives/sdd/module-decomposition.directive.xml +666 -0
- package/dist/ai/directives/sdd/phase-execution-protocol.xml +339 -0
- package/dist/ai/directives/sdd/scaffold.directive.xml +717 -0
- package/dist/ai/directives/sdd/setup.directive.xml +213 -0
- package/dist/ai/directives/sdd/svelte-ui-discovery.directive.xml +263 -0
- package/dist/ai/directives/semantic-change-extractor.directive.xml +99 -0
- package/dist/ai/directives/testing/README.md +25 -0
- package/dist/ai/directives/testing/common.xml +234 -0
- package/dist/ai/directives/testing/node-test.xml +288 -0
- package/dist/ai/directives/testing/playwright-cli.xml +199 -0
- package/dist/ai/directives/testing/playwright-e2e.xml +292 -0
- package/dist/ai/directives/testing/storybook-usage.xml +173 -0
- package/dist/ai/directives/testing/svelte-testing.xml +237 -0
- package/dist/ai/directives/testing/vitest-rules.xml +326 -0
- package/dist/ai/docs/README.md +17 -0
- package/dist/ai/docs/ai-icl.md +538 -0
- package/dist/ai/docs/ai-priming.md +548 -0
- package/dist/ai/docs/ai-prompt-formats.md +406 -0
- package/dist/ai/docs/ai-promting.md +572 -0
- package/dist/ai/drafts/DRAFT.md +120 -0
- package/dist/ai/drafts/agent-devgen-class-from-description.rules.xml +123 -0
- package/dist/ai/drafts/agent-typescript-devgen.v1.xml +303 -0
- package/dist/ai/drafts/d.md +65 -0
- package/dist/ai/drafts/music-posts.md +105 -0
- package/dist/ai/fw/v1/architecture/blueprint-factory.xml +77 -0
- package/dist/ai/fw/v1/core/mental-model.xml +50 -0
- package/dist/ai/fw/v1/discovery/intent-reactor.xml +92 -0
- package/dist/ai/fw/v1/production/swarm-protocol.xml +122 -0
- package/dist/ai/fw/v1/review/quality-pipeline.xml +102 -0
- package/dist/ai/fw/v2/arch-universal.xml +73 -0
- package/dist/ai/fw-draft/README.md +79 -0
- package/dist/ai/fw-draft/bin/discovery.sh +116 -0
- package/dist/ai/fw-draft/gennady.xml +58 -0
- package/dist/ai/fw-draft/provider/claude.xml +16 -0
- package/dist/ai/fw-draft/provider/cursor.xml +23 -0
- package/dist/ai/fw-draft/provider/default.xml +12 -0
- package/dist/ai/fw-draft/roles/developer.xml +18 -0
- package/dist/ai/fw-draft/router.xml +39 -0
- package/dist/ai/fw-draft/routes/development.xml +32 -0
- package/dist/ai/fw-draft/routes/universal.xml +58 -0
- package/dist/ai/fw-draft/rules/dev/base/file-structure-rules.xml +89 -0
- package/dist/ai/fw-draft/rules/dev/typescript/contacts.xml +194 -0
- package/dist/chunks/devtools-B-7ugZhF.js +79 -0
- package/dist/chunks/{help.cmd-CWasx25o.js → help.cmd-B_G7EWzF.js} +9 -2
- package/dist/chunks/{index-B63fYXL2.js → index-BeL1Zcbg.js} +1 -1
- package/dist/chunks/index-CVR66voe.js +26963 -0
- package/dist/chunks/index-CXuhZzS3.js +16979 -0
- package/dist/chunks/{index-B5bA2T7A.js → index-CaahtXiM.js} +33 -9
- package/dist/chunks/{index-iqg0w_pE.js → index-CiEM-8nJ.js} +35 -19
- package/dist/chunks/{index-B4m0-PAT.js → index-D1qsi0Uc.js} +57 -33
- package/dist/chunks/index-D9ceRUyB.js +443 -0
- package/dist/chunks/index-DJpVmyp2.js +176 -0
- package/dist/chunks/{index-C0andxna.js → index-DU6jD7SS.js} +1 -1
- package/dist/chunks/index-KxSZKmZn.js +540 -0
- package/dist/chunks/{index-Dqe1TdW4.js → index-UbHoePfr.js} +12 -12
- package/dist/chunks/{index-5xIgwwKx.js → index-g1LXlp77.js} +2 -2
- package/dist/chunks/index-zBnnuvLA.js +3788 -0
- package/dist/chunks/{run-review-command.logic-a_M3CkeZ.js → run-review-command.logic-DpkRoEi8.js} +2 -2
- package/dist/chunks/services-CaLOhuLV.js +2889 -0
- package/dist/chunks/shared-Bjy30TeM.js +665 -0
- package/dist/cli/cmd/_shared/prompt/io/load-agent-template.io.d.ts +3 -3
- package/dist/cli/cmd/_shared/prompt/logic/build-ai-first-knowledge-block.logic.d.ts +3 -3
- package/dist/cli/cmd/_shared/prompt/logic/build-ai-verify-placeholders.logic.d.ts +7 -4
- package/dist/cli/cmd/_shared/prompt/logic/verify-commands/resolve-verify-commands.logic.d.ts +5 -0
- package/dist/cli/cmd/_shared/update-check-worker.d.ts +1 -0
- package/dist/cli/cmd/_shared/update-check.d.ts +38 -0
- package/dist/cli/cmd/agent-mon/cmd/create-providers.d.ts +15 -0
- package/dist/cli/cmd/agent-mon/cmd/index.d.ts +1 -0
- package/dist/cli/cmd/agent-mon/cmd/run.d.ts +12 -0
- package/dist/cli/cmd/agent-mon/state/create-state-manager.d.ts +32 -0
- package/dist/cli/cmd/agent-mon/state/group-by-provider.d.ts +14 -0
- package/dist/cli/cmd/agent-mon/state/index.d.ts +5 -0
- package/dist/cli/cmd/agent-mon/state/is-waiting.d.ts +9 -0
- package/dist/cli/cmd/agent-mon/state/view-model.type.d.ts +74 -0
- package/dist/cli/cmd/agent-mon/ui/app.d.ts +16 -0
- package/dist/cli/cmd/agent-mon/ui/column-view.d.ts +14 -0
- package/dist/cli/cmd/agent-mon/ui/index.d.ts +10 -0
- package/dist/cli/cmd/agent-mon/ui/provider-column.d.ts +14 -0
- package/dist/cli/cmd/agent-mon/ui/session-card.d.ts +12 -0
- package/dist/cli/cmd/agent-mon/ui/status-badge.d.ts +10 -0
- package/dist/cli/cmd/alt-opinion/alt-opinion-parser.d.ts +18 -0
- package/dist/cli/cmd/alt-opinion/alt-opinion-runner.d.ts +32 -0
- package/dist/cli/cmd/alt-opinion/alt-opinion.cmd.d.ts +34 -0
- package/dist/cli/cmd/alt-opinion/alt-opinion.types.d.ts +88 -0
- package/dist/cli/cmd/alt-opinion/index.d.ts +1 -0
- package/dist/cli/cmd/cat/cat-url.fn.d.ts +19 -0
- package/dist/cli/cmd/lint/checks/anchor.check.d.ts +11 -0
- package/dist/cli/cmd/lint/checks/dbc-contract.check.d.ts +16 -0
- package/dist/cli/cmd/lint/checks/disables.check.d.ts +12 -0
- package/dist/cli/cmd/lint/checks/file-header.check.d.ts +10 -0
- package/dist/cli/cmd/lint/checks/language.check.d.ts +11 -0
- package/dist/cli/cmd/lint/index.d.ts +1 -0
- package/dist/cli/cmd/lint/lint.cmd.d.ts +18 -0
- package/dist/cli/cmd/lint/lint.types.d.ts +72 -0
- package/dist/cli/cmd/lint/utils/resolve-references.fn.d.ts +32 -0
- package/dist/cli/cmd/remote-console/index.d.ts +2 -0
- package/dist/cli/cmd/remote-console/remote-console.cmd.d.ts +55 -0
- package/dist/cli/cmd/resolve-conflicts/_core/io/resolve-conflicts-template-load.io.d.ts +2 -2
- package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-args-parse.logic.d.ts +3 -3
- package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-run.logic.d.ts +3 -3
- package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-context-git-build.logic.d.ts +4 -4
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-artifact.type.d.ts +3 -1
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-args.type.d.ts +3 -1
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-result.type.d.ts +5 -1
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-context-git.type.d.ts +18 -2
- package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-artifact-build.xml.d.ts +6 -6
- package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-render.xml.d.ts +4 -4
- package/dist/cli/cmd/review/_core/io/load-review-verify-template.io.d.ts +2 -2
- package/dist/cli/cmd/review/_core/logic/build-review-context-git.logic.d.ts +3 -3
- package/dist/cli/cmd/review/_core/logic/build-review-context-vcs.logic.d.ts +2 -2
- package/dist/cli/cmd/review/_core/logic/load-review-context-mr.logic.d.ts +5 -5
- package/dist/cli/cmd/review/_core/logic/parse-review-command-args.logic.d.ts +3 -3
- package/dist/cli/cmd/review/_core/logic/resolve-review-intent.logic.d.ts +3 -3
- package/dist/cli/cmd/review/_core/logic/run-review-command.logic.d.ts +3 -3
- package/dist/cli/cmd/review/_core/types/review-artifact.type.d.ts +4 -1
- package/dist/cli/cmd/review/_core/types/review-command-args.type.d.ts +7 -1
- package/dist/cli/cmd/review/_core/types/review-command-mode.type.d.ts +1 -1
- package/dist/cli/cmd/review/_core/types/review-command-options.type.d.ts +3 -1
- package/dist/cli/cmd/review/_core/types/review-command-result.type.d.ts +5 -1
- package/dist/cli/cmd/review/_core/types/review-context-git.type.d.ts +3 -1
- package/dist/cli/cmd/review/_core/types/review-context-mr.type.d.ts +22 -3
- package/dist/cli/cmd/review/_core/types/review-context-vcs.type.d.ts +4 -1
- package/dist/cli/cmd/review/_core/types/review-intent.type.d.ts +1 -1
- package/dist/cli/cmd/review/_core/xml/build-review-artifact.xml.d.ts +10 -10
- package/dist/cli/cmd/review/_core/xml/render-review-issues.xml.d.ts +3 -3
- package/dist/cli/cmd/review/_core/xml/render-review-verify.xml.d.ts +4 -4
- package/dist/cli/cmd/sync/index.d.ts +1 -0
- package/dist/cli/cmd/sync/sync-core.d.ts +65 -0
- package/dist/cli/cmd/sync/sync-formatter.d.ts +12 -0
- package/dist/cli/cmd/sync/sync.cmd.d.ts +33 -0
- package/dist/cli/cmd/sync/sync.types.d.ts +50 -0
- package/dist/cli/cmd/vcs-reply/vcs-reply.cmd.d.ts +4 -4
- package/dist/cli/utils/ai-legacy/ai-legacy-agent.d.ts +12 -11
- package/dist/cli/utils/ai-legacy/ai-legacy-core.d.ts +33 -17
- package/dist/cli/utils/ai-legacy/ai-legacy-model.d.ts +42 -23
- package/dist/cli/utils/cat-gen/cat-gen.d.ts +19 -8
- package/dist/cli/utils/commit-gen/commit-gen.d.ts +39 -15
- package/dist/cli/utils/prompts/index.d.ts +6 -6
- package/dist/cli/utils/review-gen/review-gen.d.ts +33 -9
- package/dist/gennady.js +30 -10
- package/dist/index.d.ts +1 -0
- package/dist/index.js +44 -23
- package/dist/services/agent-mon/diff/diff.d.ts +9 -0
- package/dist/services/agent-mon/diff/index.d.ts +1 -0
- package/dist/services/agent-mon/index.d.ts +10 -0
- package/dist/services/agent-mon/model/agent-provider.type.d.ts +20 -0
- package/dist/services/agent-mon/model/agent-session.type.d.ts +49 -0
- package/dist/services/agent-mon/model/errors.d.ts +20 -0
- package/dist/services/agent-mon/model/index.d.ts +7 -0
- package/dist/services/agent-mon/model/observe-opts.type.d.ts +7 -0
- package/dist/services/agent-mon/model/scan-opts.type.d.ts +7 -0
- package/dist/services/agent-mon/model/session-changes.type.d.ts +10 -0
- package/dist/services/agent-mon/monitor/agent-monitor.d.ts +44 -0
- package/dist/services/agent-mon/monitor/create-monitor.d.ts +6 -0
- package/dist/services/agent-mon/monitor/index.d.ts +2 -0
- package/dist/services/agent-mon/observe/index.d.ts +1 -0
- package/dist/services/agent-mon/observe/observe.d.ts +12 -0
- package/dist/services/agent-mon/providers/claude/claude-provider.d.ts +50 -0
- package/dist/services/agent-mon/providers/claude/index.d.ts +5 -0
- package/dist/services/agent-mon/providers/claude/ps.d.ts +36 -0
- package/dist/services/agent-mon/providers/claude/session-json.d.ts +37 -0
- package/dist/services/agent-mon/providers/opencode/db.d.ts +41 -0
- package/dist/services/agent-mon/providers/opencode/index.d.ts +3 -0
- package/dist/services/agent-mon/providers/opencode/model-parser.d.ts +6 -0
- package/dist/services/agent-mon/providers/opencode/opencode-provider.d.ts +45 -0
- package/dist/services/ai-client/providers/ai-model.type.d.ts +14 -0
- package/dist/services/ai-client/providers/open-router/open-router-model.type.d.ts +1 -4
- package/dist/services/ai-client/providers/open-router/open-router-provider.d.ts +17 -0
- package/dist/services/ai-client/providers/openai-like-provider.d.ts +1 -0
- package/dist/services/data-ore/telegram/telegram-data-ore.d.ts +17 -0
- package/dist/services/data-ore/telegram/telegram-data-ore.types.d.ts +4 -0
- package/dist/services/data-ore/telegram/telegram-demo-music-helper.d.ts +1 -0
- package/dist/services/data-ore/telegram/telegram-demo.d.ts +1 -0
- package/dist/services/dbc/linter/dbc-ast-adapter.types.d.ts +82 -0
- package/dist/services/dbc/linter/dbc-linter.types.d.ts +95 -0
- package/dist/services/dbc/linter/implementations/ts/dbc-ts-ast-adapter.d.ts +183 -0
- package/dist/services/dbc/linter/implementations/ts/dbc-ts-linter.d.ts +152 -0
- package/dist/services/dbc/parser/dbc-parser.types.d.ts +16 -16
- package/dist/services/dbc/parser/implementations/jsdoc/dbc-jsdoc-parser.d.ts +14 -4
- package/dist/services/logger/logger.d.ts +26 -6
- package/dist/services/remote-console/client/remote-console-client-serializer.d.ts +7 -0
- package/dist/services/remote-console/client/remote-console-client.d.ts +20 -0
- package/dist/services/remote-console/client/remote-console-client.types.d.ts +88 -0
- package/dist/services/remote-console/remote-console.d.ts +6 -0
- package/dist/services/remote-console/server/remote-console-server.d.ts +10 -0
- package/dist/services/remote-console/server/remote-console-server.types.d.ts +44 -0
- package/dist/services/remote-console/server/remote-console-stdout-writer.d.ts +26 -0
- package/dist/services/vcs-client/abstract/vcs-client-merge-discussions.d.ts +22 -14
- package/dist/services/vcs-client/abstract/vcs-client-merge-requests.d.ts +31 -14
- package/dist/services/vcs-client/abstract/vcs-client-repository-files.d.ts +16 -0
- package/dist/services/vcs-client/abstract/vcs-client.d.ts +9 -5
- package/dist/services/vcs-client/entities/vcs-file-content.type.d.ts +24 -0
- package/dist/services/vcs-client/entities/vcs-merge-request-changes.type.d.ts +32 -0
- package/dist/services/vcs-client/entities/vcs-url.type.d.ts +14 -0
- package/dist/services/vcs-client/entities/vcs-user.type.d.ts +3 -0
- package/dist/services/vcs-client/github/vcs-github-client.d.ts +31 -0
- package/dist/services/vcs-client/github/vcs-github-merge-requests.d.ts +40 -0
- package/dist/services/vcs-client/github/vcs-github-repository-files.d.ts +27 -0
- package/dist/services/vcs-client/gitlab/vcs-gitlab-client.d.ts +13 -4
- package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-discussions.d.ts +16 -5
- package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-requests.d.ts +24 -5
- package/dist/services/vcs-client/gitlab/vcs-gitlab-repository-files.d.ts +27 -0
- package/dist/services/vcs-client/parse-vcs-url.d.ts +3 -0
- package/dist/shared/backend/git/git-core.d.ts +24 -22
- package/dist/shared/backend/git/git-diff.d.ts +16 -5
- package/dist/shared/backend/rc/rc-config.d.ts +27 -15
- package/dist/shared/common/exec.d.ts +4 -6
- package/dist/shared/common/files.d.ts +1 -3
- package/dist/shared/common/language.d.ts +3 -6
- package/dist/shared/common/parse-args.d.ts +1 -4
- package/dist/shared/common/style.d.ts +3 -3
- package/dist/shared/common/think.d.ts +1 -5
- package/dist/shared/common/tokens.d.ts +1 -5
- package/dist/shared/common/unguard.d.ts +4 -8
- package/dist/shared/common/xml.d.ts +16 -12
- package/package.json +20 -4
- package/dist/.ai/agents/agent-review-verifier.xml +0 -181
- package/dist/chunks/index-CNbmXK8M.js +0 -3548
- package/dist/chunks/services-Sb7TwLxt.js +0 -122
- package/dist/chunks/shared-BgLzFWMH.js +0 -577
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<!-- ai/framework/architecture/file_structure_rules.xml -->
|
|
2
|
+
<File_Structure_Protocol id="CleanArchitecture_v1.1">
|
|
3
|
+
<Preamble>
|
|
4
|
+
Этот протокол определяет стандарт для организации файловой структуры любого проекта. Он основан на принципах Чистой Архитектуры (Ports & Adapters), что обеспечивает низкую связанность, высокую тестируемость и понятность кодовой базы.
|
|
5
|
+
</Preamble>
|
|
6
|
+
<Core_Philosophy>
|
|
7
|
+
<Rationale>
|
|
8
|
+
Код должен быть организован по бизнес-назначению, а не по техническому типу. Это позволяет любому разработчику (или другому AI-агенту) быстро понять, за что отвечает каждый компонент системы, и вносить изменения в одном месте, не затрагивая другие. Мы разделяем "что" делает система (домен, сервисы) от "как" она это делает (базы данных, фреймворки).
|
|
9
|
+
</Rationale>
|
|
10
|
+
<Directive>
|
|
11
|
+
Твоя задача — проектировать файловую структуру как набор независимых слоев с явными границами. Каждый файл и директория должны иметь единственную, четко определенную ответственность.
|
|
12
|
+
</Directive>
|
|
13
|
+
</Core_Philosophy>
|
|
14
|
+
<Layer_Definitions>
|
|
15
|
+
<Layer id="entities" directory_name="entities">
|
|
16
|
+
<Objective>Изолировать чистые, независимые сущности домена, типы данных и бизнес-ошибки.</Objective>
|
|
17
|
+
<Directive>
|
|
18
|
+
Каждый файл должен содержать одну логическую сущность или тесно связанную группу (например, `user_entity.py`, `order_errors.py`). Этот слой не должен иметь никаких зависимостей от других слоев.
|
|
19
|
+
</Directive>
|
|
20
|
+
</Layer>
|
|
21
|
+
<Layer id="ports" directory_name="ports">
|
|
22
|
+
<Objective>Определить контракты (интерфейсы) для взаимодействия с внешним миром без указания реализации.</Objective>
|
|
23
|
+
<Directive>
|
|
24
|
+
Здесь находятся только абстракции: интерфейсы репозиториев (`i_user_repository.py`), клиентов внешних API, систем уведомлений. Этот слой содержит только объявления, без кода реализации.
|
|
25
|
+
</Directive>
|
|
26
|
+
<Note>(Role in Ports & Adapters: Ports)</Note>
|
|
27
|
+
</Layer>
|
|
28
|
+
<Layer id="services" directory_name="services">
|
|
29
|
+
<Objective>Реализовать сценарии использования (use cases) и оркестрировать бизнес-логику.</Objective>
|
|
30
|
+
<Directive>
|
|
31
|
+
Сервисы зависят от абстракций (`ports`), а не от конкретных реализаций. Они оперируют доменными сущностями (`entities`). Имена файлов должны отражать бизнес-сценарий (`create_order_service.py`).
|
|
32
|
+
</Directive>
|
|
33
|
+
</Layer>
|
|
34
|
+
|
|
35
|
+
<Layer id="infrastructure" directory_name="infrastructure">
|
|
36
|
+
<Objective>Предоставить конкретные реализации для исходящих портов и инкапсулировать все взаимодействия с внешним миром (сеть, файловая система, БД).</Objective>
|
|
37
|
+
<Directive>
|
|
38
|
+
Здесь находятся HTTP-клиенты, коннекторы к базам данных, реализации репозиториев (`gitlab_api_client.py`, `postgres_user_repository.py`). Этот код реализует интерфейсы из слоя `ports`.
|
|
39
|
+
</Directive>
|
|
40
|
+
<Note>(Role in Ports & Adapters: Driven Adapters)</Note>
|
|
41
|
+
</Layer>
|
|
42
|
+
|
|
43
|
+
<Layer id="interfaces" directory_name="interfaces">
|
|
44
|
+
<Objective>Определить точки входа в приложение (API-хендлеры, CLI-команды, обработчики событий).</Objective>
|
|
45
|
+
<Directive>
|
|
46
|
+
Этот слой является "переводчиком" внешних запросов в вызовы внутренних сервисов. Он отвечает за парсинг входящих данных, вызов соответствующего сервиса и форматирование ответа. Бизнес-логика здесь запрещена.
|
|
47
|
+
</Directive>
|
|
48
|
+
<Note>(Role in Ports & Adapters: Driving Adapters)</Note>
|
|
49
|
+
</Layer>
|
|
50
|
+
<Layer id="config" directory_name="config">
|
|
51
|
+
<Objective>Управлять конфигурацией приложения: сборка, валидация и предоставление доступа к настройкам.</Objective>
|
|
52
|
+
<Directive>
|
|
53
|
+
Этот слой использует `infrastructure` для чтения настроек из окружения или файлов и предоставляет типизированный, валидированный объект конфигурации для остальных частей приложения.
|
|
54
|
+
</Directive>
|
|
55
|
+
</Layer>
|
|
56
|
+
</Layer_Definitions>
|
|
57
|
+
<Scalability_And_Adoption>
|
|
58
|
+
<Rule id="MINIMAL_SET">
|
|
59
|
+
Для простых проектов обязательными являются только три слоя: `entities`, `services`, `infrastructure`. В этом случае сервисы могут напрямую зависеть от инфраструктуры.
|
|
60
|
+
</Rule>
|
|
61
|
+
<Rule id="WHEN_TO_ADD_PORTS">
|
|
62
|
+
Слой `ports` вводится тогда, когда появляется необходимость иметь несколько реализаций для одного контракта (например, для тестов (`in_memory_repository`) и для прода (`postgres_repository`)) или когда нужно строго отделить бизнес-логику от деталей реализации.
|
|
63
|
+
</Rule>
|
|
64
|
+
</Scalability_And_Adoption>
|
|
65
|
+
<Anti_Patterns_To_Avoid>
|
|
66
|
+
<Pattern id="MONOLITHIC_TYPES">
|
|
67
|
+
<Description>Создание общих файлов `types.py`, `models.py` или `schemas.py`, содержащих все типы данных проекта.</Description>
|
|
68
|
+
<Rationale>Это приводит к высокой связанности. Изменение одного типа требует модификации общего файла, затрагивая всю систему. Типы должны находиться в слое `entities` или рядом с модулем, который их использует.</Rationale>
|
|
69
|
+
<Directive>Распределяй определения данных по доменной принадлежности.</Directive>
|
|
70
|
+
</Pattern>
|
|
71
|
+
<Pattern id="DUMP_DIRECTORY">
|
|
72
|
+
<Description>Создание директории `utils` или `helpers` как "свалки" для всего, что не подошло в другие места.</Description>
|
|
73
|
+
<Rationale>Со временем такие директории становятся непредсказуемыми и сложными для навигации. Функция без побочных эффектов может остаться в `utils`, но если она работает с сетью или ФС, ее место — в `infrastructure`.</Rationale>
|
|
74
|
+
<Directive>Всегда классифицируй функцию по ее назначению и помещай в соответствующий слой.</Directive>
|
|
75
|
+
</Pattern>
|
|
76
|
+
</Anti_Patterns_To_Avoid>
|
|
77
|
+
<Testing_Strategy>
|
|
78
|
+
<Objective>Обеспечить четкое разделение исходного кода и тестов, сохраняя при этом понятную навигацию.</Objective>
|
|
79
|
+
<Directive>
|
|
80
|
+
Создай директорию для тестов (например, `tests/` или `__tests__/`) на том же уровне, что и директория с исходным кодом. Внутри этой директории **полностью воспроизведи (отзеркаль)** структуру исходников.
|
|
81
|
+
</Directive>
|
|
82
|
+
<Example>
|
|
83
|
+
Если есть файл `services/user/create_user.py`, то его тест должен находиться в `tests/services/user/test_create_user.py`.
|
|
84
|
+
</Example>
|
|
85
|
+
<Rationale>
|
|
86
|
+
Такой подход позволяет мгновенно находить тесты для любого модуля и сразу понимать, какой слой и компонент системы проверяется.
|
|
87
|
+
</Rationale>
|
|
88
|
+
</Testing_Strategy>
|
|
89
|
+
</File_Structure_Protocol>
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
<JSDOC_AS_CONTACTS hint="Правила оформления контактов в коде через JSDoc">
|
|
2
|
+
<Tag_Order>Строгий порядок в JSDoc: @purpose → @consumer → @invariant → @pre → @param → @throws → @returns → @post → @sideEffect</Tag_Order>
|
|
3
|
+
<TypeScript_Rules>
|
|
4
|
+
<Rule id="type_vs_interface">Для структур данных (объекты, DTO, ответы API, нормализованные модели) использовать type. interface — только для сущностей, которые наследуют или расширяют (несколько классов реализуют один контракт). Классы ошибок (extends Error) остаются class.</Rule>
|
|
5
|
+
<Rule id="naming_domain">Типы, относящиеся к внешней системе или домену (API, сервис), должны иметь префикс в имени (напр. ApiResource, ExternalServiceDto, VendorOrder). Внутренние утилитные типы без внешнего домена — без префикса.</Rule>
|
|
6
|
+
</TypeScript_Rules>
|
|
7
|
+
<TypeScript_Conventions hint="Node 22+, совместимость с декораторами">
|
|
8
|
+
<Convention id="no_enum">Не использовать enum. Вместо: const + as const или union type.</Convention>
|
|
9
|
+
<Convention id="no_constructor_modifiers">Не использовать модификаторы в конструкторе (public, private). Явное объявление полей в теле класса.</Convention>
|
|
10
|
+
<Convention id="no_private">Не использовать private / #private field. Вместо: protected _field с префиксом _.</Convention>
|
|
11
|
+
<Convention id="no_readonly_param">readonly — в объявлении поля, не в параметре конструктора.</Convention>
|
|
12
|
+
</TypeScript_Conventions>
|
|
13
|
+
<Tag_Dictionary hint="Полный реестр допустимых JSDoc-тегов для контрактов">
|
|
14
|
+
<Tag name="@purpose" type="mandatory">
|
|
15
|
+
<Definition>Телеологическое назначение. Зачем эта сущность существует в бизнес-логике?</Definition>
|
|
16
|
+
<Condition_Use>ВСЕГДА для любых экспортируемых (export) сущностей (классы, методы, типы, интерфейсы, константы).</Condition_Use>
|
|
17
|
+
<Format>@purpose {Глагол} {Объект} {Контекст}.</Format>
|
|
18
|
+
</Tag>
|
|
19
|
+
<Tag name="@consumer" type="contextual">
|
|
20
|
+
<Definition>Кто является клиентом этого API? (Другие модули, UI, внешние системы).</Definition>
|
|
21
|
+
<Condition_Use>Для корневых сущностей (классы, модули) и публичных методов API.</Condition_Use>
|
|
22
|
+
<Condition_Skip>Для внутренних утилитных типов или методов.</Condition_Skip>
|
|
23
|
+
<Format>@consumer {ModuleName}, {SystemName}</Format>
|
|
24
|
+
</Tag>
|
|
25
|
+
<Tag name="@param" type="functional">
|
|
26
|
+
<Definition>Описание входящего аргумента: одно связное описание бизнес-роли и границ валидности. Для параметров-объектов описывается их общая роль, без дублирования описания внутренних полей.</Definition>
|
|
27
|
+
<Condition_Use>ВСЕГДА, если у функции есть аргументы.</Condition_Use>
|
|
28
|
+
<Condition_Skip>Если функция не принимает аргументов.</Condition_Skip>
|
|
29
|
+
<Format mode="required">@param {name} {Одно связное описание: что это и допустимые границы}.</Format>
|
|
30
|
+
<Format mode="optional">@param [{name}] {Одно связное описание}.</Format>
|
|
31
|
+
</Tag>
|
|
32
|
+
<Tag name="@returns" type="functional">
|
|
33
|
+
<Definition>Бизнес-цель результата: зачем вызывающему нужен результат. Для асинхронных функций описывает значение, которым успешно разрешается Promise.</Definition>
|
|
34
|
+
<Condition_Use>ВСЕГДА, если функция возвращает значение (не void/never).</Condition_Use>
|
|
35
|
+
<Condition_Skip>Если функция возвращает void.</Condition_Skip>
|
|
36
|
+
<Format>@returns {Цель результата для вызывающего}.</Format>
|
|
37
|
+
</Tag>
|
|
38
|
+
<Tag name="@pre" type="logic">
|
|
39
|
+
<Definition>Предпословие. Состояние системы или окружения (не связанное с простой валидацией аргументов), которое ДОЛЖНО быть истинным ДО вызова.</Definition>
|
|
40
|
+
<Condition_Use>Если есть скрытые требования к окружению или состоянию системы, не дублирующие @param.</Condition_Use>
|
|
41
|
+
<Condition_Skip>Если дублирует @param или требования только из типов TypeScript.</Condition_Skip>
|
|
42
|
+
<Format>@pre {Состояние системы/окружения}.</Format>
|
|
43
|
+
</Tag>
|
|
44
|
+
<Tag name="@post" type="logic">
|
|
45
|
+
<Definition>Постусловие. Гарантированное состояние системы ПОСЛЕ успешного выполнения.</Definition>
|
|
46
|
+
<Condition_Use>Если метод меняет стейт или даёт гарантию, не выраженную в @returns (напр. неизменность аргумента, порядок элементов).</Condition_Use>
|
|
47
|
+
<Condition_Skip>Если дублирует @returns или @param; для чистых функций без дополнительных гарантий.</Condition_Skip>
|
|
48
|
+
<Format>@post {Факт об изменении состояния или гарантия}.</Format>
|
|
49
|
+
</Tag>
|
|
50
|
+
<Tag name="@invariant" type="logic">
|
|
51
|
+
<Definition>Условие, которое всегда остается истинным для жизни сущности. Для внешних сервисов описывает SLA, политику обработки ошибок (Error Policy) и стратегию повторных запросов (Retry Policy).</Definition>
|
|
52
|
+
<Condition_Use>Для Классов/Интерфейсов с состоянием или клиентов внешних систем.</Condition_Use>
|
|
53
|
+
<Condition_Skip>Для функций-утилит (stateless).</Condition_Skip>
|
|
54
|
+
<Format>@invariant {Условие целостности или Политика}.</Format>
|
|
55
|
+
</Tag>
|
|
56
|
+
<Tag name="@sideEffect" type="critical">
|
|
57
|
+
<Definition>Любое взаимодействие с внешним миром (IO, Network, Logs, Events , etc).</Definition>
|
|
58
|
+
<Condition_Use>ВСЕГДА, если метод не является чистой функцией.</Condition_Use>
|
|
59
|
+
<Condition_Skip>Если метод только вычисляет и возвращает данные.</Condition_Skip>
|
|
60
|
+
<Format>@sideEffect {Тип действия}: {Описание}.</Format>
|
|
61
|
+
</Tag>
|
|
62
|
+
<Tag name="@throws" type="critical">
|
|
63
|
+
<Definition>Описание исключительной ситуации. Для асинхронных функций описывает причину отклонения (reject) Promise.</Definition>
|
|
64
|
+
<Condition_Use>Если метод может выбросить ошибку (throw) или вернуть Rejected Promise.</Condition_Use>
|
|
65
|
+
<Condition_Skip>Если метод гарантированно безопасен (never throws).</Condition_Skip>
|
|
66
|
+
<Format>@throws {ErrorType | RejectedPromiseReason} {Условие возникновения}.</Format>
|
|
67
|
+
</Tag>
|
|
68
|
+
<Tag name="@see" type="linking">
|
|
69
|
+
<Definition>Ссылка на определение контракта (Interface/Spec/Type), который реализует этот код.</Definition>
|
|
70
|
+
<Condition_Use>При реализации интерфейса или наследовании, чтобы не дублировать описание.</Condition_Use>
|
|
71
|
+
<Condition_Skip>Если это первичное определение контракта.</Condition_Skip>
|
|
72
|
+
<Format>@see {TypeName#method} in path/from/project/root</Format>
|
|
73
|
+
</Tag>
|
|
74
|
+
<Tag name="@example" type="optional">
|
|
75
|
+
<Definition>Пример использования кода.</Definition>
|
|
76
|
+
<Condition_Use>Если логика вызова неочевидна или требует сложной подготовки данных.</Condition_Use>
|
|
77
|
+
<Condition_Skip>Для тривиальных методов (get/set).</Condition_Skip>
|
|
78
|
+
<Format>@example {Code block}</Format>
|
|
79
|
+
</Tag>
|
|
80
|
+
<Tag name="@deprecated" type="lifecycle">
|
|
81
|
+
<Definition>Маркер устаревшего кода.</Definition>
|
|
82
|
+
<Condition_Use>Если метод планируется к удалению. Обязательно указать альтернативу.</Condition_Use>
|
|
83
|
+
<Condition_Skip>Для актуального кода.</Condition_Skip>
|
|
84
|
+
<Format>@deprecated Используй {NewMethod} вместо этого.</Format>
|
|
85
|
+
</Tag>
|
|
86
|
+
</Tag_Dictionary>
|
|
87
|
+
<Usage_Patterns hint="Как применять теги к разным сущностям">
|
|
88
|
+
<Pattern id="PATTERN_SPECIFICATION_TYPE" appliesTo="type, interface (data)">
|
|
89
|
+
<Context>Определение типа данных (type) или контракта данных (interface).</Context>
|
|
90
|
+
<Rule>Данные: type с @purpose; при принадлежности к домену/API — префикс в имени. Логика: pre/post только если не дублируют param/returns.</Rule>
|
|
91
|
+
<Example>
|
|
92
|
+
/**
|
|
93
|
+
* @purpose Описывает элемент каталога внешнего сервиса — идентификатор и дочерние элементы.
|
|
94
|
+
* @consumer catalog-service, export-module.
|
|
95
|
+
*/
|
|
96
|
+
export type ApiCatalogItem = { id: string; children: ApiCatalogItem[]; };
|
|
97
|
+
</Example>
|
|
98
|
+
</Pattern>
|
|
99
|
+
<Pattern id="PATTERN_SYSTEM_INTERFACE" appliesTo="interface (service), class (client)">
|
|
100
|
+
<Context>Интерфейс или Клиент к внешней системе (API, DB, IO). Ненадежная среда.</Context>
|
|
101
|
+
<Rule>Обязательно: 1. Иерархия ошибок (Base → Network/Auth/Domain). 2. @invariant с описанием Resilience Policy (Retry, Rate Limits, Timeout).</Rule>
|
|
102
|
+
<Example>
|
|
103
|
+
/**
|
|
104
|
+
* @purpose Клиент для работы с платежным шлюзом.
|
|
105
|
+
* @consumer billing-service
|
|
106
|
+
* @invariant Error Policy: Все сетевые ошибки оборачиваются в PaymentNetworkError.
|
|
107
|
+
* @invariant Retry Policy: Идемпотентные методы (GET) повторяются 3 раза с экспоненциальной задержкой.
|
|
108
|
+
* @invariant Rate Limit: Не более 100 rps (контролируется клиентом).
|
|
109
|
+
*/
|
|
110
|
+
export interface PaymentGateway { ... }
|
|
111
|
+
</Example>
|
|
112
|
+
</Pattern>
|
|
113
|
+
<Pattern id="PATTERN_IMPLEMENTATION_LINK" appliesTo="const, class, method">
|
|
114
|
+
<Context>Реализация сущности, которая уже описана во внешнем контракте (implements Interface).</Context>
|
|
115
|
+
<Rule>Не дублируй логику. Используй @purpose (кратко), @consumer и @see.</Rule>
|
|
116
|
+
<Example>
|
|
117
|
+
/**
|
|
118
|
+
* @purpose Реализация трансформации для мобильных устройств.
|
|
119
|
+
* @consumer MobileApp
|
|
120
|
+
* @see {UserTransformer} in features/users/contracts.ts
|
|
121
|
+
*/
|
|
122
|
+
export const mobileUserTransformer: UserTransformer = (u) => { ... };
|
|
123
|
+
</Example>
|
|
124
|
+
</Pattern>
|
|
125
|
+
<Pattern id="PATTERN_CLASS_METHOD" appliesTo="method">
|
|
126
|
+
<Context>Метод класса. Если реализует интерфейс — @see. Иначе — полный контракт.</Context>
|
|
127
|
+
<Example>
|
|
128
|
+
/**
|
|
129
|
+
* @purpose Списание средств.
|
|
130
|
+
* @pre Система должна быть в режиме read-write (не maintenance).
|
|
131
|
+
* @param amount Сумма к списанию (положительное число).
|
|
132
|
+
* @throws {NoFundsError} Если баланс недостаточен.
|
|
133
|
+
*/
|
|
134
|
+
public pay(amount: number): void { ... }
|
|
135
|
+
</Example>
|
|
136
|
+
</Pattern>
|
|
137
|
+
<Pattern id="PATTERN_FUNCTION_PARAM_RETURNS" appliesTo="function">
|
|
138
|
+
<Context>Стандартная функция. @param не дублирует поля типа.</Context>
|
|
139
|
+
<Example good="@param id Идентификатор сущности (непустая строка или положительное число). @returns Данные для отображения в UI или передачи в следующий слой."/>
|
|
140
|
+
<Example bad="@param id Смысл: идентификатор. Валидность: непустая строка. @returns UserDto с заполненными полями."/>
|
|
141
|
+
</Pattern>
|
|
142
|
+
<Pattern id="PATTERN_EXPORTED_CONSTANT" appliesTo="const">
|
|
143
|
+
<Context>Публичные константы, особенно объекты конфигурации.</Context>
|
|
144
|
+
<Rule>Опиши @purpose (зачем этот конфиг) и @invariant (ограничения значений).</Rule>
|
|
145
|
+
<Example>
|
|
146
|
+
/**
|
|
147
|
+
* @purpose Глобальные настройки ретраев для HTTP.
|
|
148
|
+
* @invariant maxRetries должно быть меньше 5.
|
|
149
|
+
*/
|
|
150
|
+
export const RETRY_CONFIG = { ... };
|
|
151
|
+
</Example>
|
|
152
|
+
</Pattern>
|
|
153
|
+
<Pattern id="PATTERN_ASYNC_FUNCTION" appliesTo="function, method">
|
|
154
|
+
<Context>Асинхронная функция, возвращающая Promise.</Context>
|
|
155
|
+
<Rule>@returns описывает значение при успешном resolve. @throws описывает причину (Error) при reject.</Rule>
|
|
156
|
+
<Example>
|
|
157
|
+
/**
|
|
158
|
+
* @purpose Загружает данные пользователя с сервера.
|
|
159
|
+
* @param userId ID пользователя для загрузки (UUIDv4).
|
|
160
|
+
* @throws {UserNotFoundError} Если пользователь с таким ID не найден.
|
|
161
|
+
* @returns {Promise<ApiUser>} Данные пользователя для внутреннего использования в системе.
|
|
162
|
+
* @sideEffect Network: GET-запрос к /api/users/{userId}
|
|
163
|
+
*/
|
|
164
|
+
export async function fetchUser(userId: string): Promise<ApiUser> { ... }
|
|
165
|
+
</Example>
|
|
166
|
+
</Pattern>
|
|
167
|
+
<Pattern id="PATTERN_GENERIC_FUNCTION" appliesTo="function, method">
|
|
168
|
+
<Context>Обобщенная (generic) функция с параметризованными типами.</Context>
|
|
169
|
+
<Rule>В @param и @returns следует описать роль обобщенного типа T.</Rule>
|
|
170
|
+
<Example>
|
|
171
|
+
/**
|
|
172
|
+
* @purpose Оборачивает любые входные данные в стандартизированный объект ответа.
|
|
173
|
+
* @param data Данные любого типа {T}, которые будут помещены в поле `payload`.
|
|
174
|
+
* @returns {ApiResponse<T>} Стандартизированный объект ответа, содержащий исходные данные.
|
|
175
|
+
*/
|
|
176
|
+
export function wrapInApiResponse<T>(data: T): ApiResponse<T> { ... }
|
|
177
|
+
</Example>
|
|
178
|
+
</Pattern>
|
|
179
|
+
</Usage_Patterns>
|
|
180
|
+
<Validation_Checklist hint="Критерии качества контракта">
|
|
181
|
+
<Check>Экспортируемая сущность: есть @purpose; для корневых типов и публичного API — @consumer при необходимости.</Check>
|
|
182
|
+
<Check>Класс/модуль с состоянием: есть @invariant.</Check>
|
|
183
|
+
<Check>Внешний сервис (Client/Interface): определен @invariant с иерархией ошибок и Retry Policy.</Check>
|
|
184
|
+
<Check>@param — одно связное описание. Для объектов описание полей не дублируется из типа.</Check>
|
|
185
|
+
<Check>@returns — бизнес-цель результата для вызывающего, а не перечисление типа.</Check>
|
|
186
|
+
<Check>Порядок тегов соблюдён: purpose → consumer → invariant → pre → param → throws → returns → post → sideEffect.</Check>
|
|
187
|
+
<Check>@pre и @post не дублируют @param/@returns; только если добавляют новую информацию.</Check>
|
|
188
|
+
<Check>Метод с побочными эффектами: есть @post или @sideEffect.</Check>
|
|
189
|
+
<Check>Реализация внешнего типа: есть @see с путем от корня.</Check>
|
|
190
|
+
<Check>Структуры данных объявлены через type; interface только при наследовании/реализации.</Check>
|
|
191
|
+
<Check>Типы внешнего домена/API имеют префикс в имени.</Check>
|
|
192
|
+
<Check>Асинхронность: @returns описывает успех, @throws — ошибку (reject).</Check>
|
|
193
|
+
</Validation_Checklist>
|
|
194
|
+
</JSDOC_AS_CONTACTS>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { g as l } from "./services-CaLOhuLV.js";
|
|
2
|
+
var n, s;
|
|
3
|
+
function u() {
|
|
4
|
+
return s || (s = 1, n = function() {
|
|
5
|
+
throw new Error(
|
|
6
|
+
"ws does not work in the browser. Browser clients must use the native WebSocket object"
|
|
7
|
+
);
|
|
8
|
+
}), n;
|
|
9
|
+
}
|
|
10
|
+
var c = u();
|
|
11
|
+
const i = /* @__PURE__ */ l(c), t = globalThis;
|
|
12
|
+
t.WebSocket ||= i;
|
|
13
|
+
t.window ||= globalThis;
|
|
14
|
+
t.self ||= globalThis;
|
|
15
|
+
t.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [
|
|
16
|
+
{
|
|
17
|
+
// ComponentFilterElementType
|
|
18
|
+
type: 1,
|
|
19
|
+
// ElementTypeHostComponent
|
|
20
|
+
value: 7,
|
|
21
|
+
isEnabled: !0
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
// ComponentFilterDisplayName
|
|
25
|
+
type: 2,
|
|
26
|
+
value: "InternalApp",
|
|
27
|
+
isEnabled: !0,
|
|
28
|
+
isValid: !0
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
// ComponentFilterDisplayName
|
|
32
|
+
type: 2,
|
|
33
|
+
value: "InternalAppContext",
|
|
34
|
+
isEnabled: !0,
|
|
35
|
+
isValid: !0
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
// ComponentFilterDisplayName
|
|
39
|
+
type: 2,
|
|
40
|
+
value: "InternalStdoutContext",
|
|
41
|
+
isEnabled: !0,
|
|
42
|
+
isValid: !0
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
// ComponentFilterDisplayName
|
|
46
|
+
type: 2,
|
|
47
|
+
value: "InternalStderrContext",
|
|
48
|
+
isEnabled: !0,
|
|
49
|
+
isValid: !0
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
// ComponentFilterDisplayName
|
|
53
|
+
type: 2,
|
|
54
|
+
value: "InternalStdinContext",
|
|
55
|
+
isEnabled: !0,
|
|
56
|
+
isValid: !0
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
// ComponentFilterDisplayName
|
|
60
|
+
type: 2,
|
|
61
|
+
value: "InternalFocusContext",
|
|
62
|
+
isEnabled: !0,
|
|
63
|
+
isValid: !0
|
|
64
|
+
}
|
|
65
|
+
];
|
|
66
|
+
const a = {}, d = async () => new Promise((r) => {
|
|
67
|
+
const e = new i("ws://localhost:8097"), o = setTimeout(() => {
|
|
68
|
+
e.terminate(), r(!1);
|
|
69
|
+
}, 2e3);
|
|
70
|
+
o.unref(), e.on("open", () => {
|
|
71
|
+
clearTimeout(o), e.terminate(), r(!0);
|
|
72
|
+
}), e.on("error", () => {
|
|
73
|
+
clearTimeout(o), e.terminate(), r(!1);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
await d() ? (a.initialize(), a.connectToDevTools()) : console.warn(`DEV is set to true, but the React DevTools server is not running. Start it with:
|
|
77
|
+
|
|
78
|
+
$ npx react-devtools
|
|
79
|
+
`);
|
|
@@ -5,7 +5,6 @@ console.info(" npx gennady [command] [options]");
|
|
|
5
5
|
console.info("");
|
|
6
6
|
console.info("Commands:");
|
|
7
7
|
console.info(" commit Generate commit message from staged changes");
|
|
8
|
-
console.info(" review Review staged changes for critical issues");
|
|
9
8
|
console.info(" cat Display file contents as XML or Markdown");
|
|
10
9
|
console.info(" agent Run AI agent request");
|
|
11
10
|
console.info(" vcs-reply Post replies to GitLab MR discussions from stdin");
|
|
@@ -16,9 +15,17 @@ console.info(
|
|
|
16
15
|
console.info(
|
|
17
16
|
" resolve-conflicts Build confidence-aware merge-conflict resolution prompt from active git merge"
|
|
18
17
|
);
|
|
18
|
+
console.info(" remote-console Mirror browser console output into local stdout");
|
|
19
|
+
console.info(" lint Validate TypeScript files: file header, DBC contracts, anchors");
|
|
20
|
+
console.info(" alt-opinion Get alternative opinions from AI models with optional synthesis");
|
|
21
|
+
console.info(
|
|
22
|
+
" sync Synchronize ai/directives/ from npm package into current project"
|
|
23
|
+
);
|
|
24
|
+
console.info(
|
|
25
|
+
" agent-mon Interactive terminal dashboard for monitoring active AI agent sessions"
|
|
26
|
+
);
|
|
19
27
|
console.info("");
|
|
20
28
|
console.info("Examples:");
|
|
21
29
|
console.info(" npx gennady");
|
|
22
30
|
console.info(" npx gennady commit");
|
|
23
|
-
console.info(" npx gennady review --branch=develop");
|
|
24
31
|
console.info(' npx gennady cat "./src/**/*.js" --output=md');
|