@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,134 @@
1
+ /**
2
+ * Language SSOT for the OMEGA translation system — the code → English-name
3
+ * map every framework validates against, plus the RTL set. Brand configs pick
4
+ * target codes in `translation.languages`; frameworks never carry their own
5
+ * language lists.
6
+ */
7
+
8
+ // Supported target languages (ISO 639-1 codes → English names). The names are
9
+ // sent to the AI provider so the model knows exactly which variant is meant.
10
+ const LANGUAGE_NAMES = {
11
+ ar: 'Arabic',
12
+ bn: 'Bengali',
13
+ cs: 'Czech',
14
+ da: 'Danish',
15
+ de: 'German',
16
+ el: 'Greek',
17
+ es: 'Spanish',
18
+ fa: 'Persian (Farsi)',
19
+ fi: 'Finnish',
20
+ fr: 'French',
21
+ he: 'Hebrew',
22
+ hi: 'Hindi',
23
+ hu: 'Hungarian',
24
+ id: 'Indonesian',
25
+ it: 'Italian',
26
+ ja: 'Japanese',
27
+ ko: 'Korean',
28
+ ms: 'Malay',
29
+ nl: 'Dutch',
30
+ no: 'Norwegian',
31
+ pl: 'Polish',
32
+ pt: 'Portuguese',
33
+ ro: 'Romanian',
34
+ ru: 'Russian',
35
+ sv: 'Swedish',
36
+ th: 'Thai',
37
+ tl: 'Tagalog/Filipino',
38
+ tr: 'Turkish',
39
+ uk: 'Ukrainian',
40
+ ur: 'Urdu',
41
+ vi: 'Vietnamese',
42
+ zh: 'Chinese (Simplified)',
43
+ };
44
+
45
+ // Open Graph locales (`language_TERRITORY` — the og:locale convention) for the
46
+ // supported set plus the common source languages. One territory per language:
47
+ // the most widely used one, matching Facebook's locale list (Norwegian is
48
+ // `nb_NO` there, Portuguese `pt_PT`).
49
+ const LANGUAGE_LOCALES = {
50
+ ar: 'ar_AR',
51
+ bn: 'bn_IN',
52
+ cs: 'cs_CZ',
53
+ da: 'da_DK',
54
+ de: 'de_DE',
55
+ el: 'el_GR',
56
+ en: 'en_US',
57
+ es: 'es_ES',
58
+ fa: 'fa_IR',
59
+ fi: 'fi_FI',
60
+ fr: 'fr_FR',
61
+ he: 'he_IL',
62
+ hi: 'hi_IN',
63
+ hu: 'hu_HU',
64
+ id: 'id_ID',
65
+ it: 'it_IT',
66
+ ja: 'ja_JP',
67
+ ko: 'ko_KR',
68
+ ms: 'ms_MY',
69
+ nl: 'nl_NL',
70
+ no: 'nb_NO',
71
+ pl: 'pl_PL',
72
+ pt: 'pt_PT',
73
+ ro: 'ro_RO',
74
+ ru: 'ru_RU',
75
+ sv: 'sv_SE',
76
+ th: 'th_TH',
77
+ tl: 'tl_PH',
78
+ tr: 'tr_TR',
79
+ uk: 'uk_UA',
80
+ ur: 'ur_PK',
81
+ vi: 'vi_VN',
82
+ zh: 'zh_CN',
83
+ };
84
+
85
+ // Right-to-left languages (drives <html dir="rtl"> on translated pages)
86
+ const RTL_LANGUAGES = ['ar', 'he', 'fa', 'ur', 'ps', 'sd', 'ku', 'yi', 'ckb', 'dv'];
87
+
88
+ /**
89
+ * Whether a language renders right-to-left.
90
+ * @param {string} code - language code
91
+ * @returns {boolean}
92
+ */
93
+ function isRTL(code) {
94
+ return RTL_LANGUAGES.includes(code);
95
+ }
96
+
97
+ /**
98
+ * English name for a language code.
99
+ * @param {string} code - language code
100
+ * @returns {string} the name, or the code itself if unknown
101
+ */
102
+ function languageName(code) {
103
+ return LANGUAGE_NAMES[code] || code;
104
+ }
105
+
106
+ /**
107
+ * Open Graph locale for a language code — `es` → `es_ES`. Target codes are
108
+ * validated by assertKnownLanguages, but the SOURCE language is free-form
109
+ * config, so an unmapped code falls back to the code itself (a bare code is
110
+ * what og:locale carried before this map existed).
111
+ * @param {string} code - language code
112
+ * @returns {string} the language_TERRITORY locale, or the code if unmapped
113
+ */
114
+ function ogLocale(code) {
115
+ return LANGUAGE_LOCALES[code] || code;
116
+ }
117
+
118
+ /**
119
+ * Assert every code is a supported target language.
120
+ * @param {string[]} codes - language codes from config
121
+ * @throws {Error} naming the unknown codes and the supported set
122
+ */
123
+ function assertKnownLanguages(codes) {
124
+ const unknown = (codes || []).filter((code) => !LANGUAGE_NAMES[code]);
125
+
126
+ if (unknown.length) {
127
+ throw new Error(
128
+ `Unknown translation language(s): ${unknown.join(', ')}. `
129
+ + `Supported codes: ${Object.keys(LANGUAGE_NAMES).join(', ')}`
130
+ );
131
+ }
132
+ }
133
+
134
+ module.exports = { LANGUAGE_NAMES, LANGUAGE_LOCALES, RTL_LANGUAGES, isRTL, languageName, ogLocale, assertKnownLanguages };
@@ -0,0 +1,188 @@
1
+ /**
2
+ * AI providers for the translation engine — `claude` (default; rides the
3
+ * locally-installed Claude Code via @anthropic-ai/claude-agent-sdk, so no API
4
+ * key is needed) and `chatgpt` (OpenAI Responses API via native fetch;
5
+ * requires OPENAI_API_KEY). Both expose the same contract:
6
+ * provider.send({ system, user }) → Promise<{ text, usage }>
7
+ * where usage is { input, output } token counts (zeros when unreported).
8
+ *
9
+ * The Agent SDK is lazy-required, so it is only touched when a claude call
10
+ * actually happens, and devkit itself stays dependency-free here. It resolves
11
+ * from whoever installed it: @omega.js/extension declares it, @omega.js/web
12
+ * does NOT (#37: translation is opt-in and the SDK is heavy, so a web brand
13
+ * that enables translation installs it in the target). When it is absent, the
14
+ * call fails loud with the install command instead of skipping translation.
15
+ */
16
+
17
+ const PROVIDERS = ['claude', 'chatgpt'];
18
+
19
+ // Default model per provider. 'sonnet' is the Claude Code alias that tracks
20
+ // the current Sonnet — no stale date pins in framework code.
21
+ const DEFAULT_MODELS = {
22
+ claude: 'sonnet',
23
+ chatgpt: 'gpt-5.4-nano',
24
+ };
25
+
26
+ /**
27
+ * Build a provider handle from config values.
28
+ * @param {object} options
29
+ * @param {string} [options.provider] - 'claude' (default) or 'chatgpt'
30
+ * @param {string} [options.model] - model override (default per provider)
31
+ * @param {Function} [options.fetchFn] - fetch override (tests)
32
+ * @returns {{ name: string, model: string, send: Function }}
33
+ */
34
+ function resolveProvider(options) {
35
+ options = options || {};
36
+ const name = options.provider || 'claude';
37
+
38
+ if (!PROVIDERS.includes(name)) {
39
+ throw new Error(`Unknown translation provider "${name}" — use ${PROVIDERS.map((p) => `'${p}'`).join(' or ')}`);
40
+ }
41
+
42
+ const model = options.model || DEFAULT_MODELS[name];
43
+ const send = name === 'claude'
44
+ ? (message) => sendClaude(model, message)
45
+ : (message) => sendChatgpt(model, message, options.fetchFn);
46
+
47
+ return { name, model, send };
48
+ }
49
+
50
+ /**
51
+ * Send one prompt through the local Claude Code install (Agent SDK).
52
+ * @param {string} model - model name/alias
53
+ * @param {{ system: string, user: string }} message
54
+ * @returns {Promise<{ text: string, usage: { input: number, output: number } }>}
55
+ */
56
+ async function sendClaude(model, message) {
57
+ let query;
58
+ try {
59
+ ({ query } = require('@anthropic-ai/claude-agent-sdk'));
60
+ } catch (e) {
61
+ throw new Error('The claude translation provider needs @anthropic-ai/claude-agent-sdk, which is not installed here. Translation is opt-in and the SDK is heavy, so the framework does not bundle it: install it in this target with `npm install @anthropic-ai/claude-agent-sdk` (it also needs a local Claude Code install/auth), or set translation.providers to { chatgpt: {} }.');
62
+ }
63
+
64
+ let text = '';
65
+ const usage = { input: 0, output: 0 };
66
+
67
+ // Hermetic single-shot: settingSources [] keeps the user's CLAUDE.md/hooks
68
+ // out of the session (they pollute mechanical output), the system prompt
69
+ // replaces the CLI persona, and no maxTurns cap — a plain reply already
70
+ // counts as the final turn and a cap of 1 reports error_max_turns.
71
+ //
72
+ // Subscription-only by contract: this provider rides the local Claude
73
+ // Code install's own login. A stray ANTHROPIC_API_KEY anywhere in the
74
+ // env cascade would silently flip the SDK to API-credit billing — the
75
+ // child env hides it so the subscription is the ONLY auth path.
76
+ const env = { ...process.env };
77
+ delete env.ANTHROPIC_API_KEY;
78
+
79
+ const consume = async () => {
80
+ for await (const event of query({
81
+ prompt: message.user,
82
+ options: {
83
+ model,
84
+ allowedTools: [],
85
+ settingSources: [],
86
+ systemPrompt: message.system,
87
+ env,
88
+ },
89
+ })) {
90
+ if (event.type === 'assistant' && event.message?.content) {
91
+ for (const block of event.message.content) {
92
+ if (block.type === 'text') {
93
+ text += block.text;
94
+ }
95
+ }
96
+ }
97
+
98
+ if (event.type === 'result') {
99
+ // A failed call must throw NOW — a session-limited install can
100
+ // otherwise stall the whole build (the 28-minute cp119 hang)
101
+ if (event.subtype && event.subtype !== 'success') {
102
+ throw new Error(`Claude translate call failed (${event.subtype})${event.result ? `: ${String(event.result).slice(0, 200)}` : ''} — if this is the session limit, wait for the 5-hour window to reset or build with --cached-only.`);
103
+ }
104
+ if (event.usage) {
105
+ usage.input += event.usage.input_tokens || 0;
106
+ usage.output += event.usage.output_tokens || 0;
107
+ }
108
+ }
109
+ }
110
+ };
111
+
112
+ // Hard per-call ceiling — a stalled SDK call fails loud and fast instead
113
+ // of hanging the caller (OMEGA_TRANSLATE_TIMEOUT_MS overrides; tests use it)
114
+ const timeoutMs = Number(process.env.OMEGA_TRANSLATE_TIMEOUT_MS || 240000);
115
+ let timer = null;
116
+ try {
117
+ await Promise.race([
118
+ consume(),
119
+ new Promise((resolve, reject) => {
120
+ // NOT unref'd on purpose: the finally-clearTimeout already stops a
121
+ // settled call from holding the process, and an unref'd watchdog
122
+ // lets a stalled SDK call with no other live handles drain the
123
+ // event loop and exit SILENTLY before the timer can fire — the
124
+ // exact opposite of failing loud (and a test-run flake: the
125
+ // stalled-call test was cancelled whenever nothing else kept the
126
+ // loop alive for the 80ms window).
127
+ timer = setTimeout(() => reject(new Error(`Claude translate call exceeded ${Math.round(timeoutMs / 1000)}s — a stalled SDK call (often the session limit); wait for the window to reset or build with --cached-only.`)), timeoutMs);
128
+ }),
129
+ ]);
130
+ } finally {
131
+ clearTimeout(timer);
132
+ }
133
+
134
+ return { text, usage };
135
+ }
136
+
137
+ /**
138
+ * Send one prompt through the OpenAI Responses API.
139
+ * @param {string} model - model name
140
+ * @param {{ system: string, user: string }} message
141
+ * @param {Function} [fetchFn] - fetch override (tests)
142
+ * @returns {Promise<{ text: string, usage: { input: number, output: number } }>}
143
+ */
144
+ async function sendChatgpt(model, message, fetchFn) {
145
+ const apiKey = process.env.OPENAI_API_KEY;
146
+ if (!apiKey) {
147
+ throw new Error('The chatgpt translation provider requires OPENAI_API_KEY in the environment (.env cascade) — or use the default "claude" provider (local Claude Code, no key).');
148
+ }
149
+
150
+ const doFetch = fetchFn || fetch;
151
+ const response = await doFetch('https://api.openai.com/v1/responses', {
152
+ method: 'POST',
153
+ headers: {
154
+ 'Authorization': `Bearer ${apiKey}`,
155
+ 'Content-Type': 'application/json',
156
+ },
157
+ signal: AbortSignal.timeout(240000),
158
+ body: JSON.stringify({
159
+ model,
160
+ input: [
161
+ { role: 'developer', content: message.system },
162
+ { role: 'user', content: message.user },
163
+ ],
164
+ reasoning: { effort: 'low' },
165
+ }),
166
+ });
167
+
168
+ if (!response.ok) {
169
+ const body = await response.text().catch(() => '');
170
+ throw new Error(`OpenAI API error ${response.status}: ${body.slice(0, 300)}`);
171
+ }
172
+
173
+ const data = await response.json();
174
+
175
+ // Reasoning models emit a reasoning item first — find the message item
176
+ const item = (data.output || []).find((o) => o.type === 'message');
177
+ const text = item?.content?.[0]?.text || '';
178
+
179
+ return {
180
+ text,
181
+ usage: {
182
+ input: data.usage?.input_tokens || 0,
183
+ output: data.usage?.output_tokens || 0,
184
+ },
185
+ };
186
+ }
187
+
188
+ module.exports = { PROVIDERS, DEFAULT_MODELS, resolveProvider };