{"_id":"@simplegen/simplegen","_rev":"27-bdfd346123b037d91dd0d744052bba15","name":"@simplegen/simplegen","dist-tags":{"latest":"0.6.2"},"versions":{"0.1.0":{"name":"@simplegen/simplegen","version":"0.1.0","_id":"@simplegen/simplegen@0.1.0","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"20b712dac77e0f6486a59d7a7dffd8c4e8b83707","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.0.tgz","fileCount":213,"integrity":"sha512-UcCZOPA7NudLg2NqU/N35U/fAJ/MmV0AhtSdVmHPDxiD33zLYxt8BUSU6WAztRS+bsy57ozmWfTO9j4chVLo9A==","signatures":[{"sig":"MEUCIQC9tkGKa4WC381iiLQojdHFnf99YzhwGNM6+S9vTq4DOwIgFH7fiirMVg4M3mvsqZYjIU28IfcVED1jbmG3QsVdsfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":872027},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e44dac5db29b369d406eaff6721e09909eecbbbd","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"8.19.4","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"16.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.0_1771509289810_0.7876613720037668","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@simplegen/simplegen","version":"0.1.1","_id":"@simplegen/simplegen@0.1.1","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"f77746753af5a5ed8dc1694b12fc6c4130faab6d","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.1.tgz","fileCount":213,"integrity":"sha512-KWVOEihxQJvxsZ0TBfLDgp8J92C+MaUd3DsFUEaxIojy9pzQlfYJqtI1LaSVGieb/+a284BKMaKx77UGr+0Vmw==","signatures":[{"sig":"MEUCIE4CV/fATbS3jeTgDC7oMLBcWwQiLwVKmpVQyQH+1Tm8AiEA8usA9yHVjeo6pT/bv1q3I3fIIx5pU8eC1dqIPTibk3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":872016},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7809a3be1885d665f09d2c8f0d52d98204626244","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"8.19.4","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"16.20.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.1_1771510257053_0.7946217423890114","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@simplegen/simplegen","version":"0.1.2","_id":"@simplegen/simplegen@0.1.2","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"c09bcc605678a2bf87df63198dae7d92580f735e","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.2.tgz","fileCount":213,"integrity":"sha512-8midL1G94U7B+kevy62O5UvZrzb26NzcNYaKR64gWpxhSQ2xEKOpjcCGkda21hjWfq6ZJOG1M6LSkTEvsOrVjA==","signatures":[{"sig":"MEYCIQDKwL2IjeCeEMr2kN+s1G11OlWGY0Jk0eSA43SBVa/NGQIhANwHMwaedxcKmL5IkHmeZKDMiD0hdO73s+evHkCmFkYa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":872986},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"caf68a57c2df3e932f926c7568d20930d95641b4","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.2_1771940809484_0.7991922268062253","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@simplegen/simplegen","version":"0.1.3","_id":"@simplegen/simplegen@0.1.3","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"e9b35e6f9a02726a98ca969a64844bf9b7b13c0d","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.3.tgz","fileCount":213,"integrity":"sha512-yOcVWcHspWESQznC/E1ISfC/OCbUlVxgqIQSm0tWh+IqQvQ+AhrkEiAaO564F7+xCSIAfzLp43FP1WPGrSxGBg==","signatures":[{"sig":"MEUCICEwEOP+/DfJq3z3Sa/0Qz3tpUAHzrUVUVPzDQviusPnAiEA57saTU9vYUSfnGeYHL8sa0aXMRU7VxYh0nxvJiTUptI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":888646},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"26733d5d9d6616f1ce95399a24bee89f741f75c7","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.3_1772107757690_0.39925261115861277","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@simplegen/simplegen","version":"0.1.4","_id":"@simplegen/simplegen@0.1.4","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"0d7253665d7fe6a1623c8865365e68c0df7f91e6","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.4.tgz","fileCount":213,"integrity":"sha512-8eiQBCn8AdVfr5Oi3vd8X28gXw3SMZ0H5rHV8YXygXeG7llqZ40PS7QwWRnvRrW8/pMkfR6iNBtphU7VRILyuQ==","signatures":[{"sig":"MEUCIHQXow++DGPrh3w6/kCa//uU7HvgRYlbPn+kGvaxV4WJAiEAiX9tgiCy8Bt81WUExu/ttc52n9fjYXgBoIRPUxJhNdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":886477},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8a5c7c72e2dd025fff0403d0e187bf292d5aa694","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.4_1772110513787_0.2752756142912367","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@simplegen/simplegen","version":"0.1.5","_id":"@simplegen/simplegen@0.1.5","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"f946cf9dd8c4242e81234cfd3382e4a8dc625120","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.5.tgz","fileCount":214,"integrity":"sha512-yfE6qCouphxhdiUsEX6kiumBEjrjejecMSJf6ZltInCmmmapdlAF1aOf0OKHjchhl2QA2wcYlfqv7tZQlEqTTA==","signatures":[{"sig":"MEQCIH2RbAlga+GfnhFxy1i3Q94/YOXjEGhWnDNOOEi9SCmlAiBxlYW1iIqt5EHlEBq/spnRsnKeS0rtQcwKQ7CsK8ou/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":988056},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"996f27ba032b31b012c2d42b489903a9833d2e4e","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.5_1772197495516_0.29343947500992096","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@simplegen/simplegen","version":"0.1.6","_id":"@simplegen/simplegen@0.1.6","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"1ba6f0b093ae6352c9a571559f4fc40315638c34","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.6.tgz","fileCount":215,"integrity":"sha512-u6xH3YYAcIheEVMgPDEfGLFqSzCETc8f1GeS4CXJLKaPBq4H4OSNLQOvI/r2fwwEt9cHzb3La5CFNOTNcoGucA==","signatures":[{"sig":"MEUCIQChCZTaOI+bUQNL31xwcinAihD+zfcIicx8vxtiwc9cngIgUeWbFzL60XkLMIVeo3GhF/pB9JGjLvk2qA1atq8YxNc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1031791},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d543f0c0926526ee2daf3bdd3a19e8fb8131965e","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.6_1772287111712_0.5105193270229886","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@simplegen/simplegen","version":"0.1.7","_id":"@simplegen/simplegen@0.1.7","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"a843ca746d20d048dbfa6c9a4618d898320c4b66","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.7.tgz","fileCount":216,"integrity":"sha512-ohahqyDj9QZf1A13atJoXHvrPQ3dxkQ5f1OPaxQaCJYYvHKPb2EpM2NNkmDCKctZ5SZXhHxyHSQCO+5yC3UTvA==","signatures":[{"sig":"MEQCIDzFwsOyuDoSSO+Vlh1LpYRkLTByt8tvQUqwWw4X4WxtAiAbhQRcEM4njkelCzbSdOTRSR7hLL05KxZ/41mQ89Jwyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1065920},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f80d7552b733934112b2dac30a47e13b95476bb0","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.7_1772635419954_0.6762294579066759","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@simplegen/simplegen","version":"0.1.8","_id":"@simplegen/simplegen@0.1.8","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"1f32fe38bbcbd21268dcbba9145bbd8551b14291","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.8.tgz","fileCount":216,"integrity":"sha512-Bev0RNIn8jOOnb1UZLlV7NG5QrN2GWXpFlDb/h1W++YHl7u0jONQx6jBgiNco+jeFKHq7e497rPxNUrYGcG0ZQ==","signatures":[{"sig":"MEUCIQCx5OKqoFRyCLy8rYoBbpveXixlcczVazGyrMdqBZdeFwIgfMB5rupmAOt/Tt8aFuJlU+17m4xGXLoYOIMuyHYIe2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1076101},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"398048e59f07ddf3a1403bfecec15e7a40607c64","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.8_1772803217532_0.9886254782191195","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@simplegen/simplegen","version":"0.1.9","_id":"@simplegen/simplegen@0.1.9","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"37b64f3bfee2d7b1ced31dc27dbc35fcc5c93cdd","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.9.tgz","fileCount":217,"integrity":"sha512-yEGcFoKraOlf7/U7xp6FM4QtA1p8HraTfdjwuplS4MKoToeN1lCTiGQfp+eslEYR/uULjCtGsvJ005qCi23pwQ==","signatures":[{"sig":"MEQCIB2XSnGYm0amPClDqaBTCWvk/t3qPOwyv1/Z/v/TNwNKAiA5+KZmZHTK2wlbGPIofCkWq7SfMnigwckrLjAep+EtSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1138032},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5192fad20e46b0bcde8a985ebd3f99b66145ef0a","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.9_1772809041675_0.34965417946952515","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@simplegen/simplegen","version":"0.1.10","_id":"@simplegen/simplegen@0.1.10","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"433a72c47d2ccadea69e5e7f2fb77ecef6fa8e3a","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.10.tgz","fileCount":217,"integrity":"sha512-I7zraPuWbVO41IFXP1TQ3+F0nyYiCB/9UInw7IU+UILD5st5K/qnp0WqpdqgdSMXjhWBqwsCoghQTzXm031hIA==","signatures":[{"sig":"MEQCIDXq/O4gmMzH1RMY3Gglk759VfKoHaW9qiUVg0R1f1I5AiAFYsizhI4xyZ/vitfZs0dw5jXiyBN8qAlUkwcQvIgiAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1164669},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b2c14d652423f875459016e9054e629cf1b424f","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.10_1773324093032_0.9139772960631483","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@simplegen/simplegen","version":"0.1.11","_id":"@simplegen/simplegen@0.1.11","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"e6a7aad7ac7270834456a10f050cdd354944c592","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.11.tgz","fileCount":218,"integrity":"sha512-kZ8+/iSOC8NQ1Nm0YwkKCqoLGt75W3oTEHc+J9Iory3wiKce5zmZ6Hbh8siWetLD0+HUKBScSPHqwyYOcBD2YA==","signatures":[{"sig":"MEYCIQCFdpFQvsrs4oZzWqLxn+srXZelIEjkv0mIkkTjNwbFPAIhAM0FNoIQOtdULX3sn2rkSRp+SsCXjcLV1w2o0LPL96MW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1213862},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8141f6f3ca5dfc1a5b0f5b6119e5016f0ccaf425","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.11_1773401645237_0.4243742558132384","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@simplegen/simplegen","version":"0.1.12","_id":"@simplegen/simplegen@0.1.12","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"1a7882611883e3992ffcf0c9f47ddf0f1159e0cf","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.12.tgz","fileCount":218,"integrity":"sha512-2kC0OiYKsNTp9wLchxDLrQPWNbLPxkfAcKkhZVF0TRz1OSNIk6e8rAqe/FMLXE6kIYvBLiZwLC1Vvv77rTg6Hg==","signatures":[{"sig":"MEYCIQDbZCeRq0ngM0ihi1p3d9NO1Yi0LFJQ/k4AKFbym+AEsQIhAK+imgV6BwzvAyc3qFCmMk+/eJsP7g0HfTURF7/PClZ4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1216295},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a6d5e102e5ca7c3a921bbfcbb40ab8f0b8344903","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.12_1773670520190_0.14586374758513232","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@simplegen/simplegen","version":"0.1.13","_id":"@simplegen/simplegen@0.1.13","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"4b41fe230bf600f6e7eca69607d631c1069d3fd4","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.1.13.tgz","fileCount":219,"integrity":"sha512-4B/wJtAkJMKakLJeEgLSUsWT5HFyX7C/ho7U7oPdU9CTIb5o+l1dw/BBxirNdlT94jTbHDiALK7yGnkVQh+r0w==","signatures":[{"sig":"MEYCIQDgcO9xBMrO0Nq6UZcUIVtmvfyUa1Us/hWSANV5KlqB5wIhAMP9ZnU3upgSEYh5MufwmbST4HNFJNON5WEPacikVYLq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1292615},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"06e01fe98eb15a6f6736e7b88715fe48e14ead38","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest","build":"rm -rf dist && tsc"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^8.57.0","vitest":"^1.3.0","typescript":"^5.4.0","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.1.13_1773904657137_0.9097300434894817","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@simplegen/simplegen","version":"0.2.0","_id":"@simplegen/simplegen@0.2.0","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"2ab397baa9b49c3a6ff9a99509bbcf26677835b3","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.2.0.tgz","fileCount":235,"integrity":"sha512-r8JnsFAmPZYoDkB3OuD8Yv/5PSzSzIz22CXmnpf0NH3eTTueHdy9w22+3ehGT6QqKmLT68YKDghCzFi5FVMJsA==","signatures":[{"sig":"MEUCIF7HsF6LZb+dhliZobN3J7diNZbRzjRMZOAXFhWDFhu4AiEA4fDyrGsnhftoBspUmVdmOdTk1TDFPxNGSLDiN9CJ/a4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1339942},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"712599110eff879073d23179c84277257083f720","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.2.0_1774622445325_0.3472525985533006","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@simplegen/simplegen","version":"0.2.1","_id":"@simplegen/simplegen@0.2.1","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"0d8885c338f65b38621a5075c88ece47f7a27f7e","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.2.1.tgz","fileCount":236,"integrity":"sha512-IGDYA+vOp5C8+erseNEtcur9OkzwdipIXnkn7NS4IF3tAxodjR0oaqBNSnyWq9cNP7whH2evemYpd7Ku/8kepg==","signatures":[{"sig":"MEYCIQCi3kAPxXidvp34y8dOgKCKGq0OqSuZOD7+Y0cOMvdeugIhAOIWH8BTvEPy4FXJj9/qCq27DVIQl/KM87qdC+BV8dZE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1381085},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"28f25076716af0d7143d1db3c6c5c133b3f886b4","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.2.1_1774623021386_0.49841084944476544","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@simplegen/simplegen","version":"0.2.2","_id":"@simplegen/simplegen@0.2.2","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"934a0e884de15caceaa8425d42678cbdff600faa","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.2.2.tgz","fileCount":245,"integrity":"sha512-3kqz9j7Hcwm29/PiehxqFInsd3lrqyUDjc8kbC/uSqWKieQ7mEPXhehcoBG4vcfDEBoS0wUeTvgsJxSiu+079g==","signatures":[{"sig":"MEQCIF9oVwpGa37bufoA30JHra3kdpTW062kF0EHrvaSZM9ZAiA4ps9ugyfS4db581X6UCpBs/Z41sGljD3/j1cnPVLMIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1393811},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9e4ead1e393ce3485b2843b8371f783a20d1cc61","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.2.2_1774624545440_0.5998159287679992","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@simplegen/simplegen","version":"0.2.3","_id":"@simplegen/simplegen@0.2.3","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"8739fd2deb7c5ff107d2738b88ff191ee63b62b9","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.2.3.tgz","fileCount":245,"integrity":"sha512-SzWpEzrLk2X9nreXRnXH6OjqjnB999CqUV4osguVTlr9xqnNzGy5gH8jNnKlenCx27QLxEaqJkKVebaZz1hCKg==","signatures":[{"sig":"MEQCIBRbTVA8KZ7v1ZM6M3zMOTseNlazlUX8e6SQa4F2EXW7AiBYHVZlG7i47tMGvPu1YtG3XyFcvYr72SZPKzId4XfnEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1444593},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e3a6ebdce89fbc72303e74a7fe86d502fe99ccfc","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.2.3_1775167588891_0.061251162228968425","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@simplegen/simplegen","version":"0.3.0","_id":"@simplegen/simplegen@0.3.0","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"5ad4010e3065696cdbecf6c4aea73e04307eb10a","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.3.0.tgz","fileCount":247,"integrity":"sha512-5iPbl/lgHeoGJXwp2Yj3RIsaP6a8QeW0o8cT37+COAL7RJZPySK8cFUVLvvFboBqitanIeNzI/p3fbPRpp+RPw==","signatures":[{"sig":"MEYCIQDE18XR8jdJ0/5VwCa8egLaXVDxLF4battwoakA7VQ67QIhAIKIr93I3Yg1QHyN7uU0Khk9HUI3ZWnhaPbTH51t02Mi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1680736},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"830bc2cbf38326aa4a654659b6920190abbcbc9c","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.3.0_1776429473955_0.48435409840401267","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@simplegen/simplegen","version":"0.3.1","_id":"@simplegen/simplegen@0.3.1","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"86cc081a0fdce758bb26570d46f4c9cef41846d6","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.3.1.tgz","fileCount":253,"integrity":"sha512-FIYn9qdEjaZwfb6WvipdWoxmBb85KXkqhProaCtG1yTpmeBjP9Lmc+mMXBMntLahw534n5gfvPbltuh1Ybo5cw==","signatures":[{"sig":"MEUCIA45pi8tcg16gClw/oa5ibjm0dAaxRbd4Qwzq876Jf8+AiEAorDFjC0kqVqNo5/4rPhalEHDzeo05ezMPUDASbiEwaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1739330},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"50e439448d5a2216ab8f0468e38513a5eb5002de","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.3.1_1777038901429_0.4132880399923482","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@simplegen/simplegen","version":"0.3.2","_id":"@simplegen/simplegen@0.3.2","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"1daa7f4df547957b16b4e2f2c943a88dc9060d98","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.3.2.tgz","fileCount":244,"integrity":"sha512-lvDuNphqdSz18n3Bq5R+E6NQLW1tD7031dq0Sptn82OjkPT1rY+RfNKIhOhneJHArqPSlVXKR7uAqtodCAGUtA==","signatures":[{"sig":"MEUCIB6M08ha9k/FkHDkMKG9FIuD3uuLdMADqpa0Hd3IAEtmAiEA9g1gw2bN0maavOmC+3t0bpGDz6YHC+c2R6a4rs7Q37c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1752138},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"17486df93d7b2271644ac0732d6bbfeaef5a30b8","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.3.2_1778075104350_0.20226198780910187","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@simplegen/simplegen","version":"0.4.0","_id":"@simplegen/simplegen@0.4.0","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"a8b3ddf03d9e03ab732c527112ef83de1ce886c1","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.4.0.tgz","fileCount":248,"integrity":"sha512-s/1WCqHjm3CR8FfeFVqYogOFWfBBcaqskCmkgcikt9uxShWV/ssFF94uQ0I0+sP139cGg5eT+z55m4PjB5ybmA==","signatures":[{"sig":"MEUCIEvzy+vgdqHajgXGc2ni0ItKU1YAewVW63L3O8WEOdeaAiEA/4YaV8fB0KnvK84selPjKBIpbgr8/EVyik27euIJMoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1788885},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b2735a421d01380bcdd8eeb187a7b71c81b46868","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.4.0_1778833841270_0.3534646512265931","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@simplegen/simplegen","version":"0.5.0","_id":"@simplegen/simplegen@0.5.0","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"a02ee90518b13a8177915b2bc02397d72a51d327","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.5.0.tgz","fileCount":257,"integrity":"sha512-OYMlzFgFieOqanHyjYb5M+Q2UbiF78eDWpDVQRn3YJNd2VmNXEw8ZrdqrHBmumFmWnhPagduoE9aMl8m3M5OrA==","signatures":[{"sig":"MEQCICMVJ27ZVDJpJlZfrdAJZCpMCsWr4GPl8OPSOaMi8Ye1AiANkbs0jCwH4tlp0jPhkBT8JzMOUrMFWVi03Jo7NPJB8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1313613},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e6c2ed7704e5b9ec6810080fa4c79d3c38cbcd9e","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","plantuml-encoder":"^1.4.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.5.0_1780571978952_0.8023661087723497","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@simplegen/simplegen","version":"0.5.1","_id":"@simplegen/simplegen@0.5.1","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"a5dd320ca69c3695df0610020ca6e5d006806929","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.5.1.tgz","fileCount":258,"integrity":"sha512-HBqpo4jpq/PmRRWvq87JG71N+1qPWmVfZBh1+Jw7kgHbc4xswfuHKiK/pBFOQJjfaxx5K2q6aekpc74Y8EtW6A==","signatures":[{"sig":"MEUCIHWFd/XY1+HNPY9rmIAQ0HkpW2hLLoUhrt8fguQfmTTQAiEA1VNKVm10NOeqbt0wd3trk1J9fv+IcmiEFTyz1jivLM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1281234},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0990f39d3076db0fd3930724ba8d28c417fc6bd6","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"rm -rf dist && tsc","test:unit":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","plantuml-encoder":"^1.4.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0","@typescript-eslint/parser":"^8.57.1","@typescript-eslint/eslint-plugin":"^8.57.1"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.5.1_1780904585210_0.1466217513908925","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@simplegen/simplegen","version":"0.6.0","_id":"@simplegen/simplegen@0.6.0","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"4a05497ef04e45783d33b05b5dd6410eb294ab69","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.6.0.tgz","fileCount":290,"integrity":"sha512-1i6bsiLGHn/v1zcIhnz7+RZsJvfG5j+od3pdKPvsguft2pc/D8BvOiqP7YTakqRcvmMMQ/d4u00BGaWwJooU8g==","signatures":[{"sig":"MEYCIQD9Sb0YeV0zbSDaZ9mYEMbrO7sW8hpmn0xRYOH0lc6/NAIhAK3zVDFusn3V4Dh0+5SPEazQTrf+VuNO/hKC8uX/96Mx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1340967},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"04cdd2fa427d4a923c41e52eec40894dd4c426bb","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","build:verify":"npm run build && esbuild dist/ci/verify-main.js --bundle --platform=node --format=esm --target=node18 --outfile=ci/simplegen-verify.mjs","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","esbuild":"^0.25.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.6.0_1785145939500_0.7492127952668008","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@simplegen/simplegen","version":"0.6.1","_id":"@simplegen/simplegen@0.6.1","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"bin":{"simplegen":"dist/cli.js"},"dist":{"shasum":"24bfeb2dec21dfb6249530af4ecffb8c0aaafc90","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.6.1.tgz","fileCount":290,"integrity":"sha512-kwiMh74Bh62ZJgJDCwDStP2B7ThflbtE6CzkGoL0zgaegu6PLUXZzeJms5psxL3qVArk0+bW7ZEOBGQNeujw2w==","signatures":[{"sig":"MEQCIAlMugKgVvbFs+G+KQUaaqy4YkeLZYxOFaobnLo4vw3tAiB2ApV3PMhuyNzIuT2OKk502yb87h5EWcTT/B9wfW2vcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1341284},"main":"dist/cli.js","type":"module","types":"./dist/cli.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9685c39eba0a79805eeb799bafe3c4dae3c5028c","scripts":{"dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","build:verify":"npm run build && esbuild dist/ci/verify-main.js --bundle --platform=node --format=esm --target=node18 --outfile=ci/simplegen-verify.mjs","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"_npmVersion":"10.8.2","description":"SimpleGen CLI for SimpleOne DSL configuration","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","eslint":"^10.0.3","vitest":"^1.3.0","esbuild":"^0.25.0","@eslint/js":"^10.0.1","typescript":"^5.4.0","@types/node":"^20.11.0","typescript-eslint":"^8.57.1","@stylistic/eslint-plugin":"^5.10.0"},"_npmOperationalInternal":{"tmp":"tmp/simplegen_0.6.1_1785158800428_0.1710207816505387","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@simplegen/simplegen","version":"0.6.2","description":"SimpleGen CLI for SimpleOne DSL configuration","type":"module","main":"dist/cli.js","bin":{"simplegen":"dist/cli.js"},"scripts":{"build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","build:verify":"npm run build && esbuild dist/ci/verify-main.js --bundle --platform=node --format=esm --target=node18 --outfile=ci/simplegen-verify.mjs","dev":"tsx watch src/cli.ts","lint":"eslint src/**/*.ts","test":"vitest run","test:integration":"vitest run --config vitest.integration.config.ts"},"devDependencies":{"@eslint/js":"^10.0.1","@stylistic/eslint-plugin":"^5.10.0","@types/node":"^20.11.0","esbuild":"^0.25.0","eslint":"^10.0.3","tsx":"^4.7.0","typescript":"^5.4.0","typescript-eslint":"^8.57.1","vitest":"^1.3.0"},"engines":{"node":">=18.0.0"},"_id":"@simplegen/simplegen@0.6.2","gitHead":"70f970a3d27d34fecf4da409b4290a8ae5e34055","types":"./dist/cli.d.ts","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-HrkSYh9E/fxQAvuLz8aN2NJJbzifGjpMyuGHgQ+KzRPweG9FqBV3m/vlQp8Rl7jQGy8CiDIKFd091Fwihk14bw==","shasum":"705e478da5865a501f45657a66af06d359e820b3","tarball":"https://registry.npmjs.org/@simplegen/simplegen/-/simplegen-0.6.2.tgz","fileCount":290,"unpackedSize":1356126,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCWdxN9oGM91Cpb97M8yVCPyzzXOcEhlSAsI3kWwV6P4AIgNwA/927voFEMBzbYSlDADACzEFtvMq1A0OXSzqGXR6g="}]},"_npmUser":{"name":"simplegen","email":"tech@simpleone.io"},"directories":{},"maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/simplegen_0.6.2_1786524229387_0.655897636087901"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-19T13:54:49.725Z","modified":"2026-08-12T08:43:49.708Z","0.1.0":"2026-02-19T13:54:49.993Z","0.1.1":"2026-02-19T14:10:57.242Z","0.1.2":"2026-02-24T13:46:49.660Z","0.1.3":"2026-02-26T12:09:17.917Z","0.1.4":"2026-02-26T12:55:13.999Z","0.1.5":"2026-02-27T13:04:55.699Z","0.1.6":"2026-02-28T13:58:31.964Z","0.1.7":"2026-03-04T14:43:40.135Z","0.1.8":"2026-03-06T13:20:17.718Z","0.1.9":"2026-03-06T14:57:21.847Z","0.1.10":"2026-03-12T14:01:33.180Z","0.1.11":"2026-03-13T11:34:05.406Z","0.1.12":"2026-03-16T14:15:20.378Z","0.1.13":"2026-03-19T07:17:37.304Z","0.2.0":"2026-03-27T14:40:45.496Z","0.2.1":"2026-03-27T14:50:21.581Z","0.2.2":"2026-03-27T15:15:45.635Z","0.2.3":"2026-04-02T22:06:29.108Z","0.3.0":"2026-04-17T12:37:54.142Z","0.3.1":"2026-04-24T13:55:01.649Z","0.3.2":"2026-05-06T13:45:04.582Z","0.4.0":"2026-05-15T08:30:41.425Z","0.5.0":"2026-06-04T11:19:39.098Z","0.5.1":"2026-06-08T07:43:05.474Z","0.6.0":"2026-07-27T09:52:19.660Z","0.6.1":"2026-07-27T13:26:40.577Z","0.6.2":"2026-08-12T08:43:49.541Z"},"description":"SimpleGen CLI for SimpleOne DSL configuration","maintainers":[{"name":"simplegen","email":"tech@simpleone.io"}],"readme":"# SimpleGen для SimpleOne\n\n**SimpleGen** — инструмент AI-разработки для платформы SimpleOne. Он скачивает конфигурацию со стенда, превращает её в TypeScript-файлы, помогает AI-агенту писать изменения по спецификации, собирает их в SOP-пакет и применяет на стенде.\n\n**Результат**: разработка задачи ведётся по спецификации, код генерируется и проверяется AI, а не вручную. Вы получаете структурированный код, который легко поддерживать, и ускоряете разработку.\n\n---\n\n## Содержание\n\n**Начало работы**\n\n1. [Как это работает](#как-это-работает)\n2. [Основные понятия](#основные-понятия)\n3. [Требования](#требования)\n4. [Установка](#установка)\n5. [Конфигурация подключения](#конфигурация-подключения)\n6. [Настройка AI-IDE](#настройка-ai-ide)\n\n**Практическая работа**\n\n7. [Шпаргалка команд (Quick Reference)](#шпаргалка-команд-quick-reference)\n8. [С чего начать](#с-чего-начать)\n9. [Рабочий процесс](#рабочий-процесс)\n10. [Работа с AI-IDE — slash-команды](#работа-с-ai-ide--slash-команды)\n\n**Справочники**\n\n11. [CLI-справочник](#cli-справочник)\n12. [Обновление SimpleGen](#обновление-simplegen)\n13. [Работа с Figma-макетами](#работа-с-figma-макетами)\n14. [Структура проекта](#структура-проекта)\n15. [Поддерживаемые сущности](#поддерживаемые-сущности)\n\n**Примеры и помощь**\n\n16. [Сценарии использования](#сценарии-использования)\n17. [FAQ и устранение проблем](#faq-и-устранение-проблем)\n18. [Схема разработки](#схема-разработки)\n\n---\n\n## Как это работает\n\n[Наверх ↑](#содержание)\n\n\n![Архитектура SimpleGen](https://mattermost.simpleone.ru/files/1amjixn71tbzif6ujn7xua74dy/public?h=f3oeGD7_6pU9vADAWDkNuBnphcyhy0B5LsU4fMFY8GA)\n\nДва инструмента работают вместе:\n\n- **CLI** (`simplegen`) — выгрузка конфигурации, сборка и деплой SOP, откат. Запускается в терминале.\n- **AI-агент** (`/simplegen.*`) — создаёт спецификации, строит план, генерирует и ревьюит DSL-код. Запускается в чате AI-IDE через меню `/`.\n\nВ повседневной разработке вы почти всегда работаете через AI-агент — он сам вызывает CLI там, где нужно.\n\n## Основные понятия\n\n[Наверх ↑](#содержание)\n\n\n| Термин              | Что это                                                                                                                                    |\n| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n| **DSL**             | Конфигурация SimpleOne в виде TypeScript-файлов. Таблицы, колонки, роли, ACL, формы, виджеты — всё описывается как экспортируемые объекты. |\n| **SOP**             | Пакет изменений SimpleOne, который загружается на стенд. Аналог патча или миграции.                                                        |\n| **Dev-стенд**       | Сервер SimpleOne для разработки и проверки. В примерах: `https://dev.example.com`.                                                         |\n| **Продукт**         | Приложение SimpleOne (`itsm`, `hrm`, `crm` и т.д.). В репозитории — отдельный каталог.                                                     |\n| **`platform/`**     | Выгруженная конфигурация платформы SimpleOne. Read-only, не редактируется вручную.                                                         |\n| **`sa/`**           | Выгруженная конфигурация Simple Application. Редактируется только при наличии вендорских прав.                                             |\n| **`domain/`**       | Ваши изменения в рамках продукта. Здесь живёт весь код, который вы пишете.                                                                 |\n| **Задача**          | Каталог `<product>/tasks/<task_id>/`. Хранит спецификацию, план, SOP-файл и логи.                                                          |\n| **Активная задача** | Задача, путь к которой записан в `.env` (`SIMPLEGEN_ACTIVE_FEATURE`). AI-агент работает именно с ней.                                               |\n| **VCS local pack**  | 18-значный числовой ID пакета SimpleOne VCS. Используется для точечной синхронизации и отката.                                             |\n| **Table API**       | REST API SimpleOne для работы с записями. Через него SimpleGen отправляет изменения на стенд.                                              |\n\n## Требования\n\n[Наверх ↑](#содержание)\n\n| Компонент                | Версия / Условие                              |\n| ------------------------ | --------------------------------------------- |\n| Node.js                  | `>=18.0.0`                                    |\n| npm                      | идёт в комплекте с Node.js                    |\n| git                      | любая актуальная версия                       |\n| AI-IDE                   | с доступом к workspace проекта                |\n| Dev-стенд SimpleOne      | доступен по HTTPS                             |\n| Учётная запись на стенде | с правами на чтение и запись нужных сущностей |\n\nПроверка:\n\n```bash\nnode --version\nnpm --version\ngit --version\n```\n\n> **Права на деплой.** При отправке изменений через Table API пользователь должен иметь права на создание и изменение целевых записей. Для создания ACL, ролей и записей в защищённых таблицах могут потребоваться elevated-роли (например, `security_admin`).\n\n## Установка\n\n[Наверх ↑](#содержание)\n\nУстановите CLI-пакет глобально:\n\n```bash\nnpm install -g @simplegen/simplegen\n```\n\nПроверьте, что CLI доступен:\n\n```bash\nsimplegen --version\nsimplegen --help\n```\n\n> Если команда не найдена, проверьте, что глобальный npm bin-каталог добавлен в `PATH`.\n\n## Конфигурация подключения\n\n[Наверх ↑](#содержание)\n\nSimpleGen читает настройки подключения из `.env`-файла или переменных окружения.\n\n### Пример `.env`\n\nМинимальный вариант (логин и пароль):\n\n```dotenv\nSIMPLEONE_URL=https://dev.example.com\nSIMPLEONE_LOGIN=admin\nSIMPLEONE_PASSWORD=<password>\n```\n\nВариант с API-ключом:\n\n```dotenv\nSIMPLEONE_URL=https://dev.example.com\nSIMPLEONE_API_KEY=<api-key>\n```\n\nВариант с elevated-ролями (нужны для ACL и ролей):\n\n```dotenv\nSIMPLEONE_URL=https://dev.example.com\nSIMPLEONE_LOGIN=admin\nSIMPLEONE_PASSWORD=<password>\nSIMPLEONE_ELEVATED_ROLES=security_admin\n```\n\n### Переменные окружения\n\n| Переменная                 | Обязательная                 | Описание                    |\n| -------------------------- | ---------------------------- | --------------------------- |\n| `SIMPLEONE_URL`            | Да                           | URL dev-стенда              |\n| `SIMPLEONE_API_KEY`        | Да, если нет логина и пароля | API-ключ                    |\n| `SIMPLEONE_LOGIN`          | Да, если нет API-ключа       | Логин пользователя          |\n| `SIMPLEONE_PASSWORD`       | Да, если нет API-ключа       | Пароль                      |\n| `SIMPLEONE_ELEVATED_ROLES` | Нет                          | Elevated-роли через запятую |\n| `SIMPLEGEN_ENV_FILE`       | Нет                          | Явный путь к `.env`-файлу   |\n| `SIMPLEGEN_ACTIVE_FEATURE` | Нет                          | Активная фича (`<product>/<task_id>`); ставится командой `simplegen context` |\n\nНужно указать `SIMPLEONE_API_KEY` **или** пару `SIMPLEONE_LOGIN` + `SIMPLEONE_PASSWORD`.\n\n### Активная фича\n\nТекущая задача хранится в `.env` как `SIMPLEGEN_ACTIVE_FEATURE=<product>/<task_id>`. Так как `.env` в `.gitignore`, контекст не попадает в гит и не создаёт конфликтов между разработчиками. Управление — через CLI:\n\n```bash\nsimplegen context sa STR001234   # установить активную фичу\nsimplegen context                 # показать текущую\nsimplegen context --clear         # сбросить\n```\n\nСкил `/simplegen.context_set` вызывает эту же команду.\n\n### Где SimpleGen ищет `.env`\n\nSimpleGen проверяет источники в таком порядке (первый найденный побеждает):\n\n1. Переменная окружения `SIMPLEGEN_ENV_FILE`\n2. Файл `.env` в корне git-репозитория\n3. Файл `~/.simplegen/.env`\n4. Переменные процесса (без файла)\n\nЕсли одно и то же значение задано и в файле, и в переменных процесса — приоритет у переменных процесса.\n\n> **Безопасность.** Не коммитьте `.env`, пароли и ключи в репозиторий. Добавьте `.env` в `.gitignore`. Для CI используйте защищённые переменные окружения.\n\n---\n\n## Настройка AI-IDE\n\n[Наверх ↑](#содержание)\n\n> **Проект уже должен быть инициализирован.** Если вы ещё не выполнили `simplegen init`, сначала прочитайте раздел [С чего начать](#с-чего-начать).\n\nДля работы со slash-командами требуется AI-IDE с доступом к workspace проекта.\n\n### Установка и настройка\n\nДля работы с проектом откройте его корневую папку в IDE. Skills, субагенты и slash-команды устанавливаются командой `simplegen init` в каталоги `.claude/` и `.opencode/`. IDE автоматически подхватывает их при вводе `/` в чате AI-агента.\n\n> Если команды не появились — перезапустите IDE. Если не помогло, переинициализируйте проект командой `/simplegen.init` в чате AI-агента.\n\n#### Поддерживаемые AI-IDE\n\nSimpleGen генерирует `.claude/` и `.opencode/`. Другие AI-IDE могут работать, если умеют читать эти структуры. Примеры:\n\n| IDE          | Поддержка |\n| ------------ | -------------------- |\n| **Claude Code**  | `нативно, через .claude/`           |\n| **OpenCode**  | `нативно, через .opencode/`           |\n| **VS Code**  | `условно, через .claude/`           |\n| **Cursor**   | `условно, через .claude/`           |\n| **KiloCode** | `условно, через .opencode/`         |\n\n---\n\n## Шпаргалка команд (Quick Reference)\n\n[Наверх ↑](#содержание)\n\n> **Шпаргалка для тех, кто уже знаком с командами.** Если вы впервые работаете с SimpleGen — сначала прочитайте раздел [С чего начать](#с-чего-начать), затем возвращайтесь сюда для быстрого поиска.\n\n### Для терминала (CLI)\n\n```bash\n# Инициализация и обновление\nsimplegen init \"Название продукта\" # Первая инициализация проекта\nsimplegen sync \"Название продукта\" # Синхронизировать DSL со стенда\nsimplegen init --skip-export       # Обновить шаблоны AI-IDE из пакета (оффлайн, без выгрузки DSL)\nsimplegen context sa STR001234 # Установить активную фичу (в .env)\n\n# Сборка и деплой\nsimplegen patch itsm  # Live-деплой: дозаписать дифф в единую сопку (быстрая итерация)\nsimplegen build itsm # Пересобрать с нуля и выгрузить самодостаточный SOP-пакет\nsimplegen rollback itsm 123456789012345678 # Откатить определённый пакет\n\n# Справка\nsimplegen --v # Версия CLI\nsimplegen --help  # Полная справка\n```\n\n### Для AI-IDE (выбирайте из меню `/`)\n\n| Фаза             | Команда                        | Когда использовать                            |\n| ---------------- | ------------------------------ | --------------------------------------------- |\n| **Спецификация** | `/simplegen.spec_create`       | Начать новую задачу                           |\n|                  | `/simplegen.spec_check`        | Уточнить требования, найти пробелы            |\n|                  | `/simplegen.spec_plan`         | Построить план реализации                     |\n| **Разработка**   | `/simplegen.code_generate`     | Сгенерировать код по плану                    |\n|                  | `/simplegen.code_review`       | Проверить качество кода                       |\n| **Деплой**       | `/simplegen.product_patch`     | Собрать SOP и применить на стенд              |\n|                  | `/simplegen.product_rollback`  | Откатить неудачный деплой                     |\n| **Демо**         | `/simplegen.demo_plan`         | Подготовить демо-сценарий                     |\n|                  | `/simplegen.demo_data_prepare` | ⚡ Сгенерировать демоданные                    |\n|                  | `/simplegen.demo_run`          | ⚡ Запустить автоматическую демонстрацию       |\n| **Управление**   | `/simplegen.product_sync`      | Синхронизировать изменения со стенда          |\n|                  | `/simplegen.context_set`       | Переключиться на другую задачу                |\n\n**⚡ Beta** — команды в бета-тестировании, проверяйте результат вручную.\n\n### Типовая последовательность команд\n\n```\n1. /simplegen.spec_create       ← Создать задачу\n2. /simplegen.spec_check        ← Проверить требования\n3. /simplegen.spec_plan         ← Построить план\n4. git commit                   ← Зафиксировать спецификацию\n5. /simplegen.code_generate     ← Сгенерировать код (может быть несколько раз)\n6. /simplegen.code_review       ← Проверить код (до фиксации кода в git)\n7. git commit                   ← Зафиксировать реализацию\n8. /simplegen.product_patch     ← Задеплоить на dev-стенд\n9. /simplegen.demo_plan         ← (Опционально) Подготовить демо\n```\n\n## С чего начать\n\n[Наверх ↑](#содержание)\n\n### Вариант А: новый проект\n\nИспользуйте, если репозитория ещё нет.\n\n**1.** Создайте каталог и инициализируйте git:\n\n```bash\nmkdir my-project\ncd my-project\ngit init\n```\n\n**2.** Создайте файл `.env`:\n\n```dotenv\nSIMPLEONE_URL=https://dev.example.com\nSIMPLEONE_LOGIN=admin\nSIMPLEONE_PASSWORD=<password>\n```\n\n**3.** Запустите инициализацию SimpleGen:\n\n```bash\nsimplegen init \"Название продукта\"\n```\n\n> Название должно совпадать со значением поля `name` приложения на стенде SimpleOne. Для крупных продуктов выгрузка может занять несколько минут.\n\n**4.** Установите зависимости (ESLint и git-хуки):\n\n```bash\nnpm install\n```\n\n**5.** Зафиксируйте начальное состояние:\n\n```bash\ngit add .\ngit commit -m \"Initial SimpleGen setup\"\n```\n\n**6.** Откройте проект в AI-IDE. В чате должны появиться slash-команды при вводе `/simplegen`.\n\n---\n\n### Вариант Б: существующий проект\n\nИспользуйте, если репозиторий уже создан коллегой.\n\n**1.** Склонируйте репозиторий:\n\n```bash\ngit clone <repo-url>\ncd <project-dir>\n```\n\n**2.** Установите SimpleGen, если ещё нет:\n\n```bash\nnpm install -g @simplegen/simplegen\n```\n\n**3.** Установите зависимости проекта:\n\n```bash\nnpm install\n```\n\n**4.** Проверьте версию CLI:\n\n```bash\nsimplegen --version\n```\n\nУбедитесь, что команда выполняется без ошибок. Если при дальнейшей работе появятся сообщения о несовместимости версий — см. раздел [Обновление SimpleGen](#обновление-simplegen).\n\n## Рабочий процесс\n\n[Наверх ↑](#содержание)\n\nТиповой цикл разработки одной задачи:\n\n![Рабочий процесс SimpleGen](https://mattermost.simpleone.ru/files/efqjr7358inb9e757q4xyrmhca/public?h=GQ156z-Vz313Zy2GhImhXMUG2RqrqPaUhJI5eDfN4Ao)\n\n**Обозначения на диаграмме:**\n- 🔵 Синий цвет — AI-агент (команды `/simplegen.*`)\n- 🟡 Жёлтый цвет — команды git (зафиксировать прогресс)\n- 🟢 Зелёный цвет — успешное завершение кодогенерации (build, demo)\n- 🔴 Красный цвет — откат при ошибке\n\n### Фаза спецификации (SPEC)\n\n**Что происходит: определение требований**\n\nАгент анализирует бизнес-описание и создаёт структурированную спецификацию с Use Cases, функциональными требованиями, моделью данных и критериями приёмки.\n\n**Команды фазы:**\n\n#### Шаг 1️⃣: `/simplegen.spec_create` — Создать задачу\n\n**Когда использовать:** Начало новой функции, доработки или дефекта\n**Входные данные:** Бизнес-описание (UC, требования, критерии приёмки)\n**Выход:** Спецификация в `_spec.md` и активная задача\n\nВ чате AI-IDE выберите команду через меню `/`:\n\n```\n/simplegen.spec_create\n\nSTR001234\nНазвание: Валидация срочности задачи\nОписание: При сохранении записи task поле urgency должно быть обязательным.\nКритерии приёмки:\n- Если urgency пустое, система показывает ошибку.\n- Запись не сохраняется без urgency.\n```\n\n> **Важно:** Команды SimpleGen работают **только через меню `/`** в AI-IDE. Если вставить текст обычным сообщением, агент не применит нужный шаблон.\n\n**Что создаётся:**\n\n```\n<product>/tasks/STR001234/\n├── _spec.md               — структурированная спецификация\n├── simplegen.json         — метаданные задачи (initial_commit_sha, last_patch и др.)\n└── build_logs/            — каталог для логов и SOP-файлов\n```\n\nЗадача становится активной: в `.env` записывается `SIMPLEGEN_ACTIVE_FEATURE=<product>/STR001234`.\n\n---\n\n#### Шаг 2️⃣: `/simplegen.spec_check` — Уточнить требования\n\n**Когда использовать:** После создания спецификации, перед планированием\n**Входные данные:** Текущий `_spec.md`\n**Выход:** Уточненная спецификация\n\n```\n/simplegen.spec_check\n```\n\n**Что делает агент:**\n- Анализирует спецификацию на полноту\n- Ищет пробелы: неполные Use Cases, отсутствующие требования\n- Проверяет модель данных на согласованность\n- Выявляет потенциальные проблемы с доступами (ACL, роли)\n- Задаёт уточняющие вопросы и обновляет `_spec.md` по ответам\n\n**Продолжайте `spec_check` до тех пор, пока:**\n- Все Use Cases полностью описаны\n- Модель данных согласована\n- Критерии приёмки проверяемы\n- Нет открытых вопросов\n\n---\n\n#### Шаг 3️⃣: `/simplegen.spec_plan` — Построить план реализации\n\n**Когда использовать:** После завершения спецификации\n**Входные данные:** Финальный `_spec.md`\n**Выход:** План в `_task_plan.md`\n\n```\n/simplegen.spec_plan\n```\n\n**Что создаётся:**\n\n```\n<product>/tasks/STR001234/\n├── _task_plan.md          — план с фазами, зависимостями, трассировкой\n```\n\n**Содержание плана:**\n- **Фазы реализации** — логические блоки работы (например: \"Модель\", \"Логика\", \"UI\")\n- **FR/UC трассировка** — какие требования реализуются в какой фазе\n- **Зависимости** — если фаза 2 зависит от фазы 1\n\n> **Повторный запуск (merge).** Если `_task_plan.md` уже есть, `spec_plan` не собирает план с нуля: состав задач пересобирается из актуальной `_spec.md`, а прогресс (`- [x]`) переносится на совпавшие задачи. Задачи с изменившимся требованием сбрасываются в `- [ ]` с пометкой `⚠️ требование обновлено`, а исчезнувшие из спеки — выносятся в раздел `⚠️ Устарело — проверить`.\n\n**После создания плана:**\n\n```bash\ngit add . && git commit -m \"spec: STR001234\"\n```\n\n⚠️ **Важно:** Коммитьте спецификацию и план ДО генерации кода. Это точка возврата при ошибке.\n\n---\n\n### Фаза разработки (CODE)\n\n**Что происходит: реализация функциональности**\n\nАгент генерирует TypeScript/DSL-код на основе плана, затем проверяет качество и соответствие спецификации.\n\n**Команды фазы:**\n\n#### Шаг 4️⃣: `/simplegen.code_generate` — Сгенерировать код\n\n**Когда использовать:** После завершения и коммита плана\n**Входные данные:** `_spec.md` и `_task_plan.md`\n**Выход:** Сгенерированные файлы в `<product>/domain/`\n\n```\n/simplegen.code_generate         — все фазы\n/simplegen.code_generate 1       — только фаза 1\n/simplegen.code_generate 2-3     — фазы 2 и 3\n```\n\n**Что происходит:**\n- Агент анализирует спецификацию и план\n- Генерирует TypeScript-файлы с DSL-кодом\n- Размещает файлы по категориям: `data-structure/`, `business-logic/`, `access-control/`, `forms/` и т.д.\n- **Изменения остаются незакоммиченными** — вы их сначала проверяете\n\n**Как видеть, что было сгенерировано:**\n\n```bash\ngit status    # Показывает новые и изменённые файлы\ngit diff      # Детальный diff сгенерированного кода\n```\n\n---\n\n#### Шаг 5️⃣: `/simplegen.code_review` — Проверить качество кода\n\n**Когда использовать:** После генерации, перед коммитом\n**Входные данные:** Сгенерированные файлы в `domain/`\n**Выход:** Проверка качества или список замечаний\n\n```\n/simplegen.code_review\n```\n\n**Что проверяет агент:**\n- ✅ Соответствие спецификации и плану\n- ✅ Синтаксис DSL и TypeScript\n- ✅ Качество скриптов, производительность\n- ✅ Правила доступа (ACL) логичны\n- ✅ Названия колонок, таблиц, функций — понятны\n\n**Типовой процесс ревью:**\n\n```\n1. /simplegen.code_review\n2. Агент находит замечания и описывает их\n3. Вы обсуждаете и исправляете файлы в AI-IDE\n4. /simplegen.code_review  ← повторная проверка\n5. Когда замечаний нет → git commit\n```\n\n---\n\n#### Шаг 6️⃣: `git commit` — Зафиксировать реализацию\n\n**Когда выполнять:** Когда `code_review` одобрил все файлы\n\n**Команда:**\n\n```bash\ngit add .\ngit commit -m \"feat: STR001234\"\n```\n\n---\n\n### Фаза деплоя (DEPLOY)\n\n**Что происходит: загрузка SOP на dev-стенд**\n\nCLI собирает изменения, создаёт SOP-пакет и применяет его на стенде.\n\n#### Шаг 7️⃣: `/simplegen.product_patch` — Задеплоить на стенд\n\n**Когда использовать:** После готового кода и для каждой следующей итерации\n**Входные данные:** Git-репозиторий с коммитом\n**Выход:** JSON-лог, local pack ID\n\n```\n/simplegen.product_patch\n```\n\n**Что происходит:**\n1. Агент проверяет версию SimpleGen\n2. Проверяет активную задачу\n3. Показывает превью: какие файлы будут загружены (с учётом рабочего дерева)\n4. Просит подтверждение\n5. Запускает `simplegen patch`\n6. Дозаписывает записи в единую сопку на dev-стенде через Table API (поверх текущего состояния, без отката)\n\n**Результат:**\n\n```json\n{\n  \"productName\": \"itsm\",\n  \"localPackId\": \"123456789012345678\",\n  \"recordCount\": 7,\n  \"results\": { \"success\": 7, \"failed\": 0 },\n  \"headSha\": \"abc123…\",\n  \"warnings\": []\n}\n```\n---\n\n### Фаза завершения (DEMO)\n\n**Опционально:** Подготовить демо и демоданные\n\n#### Шаг 8️⃣: `/simplegen.demo_plan` (опционально) — Подготовить демо\n\n```\n/simplegen.demo_plan\n```\n\nСоздаёт сценарий для демонстрации функциональности заказчику. Подробнее в разделе [Сценарии использования](#сценарии-использования).\n\n## Работа с AI-IDE — slash-команды\n\n[Наверх ↑](#содержание)\n\nSlash-команды — это инструкции для AI-агента. SimpleGen устанавливает их как skills в `.claude/skills/` (и как команды в `.opencode/commands/`) при инициализации.\n\n**Правило:** выбирайте команду из меню `/` в чате AI-IDE, не вставляйте её текстом.\n\n> Полный список команд — в разделе [Шпаргалка команд](#шпаргалка-команд-quick-reference).\n\n---\n\n### Инициализация и обслуживание\n\n**Создать или обновить проект:**\n\n```\n/simplegen.init\n```\n\nАгент сохраняет контекст активной задачи, запускает `simplegen init <productName>` и проверяет результат.\n\n**Обновить шаблоны из пакета (оффлайн, без выгрузки DSL):**\n\n```\nsimplegen init --skip-export\n```\n\nЗапускается **оффлайн** (не требует `.env` и подключения к стенду), обновляет **только** шаблоны:\n- ✅ `.claude/skills/`, `.claude/agents/` — правила, команды и субагенты Claude Code (канон)\n- ✅ `.opencode/rules/`, `.opencode/commands/`, `.opencode/agents/`, `opencode.json` — то же для OpenCode (генерируется из `.claude/`)\n- ✅ `simpleone-api.d.ts` — типы и справочник API SimpleOne\n- ✅ `jsconfig.json`, `AGENTS.md` — конфиги и контексты\n- ✅ `version` в `.simplegen/state.json`\n\n**Не трогает:** `platform/`, `sa/`, `<product>/domain/`, задачи (при soft-init, без `--force`).\n\n**Когда использовать:** После `npm update @simplegen/simplegen`, либо если при запуске `sync`, `build` или `rollback` появилось сообщение `Package version changed...`\n\n**Синхронизировать DSL со стенда:**\n\n```\n/simplegen.product_sync\n```\n\nПо ID пакета VCS (точечная синхронизация):\n\n```\n/simplegen.product_sync 123456789012345678\n```\n\n> При полной синхронизации `platform/`, `sa/` и `<product>/domain/` перезаписываются. Незакоммиченные изменения будут потеряны.\n\n**Установить активную задачу:**\n\n```\n/simplegen.context_set STR001234\n```\n\nАгент проверяет наличие каталога и `simplegen.json` задачи, записывает `SIMPLEGEN_ACTIVE_FEATURE` в `.env` (командой `simplegen context`) и показывает сводку по файлам.\n\n---\n\n### Спецификация\n\n**Создать задачу:**\n\n```\n/simplegen.spec_create\n```\n\nИспользуйте для новой user story, доработки, дефекта или задачи с Figma-макетом. Агент превращает бизнес-описание в структурированный `_spec.md`.\n\n**Проверить и уточнить:**\n\n```\n/simplegen.spec_check\n```\n\nИспользуйте после создания спецификации, при добавлении новых требований или после начала разработки.\n\n**Построить план:**\n\n```\n/simplegen.spec_plan\n```\n\nИспользуйте после проверки спецификации. Для дефектов команда работает в упрощённом режиме: сама создаёт компактный `_spec.md` и генерирует `_task_plan.md`.\n\n---\n\n### Генерация и review\n\n**Сгенерировать код:**\n\n```\n/simplegen.code_generate          — все фазы\n/simplegen.code_generate 1        — только фаза 1\n/simplegen.code_generate 2-3      — фазы 2 и 3\n```\n\n**Проверить код:**\n\n```\n/simplegen.code_review\n```\n\nИспользуйте перед коммитом, перед сборкой SOP, после ручных правок в DSL.\n\n---\n\n### Сборка, деплой и откат\n\n**Задеплоить:**\n\n```\n/simplegen.product_patch\n```\n\n**Откатить:**\n\n```\n/simplegen.product_rollback\n```\n\nАгент ищет последний успешный local pack ID в `build_logs/` и запускает откат.\n\n> **Откат пакета ≠ откат кода в git.** `product_rollback` возвращает стенд к предыдущей версии SOP. Файлы в репозитории не меняются.\n\n---\n\n### Демо\n\n**Подготовить демо-сценарий:**\n\n```\n/simplegen.demo_plan\n```\n\nСоздаёт `_demo_plan.md` со списком нужных демоданных и пошаговым сценарием. Подробнее — в разделе [Сценарии использования](#сценарии-использования).\n\n**Сгенерировать демоданные (Beta):**\n\n```\n/simplegen.demo_data_prepare\n```\n\nСоздаёт `_demo_data.json`. Проверьте содержимое вручную, затем создайте записи на стенде.\n\n**Запустить демонстрацию (Beta):**\n\n```\n/simplegen.demo_run\n```\n\nВоспроизводит сценарий в браузере с реальными данными и пишет лог в `_demo_log.md`.\n\n> **⚡ Beta** — `demo_data_prepare` и `demo_run` находятся в бета-тестировании, проверяйте результат вручную.\n\n## CLI-справочник\n\n[Наверх ↑](#содержание)\n\nCLI-команды запускаются в терминале. В повседневной разработке их вызывает AI-агент автоматически. Запускайте вручную, когда нужно точно контролировать параметры.\n\n---\n\n### `simplegen init`\n\nИнициализирует или обновляет проект.\n\n```bash\nsimplegen init [productName] [--skip-export] [--force] [--no-commit]\n```\n\n| Опция               | Описание                                                                                                      |\n| ------------------- | ------------------------------------------------------------------------------------------------------------- |\n| `productName`       | Имя продукта (должно совпадать с `name` приложения на стенде)                                                 |\n| `--skip-export`     | Не выгружать DSL со стенда (только шаблоны)                                                                   |\n| `--force`           | Полный сброс: удаляет `platform/`, `sa/`, `<product>/domain/` и перезаписывает `.claude/`, `.opencode/`       |\n| `--no-commit`       | Не создавать первый коммит на свежем репозитории                                                              |\n\n**Примеры:**\n\n```bash\nsimplegen init \"ITSM\"\nsimplegen init \"ITSM\" --force\n```\n\n**Что выполняется:**\n\n1. Находит корень git-репозитория.\n2. Обновляет `.claude/skills/`, `.claude/agents/`, `.opencode/` (`rules/`, `commands/`, `agents/`, `opencode.json`), `AGENTS.md`, `simpleone-api.d.ts`, `jsconfig.json`.\n3. Настраивает ESLint и git-хук `pre-commit`.\n4. Создаёт файлы продукта: `<product>/AGENTS.md`.\n5. Загружает конфигурацию, аутентифицируется и выгружает `platform/`, `sa/` и `<product>/domain/` со стенда (пропускается при `--skip-export` — тогда команда полностью оффлайн).\n6. Записывает `.simplegen/state.json`.\n\n---\n\n### `simplegen sync`\n\nОбновляет DSL в репозитории из актуальной конфигурации на стенде. Требует уже инициализированного репозитория.\n\n```bash\nsimplegen sync [productName|packId]\n```\n\n| Аргумент           | Описание                                     |\n| ------------------ | -------------------------------------------- |\n| `productName`      | Полная синхронизация продукта                |\n| `packId`           | Точечная синхронизация по 18-значному VCS ID |\n| *(без аргументов)* | Синхронизирует только `platform/` и `sa/`    |\n\n**Примеры:**\n\n```bash\nsimplegen sync \"ITSM\"\nsimplegen sync 123456789012345678\nsimplegen sync\n```\n\n> `sync` перезаписывает `platform/`, `sa/` и `<product>/domain/`. Файлы задач (`tasks/`) не трогаются.\n\n---\n\n### `simplegen context`\n\nУправляет активной фичей — записывает `SIMPLEGEN_ACTIVE_FEATURE=<product>/<task_id>` в `.env`.\n\n```bash\nsimplegen context <productName> <taskId>  # установить активную фичу\nsimplegen context                         # показать текущую\nsimplegen context --clear                 # сбросить\n```\n\n**Примеры**:\n\n```bash\nsimplegen context sa STR001234\n```\n\n---\n\n### `simplegen patch`\n\nLive-деплой на стенд: берёт дифф `last_patch.commit_sha..HEAD` (включая рабочее дерево) и **дозаписывает** изменённые записи в local pack. Записи применяются сразу, поверх текущего состояния стенда, без отката и без экспорта сопки. Для финальной сборки используйте `simplegen build`.\n\n```bash\nsimplegen patch <productName> [--commit <ref>]\n```\n\n| Аргумент/Опция      | Описание                                                          |\n| ------------------- | ----------------------------------------------------------------- |\n| `productName`       | Имя каталога продукта (обязательно)                               |\n| `--commit <ref>`    | Считать дифф от указанного коммита/диапазона вместо `last_patch.commit_sha` |\n\n**Примеры**:\n\n```bash\nsimplegen patch sa\n```\n\n**Поведение:**\n\n- Требует активную задачу (`SIMPLEGEN_ACTIVE_FEATURE` в `.env`).\n- Все сборки идут в одну сопку из `last_patch.local_pack_id`, созданную при первом вызове. Если пака нет — создаёт новый.\n- При успехе двигает `last_patch.commit_sha` на текущий HEAD.\n- Учитывает рабочее дерево: дифф считается `last_patch.commit_sha` → рабочее дерево, включая незакоммиченные правки (staged + unstaged) и новые untracked-файлы.\n\n---\n\n### `simplegen build`\n\nПересобирает решение из DSL в **новую** сопку, выгружает её в самодостаточный SOP-файл — на стенде остаётся чистый самодостаточный пакет без лишних записей.\n\n```bash\nsimplegen build <productName> [--commit <ref>]\n```\n\n| Аргумент/Опция      | Описание                                       |\n| ------------------- | ---------------------------------------------- |\n| `productName`       | Имя каталога продукта (обязательно)            |\n| `--commit <ref>`    | Пересобрать от конкретного коммита/диапазона (по умолчанию `initial_commit_sha`) |\n\n**Примеры:**\n\n```bash\nsimplegen build itsm\n```\n\n---\n\n### `simplegen rollback`\n\nОткатывает пакет VCS на стенде.\n\n```bash\nsimplegen rollback <productName> <packId>\n```\n\n**Пример:**\n\n```bash\nsimplegen rollback itsm 123456789012345678\n```\n\nID пакета можно найти в JSON-логах в `build_logs/` или получить от `/simplegen.product_rollback`.\n\n---\n\n### `simplegen init --skip-export`\n\nОбновляет шаблоны AI-IDE из установленного npm-пакета **оффлайн** — не требует `.env` и не обращается к стенду (выгрузка DSL пропускается).\n\n```bash\nsimplegen init --skip-export\n```\n\nКопирует свежие версии `.claude/skills/` и `.claude/agents/` из пакета, генерирует из них `.opencode/`, обновляет `simpleone-api.d.ts`, `jsconfig.json`, `AGENTS.md` и `version` в `.simplegen/state.json`.\n\n---\n\n### `simplegen --version` / `simplegen --help`\n\n```bash\nsimplegen --version    # версия CLI\nsimplegen --version           # то же\nsimplegen --help       # справка\n```\n\n---\n\n### Произвольный путь к `.env`\n\nЧтобы все команды читали `.env` не из корня репозитория, а из указанного файла, задайте переменную окружения `SIMPLEGEN_ENV_FILE` (см. [порядок поиска `.env`](#где-simplegen-ищет-env)):\n\n```bash\nSIMPLEGEN_ENV_FILE=/path/to/.env.dev simplegen patch itsm\n```\n\n## Обновление SimpleGen\n\n[Наверх ↑](#содержание)\n\nПосле обновления пакета (`npm update -g @simplegen/simplegen`) нужно решить, что делать с проектом. Используйте эту схему:\n\n![Обновление SimpleGen](https://mattermost.simpleone.ru/files/fbkmcw7mujdhiefqwyjfceuk3o/public?h=2AFgjP9boqG0uG5wCHClqfYzQSFKSJEJtId4pqg0Loc)\n\n### Шаг за шагом\n\n**1. Обновить CLI:**\n\n```bash\nnpm update -g @simplegen/simplegen\nsimplegen --version\n```\n\n**2. Если нужно обновить только правила и шаблоны AI-IDE (без повторной выгрузки DSL) — оффлайн:**\n\n```bash\nsimplegen init --skip-export\n```\n\n**3. Если при запуске `sync`, `build` или `rollback` появилось сообщение об изменении версии:**\n\n```text\nPackage version changed since last init (X → Y). Run 'simplegen init' to re-initialize.\n```\n\n```bash\nsimplegen init \"Название продукта\"\n```\n\nЕсли нужен полный сброс DSL-данных (выгрузить всё заново):\n\n```bash\nsimplegen init \"Название продукта\" --force\n```\n\n> Перед `--force` убедитесь, что все важные изменения закоммичены в git.\n\n**4. Установить зависимости проекта (если `package.json` изменился после `init`):**\n\n```bash\nnpm install\n```\n\n### Чем отличаются режимы `init`\n\n|                                                  | `init --skip-export` | `init`                        |\n| ------------------------------------------------ | -------------------- | ----------------------------- |\n| Обращается к стенду / требует `.env`             | Нет (оффлайн)        | Да                            |\n| Обновляет AI-артефакты (`.claude/`, `.opencode/`) | Да                   | Да                            |\n| Выгружает DSL (`platform/`, `sa/`, `domain/`)    | Нет                  | Да                            |\n| Обновляет `version` в `state.json`               | Да                   | Да                            |\n\n## Работа с Figma-макетами\n\n[Наверх ↑](#содержание)\n\nFigma MCP нужен только для задач с UI: виджеты, портальные страницы, формы с визуальными требованиями. Подключается через официальный Figma MCP-сервер.\n\n> **Важно:** это не слеш-команды. Инструменты вызываются AI-ассистентом автоматически, когда вы вставляете Figma-ссылку в чат.\n\n---\n\n### Официальный Figma MCP (Claude Code, VS Code)\n\n**Для Claude Code и VS Code** (с GitHub Copilot) — Figma предоставляет официальный MCP-сервер по адресу `https://mcp.figma.com/mcp`. Не требует Node.js и локального процесса.\n\n#### Подключение в VS Code\n\nОткройте палитру команд (`Ctrl+Shift+P`), выберите **MCP: Add Server → HTTP**, введите URL и ID сервера:\n\n```json\n{\n  \"servers\": {\n    \"figma\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.figma.com/mcp\"\n    }\n  }\n}\n```\n\nФайл `mcp.json` создаётся в папке проекта или глобально — выберите при добавлении.\n\nДля проверки откройте чат в режиме Agent и введите `#get_design_context`.\n\n#### Подключение в Claude Code\n\n```bash\nclaude mcp add --transport http figma https://mcp.figma.com/mcp\n```\n\nПосле подключения откройте чат и вставьте Figma-ссылку — ассистент сам вызовет инструменты получения дизайн-контекста.\n\n---\n\n### Использование\n\nВставьте Figma-ссылку прямо в описание задачи:\n\n```\n/simplegen.spec_create\n\nSTR001235\nНазвание: Массовое завершение инцидентов\nОписание: Добавить виджет массового завершения инцидентов из списка.\nМакет: https://www.figma.com/design/<FILE_KEY>/<FileName>?node-id=<NODE_ID>&m=dev\nКритерии приёмки:\n- Пользователь выбирает записи в списке и нажимает \"Завершить\".\n- Открывается модальное окно с полями из макета.\n- При подтверждении записи переходят в статус \"Завершено\".\n```\n\nАгент автоматически извлечёт из макета элементы UI, дизайн-токены и структуру и включит их в `_spec.md`.\n\nПоддерживаемые форматы ссылок:\n\n```\nhttps://www.figma.com/design/<FILE_KEY>/<FileName>?node-id=<NODE_ID>&m=dev\nhttps://www.figma.com/file/<FILE_KEY>/<FileName>?node-id=<NODE_ID>\n```\n\n### Если Figma MCP недоступен\n\nОпишите UI текстом в описании задачи:\n\n```\nUI:\n- Кнопка \"Завершить\" в заголовке списка.\n- Модальное окно с полями: Причина (обязательное), Комментарий.\n- Кнопки \"Подтвердить\" и \"Отмена\".\n- При ошибке — сообщение над формой.\n```\n\nИли приложите скриншот макета прямо в чат IDE (точность извлечения дизайн-токенов будет ниже).\n\n## Структура проекта\n\n[Наверх ↑](#содержание)\n\nТиповая структура после инициализации с продуктом `itsm`:\n\n```text\nworkspace-root/\n│\n├── AGENTS.md                    # Глобальный контекст проекта для AI-агента\n├── simpleone-api.d.ts           # Справочник SimpleOne API для скриптов\n├── jsconfig.json                # Конфигурация JS-автокомплита\n├── package.json                 # ESLint-зависимости и git-хук\n│\n├── .simplegen/\n│   └── state.json               # Версия установленного пакета\n│\n├── .claude/                     # Канон (управляется пакетом)\n│   ├── skills/                  # Правила, типы сущностей и slash-команды /simplegen.*\n│   └── agents/                  # Субагенты simplegen\n│\n├── .opencode/                   # Генерируется из .claude/ (управляется пакетом)\n│   ├── rules/                   # Правила и типы сущностей\n│   ├── commands/                # Slash-команды /simplegen.*\n│   └── agents/                  # Субагенты simplegen\n├── opencode.json                # Конфигурация OpenCode (плагин opencode-rules)\n│\n├── .githooks/\n│   └── pre-commit               # Запускает ESLint перед коммитом\n│\n├── platform/                    # Конфигурация платформы SimpleOne (read-only)\n├── sa/                          # Конфигурация Simple Application\n│\n└── itsm/                        # Ваш продукт\n    ├── AGENTS.md                # Контекст продукта для AI-агента\n    ├── simplegen.json           # Версия SimpleGen + активная задача\n    ├── domain/                  # ← Ваш код: все изменения здесь\n    │   ├── data-structure/      # Таблицы, колонки, choice-варианты, state-модели\n    │   ├── business-logic/      # Бизнес-правила, клиентские скрипты, виджеты, Script Includes\n    │   ├── access-control/      # Роли, ACL, user criteria\n    │   ├── forms/               # Формы и их элементы\n    │   ├── lists/               # Листовые представления\n    │   ├── navigation/          # Пункты и категории меню\n    │   ├── service-catalog/     # Каталог услуг\n    │   ├── portal/              # Портал и страницы\n    │   ├── rem/                 # Расширенная модель записи\n    │   ├── schedule/            # Планировщик\n    │   ├── localization/        # Переводы и языки\n    │   └── other/               # Прочие версионируемые сущности\n    │\n    └── tasks/                   # Артефакты задач\n        └── STR001234/\n            ├── _spec.md         # Спецификация (что делать)\n            ├── _task_plan.md    # План реализации (как делать)\n            ├── _demo_plan.md    # Демо-сценарий\n            ├── _demo_data.json  # Демоданные (генерируется demo_data_prepare)\n            ├── _demo_log.md     # Лог демонстрации (генерируется demo_run)\n            ├── simplegen.json   # Метаданные задачи (initial_commit_sha, last_patch и др.)\n            ├── [ITSM]_STR001234.sop   # Текущий SOP\n            └── build_logs/      # Архив SOP и JSON-логи операций (в .gitignore)\n```\n\n### Что трогать, что нет\n\n| Каталог                 | Кто управляет                 | Редактировать вручную?               |\n| ----------------------- | ----------------------------- | ------------------------------------ |\n| `platform/`             | SimpleGen (sync/init)         | Нет                                  |\n| `sa/`                   | SimpleGen (sync/init)         | Только при вендорских правах         |\n| `<product>/domain/`     | Вы + SimpleGen                | Да                                   |\n| `<product>/tasks/`      | Вы + SimpleGen                | `_spec.md` и `_task_plan.md` — можно |\n| `.claude/skills/`       | SimpleGen (init)              | Нет                                  |\n| `.claude/agents/`       | SimpleGen (init)              | Нет                                  |\n| `.opencode/`            | SimpleGen (init)              | Нет (генерируется из `.claude/`)     |\n| `opencode.json`         | SimpleGen (init)              | Нет                                  |\n| `.simplegen/state.json` | SimpleGen                     | Нет                                  |\n\n## Поддерживаемые сущности\n\n[Наверх ↑](#содержание)\n\nSimpleGen поддерживает генерацию и сборку следующих VCS-сущностей SimpleOne:\n\n**Данные и структура**\n- `sys_db_table` — таблица\n- `sys_db_column` — колонка\n- `sys_db_column_override` — переопределение колонки\n- `sys_choice` — варианты выбора\n- `sys_state_model` — модель состояний\n- `sys_state_transition` — переход между состояниями\n- `sys_number` — нумерация записей\n- `sys_filter_option_dynamic` — динамические фильтры\n\n**Бизнес-логика**\n- `sys_business_rule` — бизнес-правило\n- `sys_script_client` — клиентский скрипт\n- `sys_ui_action` — UI-действие (кнопка/пункт меню)\n- `sys_script_include` — Script Include\n- `sys_property` — системное свойство\n- `sys_property_category` — категория системных свойств\n\n**Доступ и безопасность**\n- `sys_role` — роль\n- `sys_security_acl` — правило ACL\n- `sys_user_criteria` — критерий пользователя\n\n**Формы и представления**\n- `sys_ui_form` — форма\n- `sys_ui_form_section` — секция формы\n- `sys_ui_form_element` — элемент формы\n- `sys_ui_related_list` — связанный список на форме\n- `sys_ui_related_list_element` — элемент связанного списка\n- `sys_ui_list` — листовое представление\n- `sys_ui_list_column` — колонка листового представления\n\n**Виджеты**\n- `sys_widget` — виджет\n- `sys_widget_instance` — экземпляр виджета\n\n**Уведомления**\n- `sys_notification_rule` — правило уведомления\n- `sys_notification_script` — скрипт уведомления\n- `sys_notification_template` — шаблон уведомления\n\n**Портал**\n- `page`, `page_container`, `page_row`, `page_column` — структура страницы\n- `portal`, `sys_portal_context`, `portal_node` — портал\n\n**Расширенная модель записи (REM)**\n- `sys_re_model`, `sys_re_container`, `sys_re_collection`\n- `sys_re_attribute`, `sys_re_choice`\n- `sys_re_model_client_script`, `sys_re_form_element`\n\n**Каталог услуг**\n- `sys_rmc_catalog`, `sys_rmc_category`, `sys_rmc_model`\n- `sys_rmc_category_user_criteria`, `sys_rmc_model_user_criteria`\n\n**Навигация**\n- `sys_menu_category` — категория меню\n- `sys_menu_item` — пункт меню\n\n**Планировщик**\n- `sys_schedule`, `sys_schedule_element`, `sys_schedule_job`\n- `sys_schedule_import`, `sys_schedule_script`\n\n**Локализация**\n- `source_message`, `message` — исходные сообщения и переводы\n- `sys_language` — язык\n- `sys_translation` — перевод поля\n\n> Сущности, для которых нет специализированных правил генерации, выгружаются в `domain/other/`. Перед ручным изменением таких файлов проверьте, корректно ли сборщик обработает результат.\n\n## Сценарии использования\n\n[Наверх ↑](#содержание)\n\n### Сценарий 1. Новая функциональность: таблица, роли, форма, меню\n\n**Используйте этот сценарий** для разработки новой функции со всей инфраструктурой: таблицы, роли, формы, меню, ACL.\n\n#### Шаг 1: Создать спецификацию\n\nВ чате AI-IDE выберите `/simplegen.spec_create` и опишите функцию:\n\n```\n/simplegen.spec_create\n\nSTR001240\nНазвание: Реестр договоров\nОписание: Добавить таблицу договоров с ответственным, статусом и датой окончания.\n\nКритерии приёмки:\n- Пользователи с ролью contract_manager могут создавать и изменять договоры\n- Пользователи с ролью contract_reader могут только просматривать\n- В навигаторе есть пункт \"Договоры\"\n- На форме договора видны поля: ответственный, статус, дата окончания\n```\n\n#### Шаг 2: Проверить и уточнить требования\n\nУточните спецификацию вместе с агентом:\n\n```\n/simplegen.spec_check\n```\n\nПовторяйте до полноты всех требований.\n\n#### Шаг 3: Построить план реализации\n\nСоздайте план по фазам:\n\n```\n/simplegen.spec_plan\n```\n\nЗафиксируйте спецификацию и план в git:\n\n```bash\ngit add . && git commit -m \"spec: STR001240 — реестр договоров\"\n```\n\n#### Шаг 4: Сгенерировать код\n\nСгенерируйте DSL-код на основе плана:\n\n```\n/simplegen.code_generate\n```\n\n#### Шаг 5: Проверить качество кода\n\nПроверьте сгенерированный код перед коммитом:\n\n```\n/simplegen.code_review\n```\n\nИсправляйте замечания и повторяйте `code_review` до одобрения.\n\n#### Шаг 6: Зафиксировать реализацию\n\nКогда ревью одобрил код:\n\n```bash\ngit add . && git commit -m \"feat: STR001240 — реестр договоров\"\n```\n\n#### Шаг 7: Задеплоить на стенд\n\nСоберите SOP и примените на dev-стенде:\n\n```\n/simplegen.product_patch\n```\n\nПроверьте результат на стенде. При ошибке используйте `/simplegen.product_rollback`.\n\n---\n\n### Сценарий 2. Быстрое исправление дефекта\n\n**Используйте этот сценарий** для быстрого исправления ошибок. Для дефектов можно пропустить полную спецификацию — агент создаст компактный план сам.\n\n#### Шаг 1: Создать компактный план дефекта\n\nОпишите баг и используйте `spec_plan` в режиме дефекта:\n\n```\n/simplegen.spec_plan DEF000782\n\nШаги воспроизведения:\n1. Открыть форму task\n2. Оставить поле urgency пустым\n3. Нажать \"Сохранить\"\n\nОжидаемый результат: система показывает ошибку валидации\nФактический результат: запись сохраняется без ошибки\n```\n\n#### Шаг 2: Сгенерировать исправление\n\n```\n/simplegen.code_generate\n```\n\n#### Шаг 3: Проверить код\n\n```\n/simplegen.code_review\n```\n\n#### Шаг 4: Зафиксировать исправление\n\n```bash\ngit add . && git commit -m \"fix: DEF000782 — валидация urgency в task\"\n```\n\n#### Шаг 5: Задеплоить\n\n```\n/simplegen.product_patch\n```\n\n---\n\n### Сценарий 3. Синхронизация: изменения внесли прямо на стенде\n\n**Используйте этот сценарий** когда конфигурацию меняли в интерфейсе SimpleOne (а не в коде) и нужно выгрузить её в репозиторий.\n\n#### Шаг 1: Полная синхронизация продукта\n\nВыгрузите все последние изменения со стенда в репозиторий:\n\n```\n/simplegen.product_sync\n```\n\n**Или точечная синхронизация** (если знаете ID VCS-пакета):\n\n```\n/simplegen.product_sync 123456789012345678\n```\n\n#### Шаг 2: Проверить изменения\n\nПосмотрите, что именно изменилось:\n\n```bash\ngit diff\ngit status\n```\n\n#### Шаг 3: Зафиксировать синхронизацию\n\n```bash\ngit add . && git commit -m \"sync: обновление с dev-стенда\"\n```\n\n---\n\n### Сценарий 4. Откат неудачного деплоя\n\n**Используйте этот сценарий** при ошибке деплоя, чтобы вернуть стенд к последней рабочей версии.\n\n#### Шаг 1: Откатить стенд на последний рабочий SOP\n\nАгент автоматически найдёт последний успешный пакет и откатит стенд:\n\n```\n/simplegen.product_rollback\n```\n\n**Или откатить конкретный пакет** (если знаете его ID):\n\n```bash\nsimplegen rollback itsm 123456789012345678\n```\n\n#### Шаг 2: Найти и исправить причину ошибки\n\nПосмотрите логи в `build_logs/` и найдите причину. Исправьте код в редакторе.\n\n#### Шаг 3: Повторить проверку\n\nПроверьте исправленный код:\n\n```\n/simplegen.code_review\n```\n\n#### Шаг 4: Переделать деплой\n\n```bash\ngit add . && git commit -m \"fix: исправление после отката\"\n```\n\n```\n/simplegen.product_patch\n```\n\n---\n\n### Сценарий 5. Подготовка демонстрации\n\n**Используйте этот сценарий** для подготовки демо-сценария и демоданных после успешного деплоя функции.\n\n#### Шаг 1: Сформировать демо-план\n\nСоздайте сценарий демонстрации заказчику:\n\n```\n/simplegen.demo_plan\n```\n\nАгент создаст `_demo_plan.md` с разделами:\n- **Демоданные** — какие записи нужны для демонстрации\n- **Демонстрация** — пошаговый сценарий действий\n\n#### Шаг 2: Подготовить демоданные (Beta)\n\nСгенерируйте демоданные:\n\n```\n/simplegen.demo_data_prepare\n```\n\nЭтот шаг создаёт `_demo_data.json`. Проверьте содержимое, затем создайте записи на стенде — либо вручную следуя инструкции в файле, либо используя автоматический импорт.\n\n#### Шаг 3: Запустить демонстрацию (Beta)\n\nВоспроизведите сценарий в браузере с реальными данными:\n\n```\n/simplegen.demo_run\n```\n\nРезультат — файл `_demo_log.md` с пошаговым логом всех действий и статусом.\n\n---\n\n### Сценарий 6. Задача зависит от другой незамёрженной задачи\n\n**Используйте этот сценарий**, когда текущая задача зависит от функциональности, которая разрабатывается в другой задаче и ещё не влита в основную ветку.\n\n#### Шаг 1: Создать ветку от ветки зависимой задачи\n\nВместо ветвления от `main`/`master`, откалывайте от ветки задачи, от которой вы зависите:\n\n```bash\n# Зависимая задача уже разрабатывается в ветке\ngit checkout feature/STR001233\n# Создаём новую ветку от неё\ngit checkout -b feature/STR001234\n```\n\n#### Шаг 2: Разработать текущую задачу\n\nВыполняйте стандартный процесс разработки:\n\n```\n/simplegen.spec_create\n/simplegen.spec_check\n/simplegen.spec_plan\ngit commit -m \"spec: STR001234\"\n/simplegen.code_generate\n/simplegen.code_review\ngit commit -m \"feat: STR001234\"\n```\n\n#### Шаг 3: Задеплоить зависимую задачу\n\nСначала деплойте задачу, от которой вы зависите:\n\n```bash\ngit checkout feature/STR001233\n/simplegen.product_patch\ngit checkout feature/STR001234\n```\n\n#### Шаг 4: Деплоить текущую задачу\n\nТеперь деплойте вашу задачу:\n\n```\n/simplegen.product_patch\n```\n\n## FAQ и устранение проблем\n\n[Наверх ↑](#содержание)\n\n### Установка и подключение\n\n**Команда `simplegen` не найдена**\n\nПроверьте, что глобальный npm bin-каталог добавлен в `PATH`:\n\n```bash\nnpm config get prefix\n# добавьте <prefix>/bin в PATH\n```\n\n---\n\n**Ошибка: не задан URL стенда**\n\n```text\nMissing SimpleOne baseUrl. Set SIMPLEONE_URL in .env or environment variables.\n```\n\nДобавьте в `.env`:\n\n```dotenv\nSIMPLEONE_URL=https://dev.example.com\n```\n\n---\n\n**Ошибка: не заданы данные авторизации**\n\n```text\nMissing SimpleOne credentials. Provide SIMPLEONE_API_KEY or both SIMPLEONE_LOGIN and SIMPLEONE_PASSWORD.\n```\n\nДобавьте в `.env` API-ключ:\n\n```dotenv\nSIMPLEONE_API_KEY=<api-key>\n```\n\nИли логин и пароль:\n\n```dotenv\nSIMPLEONE_LOGIN=admin\nSIMPLEONE_PASSWORD=<password>\n```\n\n---\n\n**Ошибка: явно указанный `.env`-файл не найден**\n\n```text\nEnv file not found: <path>\n```\n\nФайл задаётся переменной `SIMPLEGEN_ENV_FILE`. Проверьте путь и рабочий каталог — используйте абсолютный путь:\n\n```bash\nSIMPLEGEN_ENV_FILE=/absolute/path/to/.env.dev simplegen sync \"ITSM\"\n```\n\n---\n\n### Версии и инициализация\n\n**Репозиторий не инициализирован**\n\n```text\nRepository not initialized. Run 'simplegen init' first.\n```\n\n```bash\nsimplegen init \"Название продукта\"\n```\n\n---\n\n**Версия пакета изменилась с момента последнего init**\n\n```text\nPackage version changed since last init (X → Y). Run 'simplegen init' to re-initialize.\n```\n\n```bash\nsimplegen init \"Название продукта\"\n```\n\nЕсли нужно обновить только правила без выгрузки DSL (оффлайн):\n\n```bash\nsimplegen init --skip-export\n```\n\n---\n\n**Установленная версия CLI ниже версии проекта**\n\n```text\nInstalled package version (...) is older than the version used to initialize this repo (...).\nUpdate the package: npm update @simplegen/simplegen\n```\n\n```bash\nnpm update -g @simplegen/simplegen\nsimplegen --version\n```\n\n---\n\n### Команды и задачи\n\n**Slash-команда не срабатывает**\n\nУбедитесь, что выбираете команду из меню `/` в AI-IDE, а не вставляете её текстом. Если команды нет в списке — возможно, каталог команд не был создан при инициализации.\n\nПроверьте наличие каталогов:\n\n```bash\nls .claude/skills/\nls .claude/agents/\nls .opencode/commands/\n```\n\nЕсли пустой, запустите:\n\n```bash\nsimplegen init --skip-export\n```\n\n---\n\n**Не установлена активная задача**\n\nКоманды `code_generate`, `code_review`, `product_patch`, `demo_plan` не понимают, с какой задачей работать.\n\n```\n/simplegen.context_set STR001234\n```\n\nИли создайте новую задачу:\n\n```\n/simplegen.spec_create\n```\n\n---\n\n**`_task_plan.md` не найден, генерация не начинается**\n\n```\n/simplegen.spec_plan\n```\n\n---\n\n**В спецификации остались открытые вопросы**\n\n```\n/simplegen.spec_check\n```\n\nПосле обновления `_spec.md` пересоберите план:\n\n```\n/simplegen.spec_plan\n```\n\n---\n\n### Деплой и откат\n\n**Нет прав на ACL или роли**\n\nДеплой возвращает ошибку Table API на ACL, ролях или защищённых таблицах.\n\n1. Проверьте права пользователя на стенде.\n2. Добавьте elevated-роли в `.env`:\n\n```dotenv\nSIMPLEONE_ELEVATED_ROLES=security_admin\n```\n\n3. Повторите деплой:\n\n```\n/simplegen.product_patch\n```\n\n---\n\n**Build завершился с warnings**\n\nCLI завершился с кодом `1` и JSON-выводом содержит `\"warnings\": [...]`.\n\nПрочитайте предупреждения и лог в `build_logs/`. Часть записей могла быть применена — используйте `product_rollback`, если нужно вернуть стенд.\n\n---\n\n**Нужно отменить незакоммиченные изменения**\n\nПосмотрите, что изменено:\n\n```bash\ngit status\ngit diff\n```\n\nЕсли хотите отложить изменения:\n\n```bash\ngit stash push -m \"WIP\"\n```\n\n---\n\n### Figma MCP\n\n**Figma MCP не подключается**\n\nПроверьте по шагам:\n\n1. **Сервер добавлен?** Выполните `claude mcp list` и убедитесь, что `figma` присутствует. Если нет — добавьте: `claude mcp add --transport http figma https://mcp.figma.com/mcp`.\n\n2. **Доступен ли `https://mcp.figma.com/mcp`?** Проверьте доступ в интернет и отсутствие блокировки домена корпоративным прокси.\n\n3. **Перезапустили IDE / сессию?** После добавления сервера перезапустите Claude Code (или IDE-расширение), чтобы инструменты подхватились.\n\n4. **Проверьте статус MCP** — откройте меню `/mcp` в чате AI-ассистента и убедитесь, что `figma` отображается как активный.\n\n5. **Авторизация Figma.** При первом обращении сервер может запросить вход в аккаунт Figma — завершите OAuth-поток в браузере.\n\n---\n\n**Агент не обращается к макету при создании спецификации**\n\nУбедитесь, что Figma-ссылка вставлена в описание задачи при вызове `spec_create`. Проверьте формат:\n\n```\nhttps://www.figma.com/design/<FILE_KEY>/<FileName>?node-id=<NODE_ID>&m=dev\n```\n\nЕсли MCP недоступен, опишите элементы макета текстом или приложите скриншот.\n\n---\n\n### Рабочий процесс и выбор команд\n\n**Когда использовать `spec_create` vs `spec_plan` на дефектах?**\n\n- **`spec_create`** — для новых функций, доработок, UI-задач (когда нужна полная спецификация)\n- **`spec_plan` на дефектах** — для быстрого исправления ошибок, команда создаст компактную спецификацию сама\n\nПример для дефекта:\n\n```\n/simplegen.spec_plan\n\nDEF000782\nШаги воспроизведения: ...\nОжидаемый результат: ...\nФактический результат: ...\n```\n\n---\n\n**Можно ли пропустить какой-то шаг в рабочем процессе?**\n\nНе рекомендуется пропускать:\n- `spec_check` — проверка требований помогает избежать ошибок на этапе разработки\n- `spec_plan` — план упрощает генерацию кода и ревью\n- `code_review` — проверка находит 80% проблем до деплоя\n\nДопустимо пропустить:\n- `demo_plan` и `demo_run` — только если результат не требует демонстрации\n\n---\n\n**Как правильно разбить большую задачу на подзадачи?**\n\nЕсли в `_task_plan.md` больше 5 фаз:\n\n1. Создайте отдельные задачи для логических блоков (например: \"Модель данных\", \"Бизнес-логика\", \"Интерфейс\")\n2. Сначала реализуйте и задеплойте фундаментальную задачу\n3. Дальнейшие задачи могут зависеть от неё\n\nЗависимые задачи:\n```bash\n# Основная задача\ngit checkout -b feature/task1\n/simplegen.code_generate → /simplegen.product_patch\n\n# Зависимая задача (ветка от feature/task1)\ngit checkout -b feature/task2\n/simplegen.code_generate → /simplegen.product_patch\n```\n\n---\n\n**Что делать, если код был заменён после генерации?**\n\nЕсли вы вручную отредактировали файлы после `code_generate`, но перед `code_review`:\n\n1. Проверьте, что изменения не нарушили DSL-синтаксис\n2. Запустите `/simplegen.code_review` — агент заметит вручную отредактированные файлы\n3. Если нужны дополнительные правки — исправьте и запустите `code_review` снова\n\n---\n\n### Git и управление версиями\n\n**Как правильно структурировать коммиты?**\n\nРекомендуемая структура (смотрите `Рабочий процесс`):\n\n```bash\ngit commit -m \"spec: STR001234\"        # После spec_plan\ngit commit -m \"feat: STR001234\"        # После code_review, перед build\ngit commit -m \"demo: STR001234\"        # После demo_plan (опционально)\ngit commit -m \"merge: STR001234\"       # После успешного деплоя (merge в main)\n```\n\n---\n\n**Что делать, если случайно задеплоил неправильный код?**\n\nОткатитесь немедленно:\n\n```\n/simplegen.product_rollback\n```\n\nЗатем:\n1. Найдите ошибку в `code_review`\n2. Исправьте файлы\n3. Запустите `/simplegen.code_review` снова\n4. Создайте новый коммит: `git commit -m \"fix: STR001234 rollback and fix\"`\n5. Задеплойте: `/simplegen.product_patch`\n\n---\n\n**Можно ли откатить коммит в git но оставить код на стенде?**\n\nНет. `simplegen patch` дозаписывает дифф на основе текущего HEAD (и рабочего дерева). Откатив коммит в git, при следующей сборке вы вернёте стенд к старому коду.\n\nВариант: создайте **новый коммит с исправлением**, не откатывая старый.\n\n---\n\n### Производительность и большие проекты\n\n**Build занимает слишком долго. Как ускорить?**\n\n1. **Синхронизируйте DSL реже** — не запускайте `product_sync` перед каждой задачей\n2. **Собирайте по типам сущностей** — если меняются только формы, скажите `code_generate`: \"генерируй только фазу 2\"\n3. **Проверьте лог** — откройте `build_logs/` и посмотрите, какие сущности медленнее всего собираются\n4. **Используйте точечную синхронизацию** — `/simplegen.product_sync 123456789012345678`\n\n---\n\n**Как работать с очень большим продуктом (много таблиц, форм)?**\n\n1. Инициализируйте один раз с `--force`, дальше используйте `sync` без флага\n2. Не синхронизируйте `platform/` часто — выгрузка может занять 5-10 минут\n3. Работайте по правилу: \"одна задача = одна фаза\" для лучшей переиспользуемости плана\n\n---\n\n### Диагностика и отладка\n\n**Где искать логи и ошибки?**\n\n1. **JSON-логи build** → `<product>/tasks/<taskId>/build_logs/`\n2. **Логи консоли AI-IDE** → нижняя панель (вкладка \"Terminal\" или \"Problems\")\n3. **Ошибки DSL при синтаксисе** → `npm run lint` в терминале\n4. **Ошибки Table API при деплое** → смотрите JSON в `build_logs/`, там `\"errors\": [...] `\n\nПример читаемого лога:\n\n```bash\ncat <product>/tasks/STR001234/build_logs/build-*.json | jq '.warnings, .errors'\n```\n\n---\n\n**Что значит \"неполный DSL\" или \"несогласованная ссылка\"?**\n\nЭто означает, что сгенерированный код ссылается на несуществующие сущности:\n- Таблица A ссылается на колонку, которой нет в таблице B\n- Форма ссылается на несуществующую таблицу\n\n**Как исправить:**\n1. Проверьте спецификацию в `_spec.md` — все ли ссылки указаны\n2. Запустите `/simplegen.spec_check` — агент найдёт пробелы\n3. Пересоберите план: `/simplegen.spec_plan`\n4. Заново генерируйте код: `/simplegen.code_generate`\n\n---\n\n### Лучшие практики для команды\n\n**Как организовать работу нескольким разработчикам на одном проекте?**\n\n1. **Главная ветка** (`main`/`master`) — всегда рабочее состояние, готовое к деплою\n2. **Feature-ветка** (`feature/STR001234`) — каждая задача в отдельной ветке\n3. **Code review обязателен при любых правках в коде** — обязательная проверка перед слиянием в main\n4. **Одна задача = один разработчик** — избегайте конфликтов при одновременной разработке\n\nGit-процесс:\n\n```bash\n# Разработчик 1\ngit checkout -b feature/STR001234\n/simplegen.code_generate → /simplegen.code_review\ngit commit -m \"feat: STR001234\"\ngit push\n# → Pull Request → Code Review → Merge to main\n\n# Разработчик 2 (после merge)\ngit checkout main\ngit pull\n/simplegen.product_sync   # Синхронизировать изменения от разработчика 1\ngit checkout -b feature/STR001235\n...\n```\n\n---\n\n**Как избежать конфликтов в `domain/`?**\n\n- Разрабатывайте разные сущности (не редактируйте один файл несколько разработчиков)\n- Используйте `/simplegen.product_sync` перед стартом новой задачи\n- При конфликте в git: **всегда разрешайте в пользу incoming** (новых изменений со стенда)\n\n---\n\n## Схема разработки\n\n[Наверх ↑](#содержание)\n\nСхема:\n![Схема разработки](https://mattermost.simpleone.ru/files/86rteyjcofghpf57hecwfm88or/public?h=KmkRdlT58gSR1Nv_MUa5tIIoQPwO5r8eQrVn16nN40w)\n","readmeFilename":"README.md"}