@omega.js/manager 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (416) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/LICENSE +98 -0
  3. package/README.md +165 -0
  4. package/bin/omega +2 -0
  5. package/bin/omg +2 -0
  6. package/claude-plugin/.claude-plugin/plugin.json +11 -0
  7. package/claude-plugin/.mcp.json +9 -0
  8. package/claude-plugin/README.md +139 -0
  9. package/claude-plugin/hooks/gate/mark.sh +58 -0
  10. package/claude-plugin/hooks/gate/run.sh +97 -0
  11. package/claude-plugin/hooks/guard/run.sh +249 -0
  12. package/claude-plugin/hooks/hooks.json +63 -0
  13. package/claude-plugin/hooks/inject/run.sh +127 -0
  14. package/claude-plugin/hooks/lib/omega-gate.sh +20 -0
  15. package/claude-plugin/hooks/lib/omega-scope.sh +41 -0
  16. package/claude-plugin/hooks/lib/omega-skills.sh +209 -0
  17. package/claude-plugin/hooks/quality/run.sh +132 -0
  18. package/claude-plugin/hooks/shape/run.sh +45 -0
  19. package/claude-plugin/mcp-router-launch.js +29 -0
  20. package/claude-plugin/skills/README.md +48 -0
  21. package/claude-plugin/skills/accessibility/SKILL.md +31 -0
  22. package/claude-plugin/skills/analytics/SKILL.md +30 -0
  23. package/claude-plugin/skills/backend/SKILL.md +25 -0
  24. package/claude-plugin/skills/brandcheck/SKILL.md +29 -0
  25. package/claude-plugin/skills/browser/SKILL.md +64 -0
  26. package/claude-plugin/skills/client/SKILL.md +24 -0
  27. package/claude-plugin/skills/desktop/SKILL.md +25 -0
  28. package/claude-plugin/skills/extension/SKILL.md +25 -0
  29. package/claude-plugin/skills/main/SKILL.md +54 -0
  30. package/claude-plugin/skills/manager/SKILL.md +25 -0
  31. package/claude-plugin/skills/seo/SKILL.md +36 -0
  32. package/claude-plugin/skills/theme/SKILL.md +33 -0
  33. package/claude-plugin/skills/web/SKILL.md +29 -0
  34. package/dist/cli-run.js +34 -0
  35. package/dist/cli.js +29 -0
  36. package/dist/commands/build.js +17 -0
  37. package/dist/commands/clean.js +16 -0
  38. package/dist/commands/company.js +46 -0
  39. package/dist/commands/deploy.js +143 -0
  40. package/dist/commands/dev.js +437 -0
  41. package/dist/commands/devlog.js +25 -0
  42. package/dist/commands/help.js +48 -0
  43. package/dist/commands/manage.js +53 -0
  44. package/dist/commands/migrate.js +76 -0
  45. package/dist/commands/onboard.js +31 -0
  46. package/dist/commands/pipeline.js +319 -0
  47. package/dist/commands/test.js +380 -0
  48. package/dist/commands/update.js +128 -0
  49. package/dist/commands/version.js +8 -0
  50. package/dist/company-init.js +167 -0
  51. package/dist/company.js +283 -0
  52. package/dist/config.js +1359 -0
  53. package/dist/devlog/index.js +226 -0
  54. package/dist/devlog/lib/collect-commits.js +136 -0
  55. package/dist/devlog/lib/generate-post.js +201 -0
  56. package/dist/devlog/lib/ghostii.js +122 -0
  57. package/dist/devlog/lib/project-map.js +98 -0
  58. package/dist/devlog/lib/publish-website.js +88 -0
  59. package/dist/index.js +45 -0
  60. package/dist/lib/agents-md.js +201 -0
  61. package/dist/lib/analytics-secret.js +22 -0
  62. package/dist/lib/argv.js +21 -0
  63. package/dist/lib/auth-admin.js +120 -0
  64. package/dist/lib/automation-client.js +210 -0
  65. package/dist/lib/backend-marketing.js +49 -0
  66. package/dist/lib/brand.js +240 -0
  67. package/dist/lib/bundle-id.js +53 -0
  68. package/dist/lib/claude-settings.js +125 -0
  69. package/dist/lib/company-scaffold.js +213 -0
  70. package/dist/lib/company.js +227 -0
  71. package/dist/lib/config-flow.js +350 -0
  72. package/dist/lib/config-write.js +41 -0
  73. package/dist/lib/custom-target.js +75 -0
  74. package/dist/lib/domain-utils.js +19 -0
  75. package/dist/lib/duration.js +39 -0
  76. package/dist/lib/env-order.js +236 -0
  77. package/dist/lib/env-secret.js +78 -0
  78. package/dist/lib/firestore-rest.js +326 -0
  79. package/dist/lib/framework-bin.js +156 -0
  80. package/dist/lib/gitignore.js +63 -0
  81. package/dist/lib/google-auth.js +495 -0
  82. package/dist/lib/google-token.js +66 -0
  83. package/dist/lib/jwt.js +31 -0
  84. package/dist/lib/legacy-oauth.js +59 -0
  85. package/dist/lib/node-version.js +127 -0
  86. package/dist/lib/owner-plan.js +78 -0
  87. package/dist/lib/package-scripts.js +152 -0
  88. package/dist/lib/preflight.js +470 -0
  89. package/dist/lib/product-create.js +144 -0
  90. package/dist/lib/run-command.js +74 -0
  91. package/dist/lib/run-gates.js +70 -0
  92. package/dist/lib/run-output.js +42 -0
  93. package/dist/lib/run-summary.js +384 -0
  94. package/dist/lib/scaffold.js +427 -0
  95. package/dist/lib/service-input.js +207 -0
  96. package/dist/lib/service-runner.js +466 -0
  97. package/dist/lib/stale.js +24 -0
  98. package/dist/lib/target-selection.js +155 -0
  99. package/dist/lib/verb-fanout.js +128 -0
  100. package/dist/lib/verify-live.js +188 -0
  101. package/dist/manage.js +311 -0
  102. package/dist/omega-bin.js +7 -0
  103. package/dist/onboard.js +532 -0
  104. package/dist/services/account/ensure/users.js +259 -0
  105. package/dist/services/account/index.js +97 -0
  106. package/dist/services/account/lib/backend-client.js +107 -0
  107. package/dist/services/account/lib/password.js +36 -0
  108. package/dist/services/account/lib/resolve-password.js +100 -0
  109. package/dist/services/advertising/ensure/sites.js +101 -0
  110. package/dist/services/advertising/index.js +101 -0
  111. package/dist/services/advertising/lib/adsense-api.js +41 -0
  112. package/dist/services/ai/ensure/keys.js +21 -0
  113. package/dist/services/ai/index.js +36 -0
  114. package/dist/services/analytics/ensure/google-firebase-link.js +230 -0
  115. package/dist/services/analytics/ensure/google-streams.js +256 -0
  116. package/dist/services/analytics/ensure/meta-pixel.js +22 -0
  117. package/dist/services/analytics/ensure/tiktok-pixel.js +22 -0
  118. package/dist/services/analytics/index.js +134 -0
  119. package/dist/services/analytics/lib/analytics-api.js +156 -0
  120. package/dist/services/analytics/lib/meta-api.js +83 -0
  121. package/dist/services/analytics/lib/pixel-account.js +78 -0
  122. package/dist/services/analytics/lib/pixel-provision.js +152 -0
  123. package/dist/services/analytics/lib/pixel-specs.js +57 -0
  124. package/dist/services/analytics/lib/pixel-token.js +88 -0
  125. package/dist/services/analytics/lib/property-flow.js +77 -0
  126. package/dist/services/analytics/lib/tiktok-api.js +157 -0
  127. package/dist/services/analytics/lib/tiktok-auth.js +153 -0
  128. package/dist/services/assets/ensure/logo-gen.js +68 -0
  129. package/dist/services/assets/index.js +109 -0
  130. package/dist/services/assets/lib/assets-config.js +168 -0
  131. package/dist/services/assets/lib/brandmark-api.js +160 -0
  132. package/dist/services/assets/lib/derived.js +113 -0
  133. package/dist/services/assets/lib/font-loader.js +67 -0
  134. package/dist/services/assets/lib/reconcile.js +122 -0
  135. package/dist/services/assets/lib/reset.js +118 -0
  136. package/dist/services/assets/lib/svg-logo-generator.js +154 -0
  137. package/dist/services/assets/lib/svg-to-black.js +32 -0
  138. package/dist/services/assets/write/favicons.js +82 -0
  139. package/dist/services/assets/write/icons.js +64 -0
  140. package/dist/services/assets/write/process.js +96 -0
  141. package/dist/services/assets/write/reconcile.js +30 -0
  142. package/dist/services/assets/write/social-icons.js +108 -0
  143. package/dist/services/assets/write/templates.js +345 -0
  144. package/dist/services/bookmark/ensure/sync.js +255 -0
  145. package/dist/services/bookmark/index.js +17 -0
  146. package/dist/services/campaigns/ensure/contact-person.js +40 -0
  147. package/dist/services/campaigns/ensure/custom-fields.js +84 -0
  148. package/dist/services/campaigns/ensure/domain-auth.js +92 -0
  149. package/dist/services/campaigns/ensure/event-webhook.js +89 -0
  150. package/dist/services/campaigns/ensure/link-branding.js +187 -0
  151. package/dist/services/campaigns/ensure/list.js +50 -0
  152. package/dist/services/campaigns/ensure/segments.js +109 -0
  153. package/dist/services/campaigns/ensure/sender-identity.js +153 -0
  154. package/dist/services/campaigns/ensure/unsubscribe-groups.js +116 -0
  155. package/dist/services/campaigns/index.js +79 -0
  156. package/dist/services/campaigns/lib/dns-sync.js +81 -0
  157. package/dist/services/campaigns/lib/segment-query.js +138 -0
  158. package/dist/services/campaigns/lib/sendgrid-api.js +287 -0
  159. package/dist/services/captcha/ensure/site-key.js +83 -0
  160. package/dist/services/captcha/index.js +78 -0
  161. package/dist/services/captcha/lib/console-url.js +45 -0
  162. package/dist/services/captcha/lib/recaptcha-api.js +36 -0
  163. package/dist/services/certificates/ensure/api-key.js +22 -0
  164. package/dist/services/certificates/ensure/bundle-ids.js +115 -0
  165. package/dist/services/certificates/ensure/certificates.js +187 -0
  166. package/dist/services/certificates/ensure/profiles.js +143 -0
  167. package/dist/services/certificates/index.js +225 -0
  168. package/dist/services/certificates/lib/apple-api.js +183 -0
  169. package/dist/services/certificates/lib/certificate-manager.js +252 -0
  170. package/dist/services/certificates/lib/identifier-manager.js +107 -0
  171. package/dist/services/certificates/lib/keychain.js +135 -0
  172. package/dist/services/certificates/lib/manual-walkthrough.js +165 -0
  173. package/dist/services/certificates/lib/profile-manager.js +115 -0
  174. package/dist/services/chat/data/baseline-knowledge.md +96 -0
  175. package/dist/services/chat/ensure/chat.js +106 -0
  176. package/dist/services/chat/ensure/user.js +45 -0
  177. package/dist/services/chat/index.js +139 -0
  178. package/dist/services/chat/lib/baseline-knowledge.js +137 -0
  179. package/dist/services/cloud/ensure/authentication.js +267 -0
  180. package/dist/services/cloud/ensure/billing.js +120 -0
  181. package/dist/services/cloud/ensure/cloud-messaging.js +105 -0
  182. package/dist/services/cloud/ensure/database.js +60 -0
  183. package/dist/services/cloud/ensure/firestore.js +79 -0
  184. package/dist/services/cloud/ensure/functions.js +49 -0
  185. package/dist/services/cloud/ensure/hosting.js +398 -0
  186. package/dist/services/cloud/ensure/oauth-consent.js +248 -0
  187. package/dist/services/cloud/ensure/project-settings.js +72 -0
  188. package/dist/services/cloud/ensure/sdk-config.js +95 -0
  189. package/dist/services/cloud/ensure/service-account.js +152 -0
  190. package/dist/services/cloud/ensure/services.js +103 -0
  191. package/dist/services/cloud/ensure/storage.js +47 -0
  192. package/dist/services/cloud/index.js +130 -0
  193. package/dist/services/cloud/lib/access-heal.js +130 -0
  194. package/dist/services/cloud/lib/firebase-api.js +662 -0
  195. package/dist/services/cloud/lib/project-flow.js +102 -0
  196. package/dist/services/directory/ensure/entry.js +48 -0
  197. package/dist/services/directory/index.js +64 -0
  198. package/dist/services/directory/lib/blocks.js +104 -0
  199. package/dist/services/disperse/index.js +45 -0
  200. package/dist/services/disperse/write/certs.js +117 -0
  201. package/dist/services/domain/ensure/nameservers.js +179 -0
  202. package/dist/services/domain/index.js +69 -0
  203. package/dist/services/domain/lib/namecheap-api.js +167 -0
  204. package/dist/services/domain/lib/registrars.js +46 -0
  205. package/dist/services/domain/lib/whitelist-walkthrough.js +76 -0
  206. package/dist/services/edge/ensure/cache-rules.js +105 -0
  207. package/dist/services/edge/ensure/dns-records.js +304 -0
  208. package/dist/services/edge/ensure/email-routing.js +292 -0
  209. package/dist/services/edge/ensure/rules-configuration.js +98 -0
  210. package/dist/services/edge/ensure/rules-managed-transforms.js +101 -0
  211. package/dist/services/edge/ensure/rules-redirect.js +107 -0
  212. package/dist/services/edge/ensure/rules-response-headers.js +90 -0
  213. package/dist/services/edge/ensure/rules-security.js +142 -0
  214. package/dist/services/edge/ensure/speed-scheduled-tests.js +98 -0
  215. package/dist/services/edge/ensure/workers.js +219 -0
  216. package/dist/services/edge/ensure/zone-settings.js +108 -0
  217. package/dist/services/edge/ensure/zone.js +183 -0
  218. package/dist/services/edge/index.js +73 -0
  219. package/dist/services/edge/lib/cloudflare-api.js +84 -0
  220. package/dist/services/edge/lib/dns-records-helpers.js +518 -0
  221. package/dist/services/edge/lib/read-cache.js +16 -0
  222. package/dist/services/edge/lib/ruleset-helper.js +108 -0
  223. package/dist/services/edge/workers/omega-api-proxy.js +43 -0
  224. package/dist/services/email/data/baseline-filter.md +4 -0
  225. package/dist/services/email/data/baseline-knowledge.md +86 -0
  226. package/dist/services/email/ensure/agent.js +107 -0
  227. package/dist/services/email/ensure/user.js +45 -0
  228. package/dist/services/email/index.js +138 -0
  229. package/dist/services/email/lib/baseline.js +82 -0
  230. package/dist/services/email/lib/knowledge-file.js +53 -0
  231. package/dist/services/forms/ensure/form.js +46 -0
  232. package/dist/services/forms/ensure/user.js +45 -0
  233. package/dist/services/forms/index.js +138 -0
  234. package/dist/services/migrations/ensure/notifications.js +189 -0
  235. package/dist/services/migrations/ensure/orders.js +34 -0
  236. package/dist/services/migrations/ensure/payment-provider.js +132 -0
  237. package/dist/services/migrations/ensure/payments-intents.js +34 -0
  238. package/dist/services/migrations/ensure/state-retirement.js +266 -0
  239. package/dist/services/migrations/ensure/targets-rename.js +124 -0
  240. package/dist/services/migrations/ensure/users.js +1176 -0
  241. package/dist/services/migrations/index.js +101 -0
  242. package/dist/services/migrations/lib/attribution-touch.js +64 -0
  243. package/dist/services/migrations/lib/ensure-metadata.js +144 -0
  244. package/dist/services/migrations/lib/migration-runner.js +473 -0
  245. package/dist/services/migrations/lib/sanitize-strings.js +112 -0
  246. package/dist/services/migrations/lib/schema-validator.js +154 -0
  247. package/dist/services/monitoring/ensure/dsn.js +54 -0
  248. package/dist/services/monitoring/ensure/projects.js +135 -0
  249. package/dist/services/monitoring/index.js +54 -0
  250. package/dist/services/monitoring/lib/sentry-api.js +94 -0
  251. package/dist/services/newsletter/ensure/custom-fields.js +90 -0
  252. package/dist/services/newsletter/ensure/publication.js +94 -0
  253. package/dist/services/newsletter/ensure/segments.js +140 -0
  254. package/dist/services/newsletter/ensure/webhook.js +108 -0
  255. package/dist/services/newsletter/index.js +64 -0
  256. package/dist/services/newsletter/lib/beehiiv-api.js +124 -0
  257. package/dist/services/newsletter/lib/segment-automation.js +577 -0
  258. package/dist/services/payment/ensure/chargebee-account.js +30 -0
  259. package/dist/services/payment/ensure/chargebee-products.js +359 -0
  260. package/dist/services/payment/ensure/chargebee-webhook.js +113 -0
  261. package/dist/services/payment/ensure/paypal-account.js +36 -0
  262. package/dist/services/payment/ensure/paypal-products.js +374 -0
  263. package/dist/services/payment/ensure/paypal-webhook.js +128 -0
  264. package/dist/services/payment/ensure/stripe-account.js +93 -0
  265. package/dist/services/payment/ensure/stripe-disputes.js +56 -0
  266. package/dist/services/payment/ensure/stripe-products.js +245 -0
  267. package/dist/services/payment/ensure/stripe-radar.js +74 -0
  268. package/dist/services/payment/ensure/stripe-webhook.js +130 -0
  269. package/dist/services/payment/index.js +163 -0
  270. package/dist/services/payment/lib/chargebee-api.js +338 -0
  271. package/dist/services/payment/lib/payment-utils.js +116 -0
  272. package/dist/services/payment/lib/paypal-api.js +354 -0
  273. package/dist/services/payment/lib/provider-setup.js +134 -0
  274. package/dist/services/payment/lib/stripe-api.js +152 -0
  275. package/dist/services/repo/ensure/org.js +70 -0
  276. package/dist/services/repo/ensure/pages.js +72 -0
  277. package/dist/services/repo/ensure/repo.js +90 -0
  278. package/dist/services/repo/index.js +52 -0
  279. package/dist/services/repo/lib/github-api.js +196 -0
  280. package/dist/services/search/ensure/ga-link.js +57 -0
  281. package/dist/services/search/ensure/property.js +137 -0
  282. package/dist/services/search/ensure/sitemaps.js +70 -0
  283. package/dist/services/search/index.js +61 -0
  284. package/dist/services/search/lib/search-console-api.js +92 -0
  285. package/dist/services/seo/ensure/github-repos.js +271 -0
  286. package/dist/services/seo/index.js +55 -0
  287. package/dist/services/seo/lib/gh-api.js +161 -0
  288. package/dist/services/seo/templates/developer-tool/.github/workflows/maintenance.yml +25 -0
  289. package/dist/services/seo/templates/developer-tool/.nvmrc +1 -0
  290. package/dist/services/seo/templates/developer-tool/_README.md.js +121 -0
  291. package/dist/services/seo/templates/developer-tool/_package.json.js +33 -0
  292. package/dist/services/seo/templates/developer-tool/src/index.js +120 -0
  293. package/dist/services/seo/templates/index.js +57 -0
  294. package/dist/services/server/ensure/brands.js +63 -0
  295. package/dist/services/server/index.js +42 -0
  296. package/dist/services/testing/ensure/target-checks.js +97 -0
  297. package/dist/services/testing/index.js +11 -0
  298. package/dist/services/testing/lib/checks.js +467 -0
  299. package/dist/services/update/index.js +20 -0
  300. package/dist/services/update/lib/cache.js +59 -0
  301. package/dist/services/update/lib/fingerprint.js +157 -0
  302. package/dist/services/update/write/targets.js +206 -0
  303. package/dist/services/workspace/ensure/agents.js +42 -0
  304. package/dist/services/workspace/ensure/claude-settings.js +34 -0
  305. package/dist/services/workspace/ensure/config.js +54 -0
  306. package/dist/services/workspace/ensure/defaults.js +60 -0
  307. package/dist/services/workspace/ensure/env-keys.js +55 -0
  308. package/dist/services/workspace/ensure/env-order.js +66 -0
  309. package/dist/services/workspace/ensure/env-rules.js +97 -0
  310. package/dist/services/workspace/ensure/gitignore.js +18 -0
  311. package/dist/services/workspace/ensure/scripts.js +126 -0
  312. package/dist/services/workspace/ensure/structure.js +97 -0
  313. package/dist/services/workspace/ensure/translation-sdk.js +148 -0
  314. package/dist/services/workspace/ensure/workflows.js +54 -0
  315. package/dist/services/workspace/index.js +8 -0
  316. package/dist/vendor/account/engine.js +182 -0
  317. package/dist/vendor/account/features.js +220 -0
  318. package/dist/vendor/account/index.js +53 -0
  319. package/dist/vendor/account/schema.js +272 -0
  320. package/dist/vendor/account/subscription.js +38 -0
  321. package/dist/vendor/config/company.js +31 -0
  322. package/dist/vendor/config/defaults.js +173 -0
  323. package/dist/vendor/config/demo.js +18 -0
  324. package/dist/vendor/config/desktop-artifacts.js +110 -0
  325. package/dist/vendor/config/edit.js +769 -0
  326. package/dist/vendor/config/env-delivery.js +145 -0
  327. package/dist/vendor/config/env-rules.js +93 -0
  328. package/dist/vendor/config/env-schema.js +1078 -0
  329. package/dist/vendor/config/env.js +445 -0
  330. package/dist/vendor/config/hooks.js +97 -0
  331. package/dist/vendor/config/index.js +237 -0
  332. package/dist/vendor/config/instances.js +208 -0
  333. package/dist/vendor/config/load.js +490 -0
  334. package/dist/vendor/config/merge.js +68 -0
  335. package/dist/vendor/config/order.js +139 -0
  336. package/dist/vendor/config/ports.js +374 -0
  337. package/dist/vendor/config/providers.js +32 -0
  338. package/dist/vendor/config/repo.js +142 -0
  339. package/dist/vendor/config/retired-keys.js +430 -0
  340. package/dist/vendor/config/schema.js +1610 -0
  341. package/dist/vendor/config/secrets.js +50 -0
  342. package/dist/vendor/config/seed.js +34 -0
  343. package/dist/vendor/config/site-global.js +205 -0
  344. package/dist/vendor/config/validate.js +554 -0
  345. package/dist/vendor/config/winback.js +61 -0
  346. package/dist/vendor/devkit/attach-log-file.js +262 -0
  347. package/dist/vendor/devkit/certs.js +199 -0
  348. package/dist/vendor/devkit/ci-workflows.js +520 -0
  349. package/dist/vendor/devkit/cli-router.js +156 -0
  350. package/dist/vendor/devkit/command-path.js +46 -0
  351. package/dist/vendor/devkit/deploy-record.js +180 -0
  352. package/dist/vendor/devkit/flows.js +317 -0
  353. package/dist/vendor/devkit/local-https.js +360 -0
  354. package/dist/vendor/devkit/local.js +1905 -0
  355. package/dist/vendor/devkit/logger.js +128 -0
  356. package/dist/vendor/devkit/omega-bin.js +345 -0
  357. package/dist/vendor/devkit/prompt.js +187 -0
  358. package/dist/vendor/devkit/safe-install.js +18 -0
  359. package/dist/vendor/devkit/stop-signals.js +28 -0
  360. package/dist/vendor/devkit/test/scope.js +162 -0
  361. package/dist/vendor/devkit/translate/cache.js +84 -0
  362. package/dist/vendor/devkit/translate/engine.js +243 -0
  363. package/dist/vendor/devkit/translate/index.js +49 -0
  364. package/dist/vendor/devkit/translate/languages.js +134 -0
  365. package/dist/vendor/devkit/translate/providers.js +188 -0
  366. package/dist/vendor/devkit/update.js +569 -0
  367. package/docs/AGENTS.md +200 -0
  368. package/docs/account.md +45 -0
  369. package/docs/advertising.md +46 -0
  370. package/docs/ai.md +34 -0
  371. package/docs/analytics.md +69 -0
  372. package/docs/assets.md +57 -0
  373. package/docs/bookmark.md +26 -0
  374. package/docs/brand.md +151 -0
  375. package/docs/campaigns.md +96 -0
  376. package/docs/captcha.md +46 -0
  377. package/docs/certificates.md +68 -0
  378. package/docs/chat.md +47 -0
  379. package/docs/cloud.md +110 -0
  380. package/docs/company.md +64 -0
  381. package/docs/directory.md +140 -0
  382. package/docs/disperse.md +46 -0
  383. package/docs/domain.md +56 -0
  384. package/docs/edge.md +234 -0
  385. package/docs/email.md +42 -0
  386. package/docs/forms.md +48 -0
  387. package/docs/index.md +109 -0
  388. package/docs/migration.md +203 -0
  389. package/docs/migrations.md +56 -0
  390. package/docs/monitoring.md +41 -0
  391. package/docs/newsletter.md +48 -0
  392. package/docs/payment.md +83 -0
  393. package/docs/repo.md +48 -0
  394. package/docs/search.md +44 -0
  395. package/docs/seo.md +34 -0
  396. package/docs/server.md +37 -0
  397. package/docs/shared/agent-docs.md +89 -0
  398. package/docs/shared/analytics.md +612 -0
  399. package/docs/shared/brands.md +51 -0
  400. package/docs/shared/breaking-changes.md +497 -0
  401. package/docs/shared/config.md +1387 -0
  402. package/docs/shared/deploys.md +215 -0
  403. package/docs/shared/icons.md +201 -0
  404. package/docs/shared/local-dev.md +147 -0
  405. package/docs/shared/logging.md +202 -0
  406. package/docs/shared/monitoring.md +153 -0
  407. package/docs/shared/publishing.md +183 -0
  408. package/docs/shared/rulings.md +34 -0
  409. package/docs/shared/testing.md +147 -0
  410. package/docs/shared/theming.md +604 -0
  411. package/docs/shared/translation.md +291 -0
  412. package/docs/shared/updates.md +61 -0
  413. package/docs/testing.md +34 -0
  414. package/docs/update.md +36 -0
  415. package/docs/workspace.md +64 -0
  416. package/package.json +88 -0
@@ -0,0 +1,145 @@
1
+ /**
2
+ * The delivery renderer — every workflow secrets block, bake list and
3
+ * push-secrets set, derived from the env schema alone
4
+ * ([#627](https://github.com/Omega-JS-Stack/omega/issues/627)).
5
+ *
6
+ * HOW a key reaches its consumer used to be decided in three unrelated places:
7
+ * the web target scanned the resolved .env to render its workflow block, the
8
+ * extension and desktop workflows carried hand-written `${{ secrets.KEY }}`
9
+ * lists, and each build's bake was hand-coded per framework. Three systems for
10
+ * one concern. The schema's `delivery` field is now the single declaration
11
+ * (see env-schema.js's header for the three modes) and this module is its ONE
12
+ * reader — no framework keeps a list.
13
+ *
14
+ * Two rules ride on every list here:
15
+ *
16
+ * - `deliverAs` is honored: the DELIVERED name is what a runner and an
17
+ * artifact ever see (the brand's `GOOGLE_ANALYTICS_SECRET_WEB` is
18
+ * `GOOGLE_ANALYTICS_SECRET` in CI), so a repo secret is named for what
19
+ * reads it, not for the brand-level slot it came from.
20
+ * - `machineLocal` keys never leave the developer's machine
21
+ * ([#454](https://github.com/Omega-JS-Stack/omega/issues/454)), so they
22
+ * drop out of every rendered and published set.
23
+ *
24
+ * Pattern families (`match`, no `name`) carry a delivery like anything else,
25
+ * but have no fixed name to render, so nothing here can list them.
26
+ *
27
+ * Every function takes an optional `schema` so a caller — the tests — can
28
+ * exercise the rules against a fixture; the default is the real one.
29
+ */
30
+
31
+ const { ENV_SCHEMA } = require('./env-schema.js');
32
+
33
+ // Keys a generated workflow's own `env:` block already declares. The generated
34
+ // block never restates one (a repeated YAML mapping key is invalid) — they are
35
+ // still PUBLISHED, they just aren't re-rendered.
36
+ const WORKFLOW_OWNED_KEYS = ['GH_TOKEN', 'CLOUDFLARE_TOKEN', 'NODE_VERSION', 'NODE_ENV'];
37
+
38
+ // Rendered in place of the block when a target delivers nothing, so the
39
+ // generated region is always a valid, self-explaining line of YAML.
40
+ const EMPTY_BLOCK = '# (no CI-delivered keys for this target — the next omega verb regenerates this block)';
41
+
42
+ /**
43
+ * The delivered names a target receives in the given modes, sorted and
44
+ * deduplicated.
45
+ *
46
+ * The publicAtRest gate lives here, so EVERY lane that walks a baking entry
47
+ * refuses it: a `secret: true` key with no `publicAtRest` declaration can
48
+ * never reach a shipped artifact, not through a bake list and not through the
49
+ * workflow injection its bake implies.
50
+ *
51
+ * @param {string} target - Target name ('web', 'backend', 'desktop', …).
52
+ * @param {string[]} modes - The delivery modes to collect.
53
+ * @param {object[]} schema - Env schema entries.
54
+ * @returns {string[]} Delivered env var names.
55
+ */
56
+ function deliveredNames(target, modes, schema) {
57
+ const names = new Set();
58
+
59
+ for (const entry of schema) {
60
+ const mode = entry.delivery && entry.delivery[target];
61
+ if (!mode) continue;
62
+
63
+ if (mode === 'bake' && entry.secret && !entry.publicAtRest) {
64
+ throw new Error(`${entry.name || entry.match}: bakes into the ${target} artifact but declares no publicAtRest — a secret can never ride a shipped build`);
65
+ }
66
+
67
+ if (!modes.includes(mode)) continue;
68
+ if (!entry.name) continue;
69
+ if (entry.machineLocal) continue;
70
+
71
+ names.add(entry.deliverAs || entry.name);
72
+ }
73
+
74
+ return [...names].sort();
75
+ }
76
+
77
+ /**
78
+ * The keys a target's generated workflow needs in the runner env: every `ci`
79
+ * delivery, plus every `bake` (a bake is injected before it is baked).
80
+ *
81
+ * @param {string} target - Target name.
82
+ * @param {object} [options]
83
+ * @param {object[]} [options.schema] - Env schema entries (default: the real schema).
84
+ * @returns {string[]} Delivered env var names, sorted.
85
+ */
86
+ function workflowSecretKeys(target, { schema = ENV_SCHEMA } = {}) {
87
+ return deliveredNames(target, ['ci', 'bake'], schema);
88
+ }
89
+
90
+ /**
91
+ * The keys a target's build writes INTO its shipped artifact — what a packaged
92
+ * app carries because it runs with no .env. Every one is public at rest.
93
+ *
94
+ * @param {string} target - Target name.
95
+ * @param {object} [options]
96
+ * @param {object[]} [options.schema] - Env schema entries.
97
+ * @returns {string[]} Delivered env var names, sorted.
98
+ */
99
+ function bakeKeys(target, { schema = ENV_SCHEMA } = {}) {
100
+ return deliveredNames(target, ['bake'], schema);
101
+ }
102
+
103
+ /**
104
+ * The repo Actions secrets a push-secrets publisher sends for a target: the
105
+ * same set the workflow consumes (a secret CI never reads has no business in
106
+ * the repo, and a key the workflow injects must exist as one). Workflow-owned
107
+ * names are included — the template's `${{ secrets.GH_TOKEN }}` needs the
108
+ * secret to exist even though the generated block never restates it.
109
+ *
110
+ * @param {string} target - Target name.
111
+ * @param {object} [options]
112
+ * @param {object[]} [options.schema] - Env schema entries.
113
+ * @returns {string[]} Delivered env var names, sorted.
114
+ */
115
+ function publishSecretKeys(target, options) {
116
+ return workflowSecretKeys(target, options);
117
+ }
118
+
119
+ /**
120
+ * Render a workflow's generated env block: one `KEY: ${{ secrets.KEY }}` line
121
+ * per CI-delivered key, sorted (a deterministic block re-renders
122
+ * byte-identical, so a scaffold's idempotency check reports no write). Lines
123
+ * join at `indent`; the template's token supplies the first line's.
124
+ *
125
+ * @param {string} target - Target name.
126
+ * @param {object} [options]
127
+ * @param {object[]} [options.schema] - Env schema entries.
128
+ * @param {string} [options.indent] - The token's indent (default two spaces).
129
+ * @returns {string} The block body (no leading indent).
130
+ */
131
+ function renderSecretsBlock(target, { schema = ENV_SCHEMA, indent = ' ' } = {}) {
132
+ const lines = workflowSecretKeys(target, { schema })
133
+ .filter((key) => !WORKFLOW_OWNED_KEYS.includes(key))
134
+ .map((key) => `${key}: \${{ secrets.${key} }}`);
135
+
136
+ return lines.length ? lines.join(`\n${indent}`) : EMPTY_BLOCK;
137
+ }
138
+
139
+ module.exports = {
140
+ WORKFLOW_OWNED_KEYS,
141
+ workflowSecretKeys,
142
+ bakeKeys,
143
+ publishSecretKeys,
144
+ renderSecretsBlock,
145
+ };
@@ -0,0 +1,93 @@
1
+ /**
2
+ * The env presence checker — the ONE evaluator of the schema's `required` and
3
+ * `requiredWhen` rules
4
+ * ([#626](https://github.com/Omega-JS-Stack/omega/issues/626)).
5
+ *
6
+ * Every such rule used to be a hand-written if in whatever target noticed it
7
+ * first: the extension's build threw when a GA4 id had no Measurement Protocol
8
+ * secret, the manager's captcha service paired site key and secret on its own.
9
+ * Each was one more place to drift, and each protected one target only. The
10
+ * schema declares the rule once (env-schema.js) and this checker answers it
11
+ * for its three real consumers:
12
+ *
13
+ * - the backend's boot reader (@omega.js/backend, libraries/env.js
14
+ * `assertRules`) — production refuses, everything else warns;
15
+ * - the two BAKE lanes, where a missing key would be frozen into a shipped
16
+ * artifact: the extension's build.json bake (gulp/tasks/package.js) and the
17
+ * desktop's bundle `define` bake (gulp/tasks/bundle.js), both
18
+ * refusing in build/publish mode and warning in development. Web has NO
19
+ * bake seam — a site reads its values at request time, so there is nothing
20
+ * to freeze and nothing to check;
21
+ * - the manager's manage-time workspace op
22
+ * (services/workspace/ensure/env-rules.js), evaluated per ENABLED target
23
+ * against that target's resolved config — the earliest a human hears about
24
+ * any of it, and a warning every time.
25
+ *
26
+ * PRESENCE ONLY, never a value shape (Ian 2026-08-26): a rule fires when the
27
+ * key is empty, never because a value "looks wrong". `requiredWhen` is
28
+ * one-directional — a truthy config path makes the key mandatory; an empty key
29
+ * never says anything about the config.
30
+ *
31
+ * The checker NEVER throws and never logs. It returns the violations and the
32
+ * caller decides the severity (build mode and production boot fail loudly,
33
+ * development warns and continues).
34
+ */
35
+
36
+ const { ENV_SCHEMA } = require('./env-schema.js');
37
+ const { getPath } = require('./validate.js');
38
+
39
+ /**
40
+ * Whether a key has a value in the given env map, under its own name or the
41
+ * name it is DELIVERED under (a target's build holds
42
+ * `GOOGLE_ANALYTICS_SECRET`, never the brand-level
43
+ * `GOOGLE_ANALYTICS_SECRET_WEB` it came from). An empty string is absent —
44
+ * the same rule the .env cascade applies.
45
+ *
46
+ * @param {object} env - Env var map (process.env, a composed target env, …).
47
+ * @param {object} entry - The schema entry.
48
+ * @returns {boolean}
49
+ */
50
+ function hasValue(env, entry) {
51
+ if (env[entry.name]) return true;
52
+
53
+ return Boolean(entry.deliverAs && env[entry.deliverAs]);
54
+ }
55
+
56
+ /**
57
+ * Check a resolved config + env pair against the schema's presence rules.
58
+ *
59
+ * Pass the caller's `target` and only the entries that name it are evaluated —
60
+ * a web build never owes the desktop's Snap credentials. Without one, every
61
+ * entry is checked, which is the manager's brand-wide view.
62
+ *
63
+ * @param {object} config - The resolved omega.json5 config.
64
+ * @param {object} env - Env var map (process.env, a composed target env, …).
65
+ * @param {object} [options]
66
+ * @param {string} [options.target] - Target name ('web', 'backend', …).
67
+ * @param {object[]} [options.schema] - Env schema entries (default: the real schema).
68
+ * @returns {Array<{ key: string, rule: 'required'|'requiredWhen', path: string|null }>}
69
+ * One violation per empty key that owes a value; `path` is the config path
70
+ * that made it mandatory, null for an unconditional `required`.
71
+ */
72
+ function checkEnvRules(config, env, { target, schema = ENV_SCHEMA } = {}) {
73
+ const values = env || {};
74
+ const violations = [];
75
+
76
+ for (const entry of schema) {
77
+ // A pattern family has no fixed name, so nothing can be owed under it
78
+ if (!entry.name) continue;
79
+ if (target && !entry.targets.includes(target)) continue;
80
+ if (!entry.required && !entry.requiredWhen) continue;
81
+ if (hasValue(values, entry)) continue;
82
+
83
+ if (entry.required) {
84
+ violations.push({ key: entry.name, rule: 'required', path: null });
85
+ } else if (getPath(config, entry.requiredWhen)) {
86
+ violations.push({ key: entry.name, rule: 'requiredWhen', path: entry.requiredWhen });
87
+ }
88
+ }
89
+
90
+ return violations;
91
+ }
92
+
93
+ module.exports = { checkEnvRules };