@inneranimalmedia/agentsam-sdk 2.6.11 → 2.6.12

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 (411) hide show
  1. package/apps/cad-creator/shared/cad/package.json +1 -1
  2. package/apps/client-cms-editor/backend/package.json +2 -2
  3. package/apps/client-cms-editor/frontend/package.json +3 -3
  4. package/apps/client-cms-editor/frontend/src/adapters/http-authoring.test.ts +161 -0
  5. package/apps/client-cms-editor/frontend/src/adapters/http.ts +296 -65
  6. package/apps/client-cms-editor/frontend/src/editor/CmsEditor.tsx +47 -16
  7. package/apps/client-cms-editor/frontend/src/editor/composition-groups.test.ts +40 -0
  8. package/apps/client-cms-editor/frontend/src/editor/legacy/CmsEditorPrototype.tsx +28 -28
  9. package/apps/client-cms-editor/frontend/src/editor/useCmsEditorController.ts +3 -3
  10. package/apps/client-cms-editor/frontend/src/styles/agentsam-drawer.css +5 -4
  11. package/apps/client-cms-editor/frontend/src/styles/studio.css +150 -149
  12. package/apps/client-cms-editor/package.json +1 -1
  13. package/apps/client-cms-editor/reference/harvest/plans/INNERANIMALS-CONTENT-001.md +1 -1
  14. package/apps/client-cms-editor/shared/cms/package.json +1 -1
  15. package/apps/client-cms-editor/shared/cms/src/editor-types.ts +42 -1
  16. package/docs/CMS_CONTEXTUAL_COMPOSER.md +4 -4
  17. package/docs/PRODUCT_LIFECYCLE.md +38 -38
  18. package/docs/REPO_FILE_MAP.txt +2 -2
  19. package/docs/THEME_REFINERY.md +6 -6
  20. package/docs/WINDOWS_RUNTIME_INSTALL.md +1 -1
  21. package/docs/adr/ADR-0002-brand-campaign-plugin-boundaries.md +603 -0
  22. package/docs/adr/ADR-0003-copro-clean-room-product-architecture.md +34 -0
  23. package/docs/adr/ADR-0003-product-portfolio-and-package-taxonomy.md +146 -0
  24. package/docs/adr/ADR-0004-product-composition-and-provider-neutrality.md +56 -0
  25. package/docs/adr/ADR-0005-offer-graduation-standard.md +66 -0
  26. package/docs/adr/README.md +25 -0
  27. package/docs/architecture/AGENTSAM_APPLICATION_CONTRACT.md +1 -1
  28. package/docs/architecture/DUAL_ANALYTICS_PRODUCT.md +1 -1
  29. package/docs/content-studio/HOST_MOUNT_CHECKLIST.md +1 -1
  30. package/docs/content-studio/REVISION_GATE_2026-09-27.md +3 -3
  31. package/docs/contracts/google-cloud-oauth-setup.md +1 -1
  32. package/docs/local-studio/WORKMODE_DONOR_NOTES.md +3 -3
  33. package/docs/plans/ASTRA-BRIEF-2026-09-18.md +1 -1
  34. package/docs/plans/LOCAL-STUDIO-REAL-APP-CONTRACT-ADDENDUM-2026-09-27.md +2 -2
  35. package/docs/plans/MACHINE-FIRST-APPS-TUI-2026-09-24.md +1 -1
  36. package/docs/plans/NEXT-AGENT-HANDOFF.md +2 -2
  37. package/docs/plans/TOMORROW-EXTENSIVE-TODO-2026-09-26.md +68 -68
  38. package/docs/plans/TOMORROW-MACHINE-FIRST-BRIEFING.md +1 -1
  39. package/docs/plans/UNIVERSAL-INGEST-MACHINE-FIRST-2026-09-24.md +1 -1
  40. package/docs/prd/PRD-agentsam-analytics.md +174 -0
  41. package/docs/prd/PRD-agentsam-brand.md +181 -0
  42. package/docs/prd/PRD-agentsam-browser.md +177 -0
  43. package/docs/prd/PRD-agentsam-cad-studio.md +177 -0
  44. package/docs/prd/PRD-agentsam-campaign.md +1178 -0
  45. package/docs/prd/PRD-agentsam-commerce-studio.md +180 -0
  46. package/docs/prd/PRD-agentsam-content-studio.md +179 -0
  47. package/docs/prd/PRD-agentsam-copro.md +39 -0
  48. package/docs/prd/PRD-agentsam-database-studio.md +175 -0
  49. package/docs/prd/PRD-agentsam-developer-studio.md +175 -0
  50. package/docs/prd/PRD-agentsam-hosted-runtime.md +180 -0
  51. package/docs/prd/PRD-agentsam-knowledge.md +174 -0
  52. package/docs/prd/PRD-agentsam-local-studio.md +180 -0
  53. package/docs/prd/PRD-agentsam-merch.md +177 -0
  54. package/docs/prd/PRD-agentsam-platform.md +179 -0
  55. package/docs/prd/PRD-agentsam-site-studio.md +180 -0
  56. package/docs/prd/PRD-agentsam-work.md +180 -0
  57. package/docs/prd/README.md +39 -0
  58. package/docs/product/COPRO-DONOR-AUDIT.md +9 -0
  59. package/docs/product/COPRO-EXECUTION-PLAN.md +81 -0
  60. package/docs/product/COPRO-UI-QUALITY-GATE.md +119 -0
  61. package/docs/product/OFFER-PORTFOLIO.md +158 -0
  62. package/docs/product/PACKAGE-TAXONOMY.md +78 -0
  63. package/examples/hyperspace-demo/dist/assets/index-SZ2LfOpJ.js +242 -0
  64. package/examples/hyperspace-demo/dist/index.html +13 -0
  65. package/native/agentsam-machine/core/src/lib.rs +2 -2
  66. package/package.json +55 -35
  67. package/packages/agentsam-brand/package.json +3 -2
  68. package/packages/agentsam-brand/src/public.js +192 -0
  69. package/packages/agentsam-contracts/README.md +1 -1
  70. package/packages/agentsam-contracts/package.json +1 -1
  71. package/packages/agentsam-errors/package.json +1 -1
  72. package/packages/agentsam-goap/package.json +2 -2
  73. package/packages/agentsam-hooks/package.json +1 -1
  74. package/packages/agentsam-knowledge/package.json +1 -1
  75. package/packages/agentsam-merch/package.json +1 -1
  76. package/packages/agentsam-merch/test/merch.test.mjs +1 -1
  77. package/packages/agentsam-nav/dist/browser.global.js +34 -71
  78. package/packages/agentsam-nav/dist/browser.js +759 -3157
  79. package/packages/agentsam-nav/dist/index.js +751 -3149
  80. package/packages/agentsam-nav/package.json +1 -1
  81. package/packages/agentsam-queue-control/package.json +1 -1
  82. package/packages/agentsam-repository/package.json +1 -1
  83. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +670 -0
  84. package/packages/agentsam-vault/package.json +1 -1
  85. package/packages/agentsam-workbench/package.json +5 -4
  86. package/packages/agentsam-workbench/src/agent/MiniAgentSam.tsx +28 -4
  87. package/packages/agentsam-workbench/src/agent/contextual-composer.css +72 -70
  88. package/packages/agentsam-workbench/src/agent/mini-agentsam.css +228 -10
  89. package/packages/connectors/cfoa/package.json +1 -1
  90. package/packages/heuristic-theme/package.json +1 -1
  91. package/packages/identity/package.json +1 -1
  92. package/packages/identity/src/frontend/auth-portal/pages/login.html +1 -1
  93. package/packages/identity/src/frontend/auth-portal/pages/reset.html +1 -1
  94. package/packages/identity/src/frontend/auth-portal/pages/signup.html +1 -1
  95. package/packages/identity/tests/chatgpt-provider.test.mjs +3 -3
  96. package/packages/identity/tests/oauth-consent-view.test.mjs +11 -11
  97. package/packages/providers/completeful/README.md +3 -3
  98. package/packages/providers/completeful/package.json +1 -1
  99. package/packages/theme-cypress/README.md +11 -0
  100. package/packages/{theme-church-site → theme-cypress}/package.json +14 -11
  101. package/packages/theme-cypress/prebuild.json +23 -0
  102. package/packages/theme-cypress/site/assets/generated/favicon.svg +7 -0
  103. package/packages/theme-cypress/site/assets/generated/media-044ba16613.webp +0 -0
  104. package/packages/theme-cypress/site/assets/generated/media-0a1ea6f6d9.webp +0 -0
  105. package/packages/theme-cypress/site/assets/generated/media-0c06778307.webp +0 -0
  106. package/packages/theme-cypress/site/assets/generated/media-1539ed373a.webp +0 -0
  107. package/packages/theme-cypress/site/assets/generated/media-2df479fd2d.webp +0 -0
  108. package/packages/theme-cypress/site/assets/generated/media-2e8bd0d9bc.webp +0 -0
  109. package/packages/theme-cypress/site/assets/generated/media-41d4e2643c.webp +0 -0
  110. package/packages/theme-cypress/site/assets/generated/media-46205bfde8.webp +0 -0
  111. package/packages/theme-cypress/site/assets/generated/media-50c5f3e279.webp +0 -0
  112. package/packages/theme-cypress/site/assets/generated/media-5f1467778c.webp +0 -0
  113. package/packages/theme-cypress/site/assets/generated/media-6703642b22.webp +0 -0
  114. package/packages/theme-cypress/site/assets/generated/media-87a490bc8e.webp +0 -0
  115. package/packages/theme-cypress/site/assets/generated/media-997c10ef39.webp +0 -0
  116. package/packages/theme-cypress/site/assets/generated/media-a423735c21.webp +0 -0
  117. package/packages/theme-cypress/site/assets/generated/media-c9cea5245b.webp +0 -0
  118. package/packages/theme-cypress/site/assets/generated/media-cab3c84c60.webp +0 -0
  119. package/packages/theme-cypress/site/assets/generated/media-ce06595d59.webp +0 -0
  120. package/packages/theme-cypress/site/assets/generated/media-d268905e7e.webp +0 -0
  121. package/packages/theme-cypress/site/assets/generated/media-f6711b5053.webp +0 -0
  122. package/packages/theme-cypress/site/assets/generated/media-manifest.json +226 -0
  123. package/packages/theme-cypress/site/assets/generated/social-card.webp +0 -0
  124. package/packages/theme-cypress/site/assets/generated/theme-mark-192.png +0 -0
  125. package/packages/theme-cypress/site/assets/generated/theme-mark-512.png +0 -0
  126. package/packages/theme-cypress/site/assets/generated/theme-mark.svg +7 -0
  127. package/packages/theme-cypress/site/beliefs.html +175 -0
  128. package/packages/theme-cypress/site/community.html +175 -0
  129. package/packages/theme-cypress/site/connect.html +319 -0
  130. package/packages/theme-cypress/site/donate.html +106 -0
  131. package/packages/theme-cypress/site/groups.html +1352 -0
  132. package/packages/theme-cypress/site/help.html +1 -0
  133. package/packages/theme-cypress/site/icons/clock.svg +4 -0
  134. package/packages/theme-cypress/site/icons/email.svg +4 -0
  135. package/packages/theme-cypress/site/icons/giving.svg +4 -0
  136. package/packages/theme-cypress/site/icons/home.svg +4 -0
  137. package/packages/theme-cypress/site/icons/location.svg +4 -0
  138. package/packages/theme-cypress/site/icons/media.svg +4 -0
  139. package/packages/theme-cypress/site/icons/ministries.svg +6 -0
  140. package/packages/theme-cypress/site/icons/prayer.svg +5 -0
  141. package/packages/theme-cypress/site/icons/visit.svg +6 -0
  142. package/packages/theme-cypress/site/index.html +1013 -0
  143. package/packages/theme-cypress/site/mensgroup.html +477 -0
  144. package/packages/theme-cypress/site/mission.html +512 -0
  145. package/packages/theme-cypress/site/unified-footer.css +172 -0
  146. package/packages/theme-cypress/site/unified-footer.js +175 -0
  147. package/packages/theme-cypress/site/unified-header.css +226 -0
  148. package/packages/theme-cypress/site/unified-header.js +111 -0
  149. package/packages/theme-cypress/site/womansgroup.html +452 -0
  150. package/packages/{theme-church-site → theme-cypress}/src/index.js +22 -35
  151. package/packages/theme-cypress/src/node.js +69 -0
  152. package/packages/theme-cypress/test/theme.test.mjs +47 -0
  153. package/packages/theme-ember/README.md +11 -0
  154. package/packages/{theme-fuelnfree-site → theme-ember}/package.json +14 -11
  155. package/packages/theme-ember/prebuild.json +23 -0
  156. package/packages/theme-ember/site/about.html +1840 -0
  157. package/packages/theme-ember/site/assets/generated/favicon.svg +7 -0
  158. package/packages/theme-ember/site/assets/generated/media-1e0b1e6ee6.webp +0 -0
  159. package/packages/theme-ember/site/assets/generated/media-2371dcb426.webp +0 -0
  160. package/packages/theme-ember/site/assets/generated/media-2db4f5ff9e.webp +0 -0
  161. package/packages/theme-ember/site/assets/generated/media-4ed07a756e.webp +0 -0
  162. package/packages/theme-ember/site/assets/generated/media-58182cf167.webp +0 -0
  163. package/packages/theme-ember/site/assets/generated/media-5b8b8472ae.webp +0 -0
  164. package/packages/theme-ember/site/assets/generated/media-71f4bd16a1.webp +0 -0
  165. package/packages/theme-ember/site/assets/generated/media-7c1c8120bc.webp +0 -0
  166. package/packages/theme-ember/site/assets/generated/media-832b176433.webp +0 -0
  167. package/packages/theme-ember/site/assets/generated/media-931439701c.webp +0 -0
  168. package/packages/theme-ember/site/assets/generated/media-c2860d40d1.webp +0 -0
  169. package/packages/theme-ember/site/assets/generated/media-c56974d198.webp +0 -0
  170. package/packages/theme-ember/site/assets/generated/media-cb83a44ff4.webp +0 -0
  171. package/packages/theme-ember/site/assets/generated/media-df02ccdfcf.webp +0 -0
  172. package/packages/theme-ember/site/assets/generated/media-fab72cd344.webp +0 -0
  173. package/packages/theme-ember/site/assets/generated/media-manifest.json +190 -0
  174. package/packages/theme-ember/site/assets/generated/social-card.webp +0 -0
  175. package/packages/theme-ember/site/assets/generated/theme-mark-192.png +0 -0
  176. package/packages/theme-ember/site/assets/generated/theme-mark-512.png +0 -0
  177. package/packages/theme-ember/site/assets/generated/theme-mark.svg +7 -0
  178. package/packages/theme-ember/site/community.html +1664 -0
  179. package/packages/theme-ember/site/index.html +2044 -0
  180. package/packages/theme-ember/site/shop.html +2104 -0
  181. package/packages/{theme-fuelnfree-site → theme-ember}/src/index.js +23 -33
  182. package/packages/theme-ember/src/node.js +69 -0
  183. package/packages/theme-ember/test/theme.test.mjs +47 -0
  184. package/packages/theme-forge/README.md +11 -0
  185. package/packages/theme-forge/package.json +44 -0
  186. package/packages/theme-forge/prebuild.json +23 -0
  187. package/packages/theme-forge/site/apple-touch-icon.png +0 -0
  188. package/packages/theme-forge/site/assets/generated/favicon.svg +7 -0
  189. package/packages/theme-forge/site/assets/generated/media-manifest.json +17 -0
  190. package/packages/theme-forge/site/assets/generated/social-card.webp +0 -0
  191. package/packages/theme-forge/site/assets/generated/theme-mark-192.png +0 -0
  192. package/packages/theme-forge/site/assets/generated/theme-mark-512.png +0 -0
  193. package/packages/theme-forge/site/assets/generated/theme-mark.svg +7 -0
  194. package/packages/theme-forge/site/assets/index-DBOqQVsA.css +1 -0
  195. package/packages/theme-forge/site/assets/index-pXC0o9jp.js +241 -0
  196. package/packages/theme-forge/site/assets/workbox-window.prod.es5-Bd17z0YL.js +2 -0
  197. package/packages/theme-forge/site/index.html +5 -0
  198. package/packages/theme-forge/site/manifest.webmanifest +1 -0
  199. package/packages/theme-forge/site/pwa-192x192.png +0 -0
  200. package/packages/theme-forge/site/pwa-512x512.png +0 -0
  201. package/packages/theme-forge/site/sw.js +107 -0
  202. package/packages/theme-forge/site/workbox-7e5eb42b.js +3395 -0
  203. package/packages/theme-forge/src/index.js +76 -0
  204. package/packages/theme-forge/src/node.js +69 -0
  205. package/packages/theme-forge/test/theme.test.mjs +47 -0
  206. package/packages/theme-grove/README.md +11 -0
  207. package/packages/{theme-floors-site → theme-grove}/package.json +14 -11
  208. package/packages/theme-grove/prebuild.json +23 -0
  209. package/packages/theme-grove/site/assets/generated/favicon.svg +7 -0
  210. package/packages/theme-grove/site/assets/generated/media-098b13d75a.webp +0 -0
  211. package/packages/theme-grove/site/assets/generated/media-0c064db1aa.webp +0 -0
  212. package/packages/theme-grove/site/assets/generated/media-0fbfef655e.webp +0 -0
  213. package/packages/theme-grove/site/assets/generated/media-14759c7460.webp +0 -0
  214. package/packages/theme-grove/site/assets/generated/media-19b23d2a8f.webp +0 -0
  215. package/packages/theme-grove/site/assets/generated/media-2012f04243.webp +0 -0
  216. package/packages/theme-grove/site/assets/generated/media-23b8c5e2bb.webp +0 -0
  217. package/packages/theme-grove/site/assets/generated/media-2bffb1a6ef.webp +0 -0
  218. package/packages/theme-grove/site/assets/generated/media-2e1523a5b0.webp +0 -0
  219. package/packages/theme-grove/site/assets/generated/media-31107c21f2.webp +0 -0
  220. package/packages/theme-grove/site/assets/generated/media-31373ec865.webp +0 -0
  221. package/packages/theme-grove/site/assets/generated/media-45e8e27542.webp +0 -0
  222. package/packages/theme-grove/site/assets/generated/media-4aa9846fe7.webp +0 -0
  223. package/packages/theme-grove/site/assets/generated/media-5476b24219.webp +0 -0
  224. package/packages/theme-grove/site/assets/generated/media-7a227d3e4b.webp +0 -0
  225. package/packages/theme-grove/site/assets/generated/media-b183eed550.webp +0 -0
  226. package/packages/theme-grove/site/assets/generated/media-b2c650f9ab.webp +0 -0
  227. package/packages/theme-grove/site/assets/generated/media-b5d7471694.webp +0 -0
  228. package/packages/theme-grove/site/assets/generated/media-c86498fdb4.webp +0 -0
  229. package/packages/theme-grove/site/assets/generated/media-ce2cfff9a1.webp +0 -0
  230. package/packages/theme-grove/site/assets/generated/media-cf41a5f324.webp +0 -0
  231. package/packages/theme-grove/site/assets/generated/media-ec6c01bf8d.webp +0 -0
  232. package/packages/theme-grove/site/assets/generated/media-manifest.json +267 -0
  233. package/packages/theme-grove/site/assets/generated/social-card.webp +0 -0
  234. package/packages/theme-grove/site/assets/generated/theme-mark-192.png +0 -0
  235. package/packages/theme-grove/site/assets/generated/theme-mark-512.png +0 -0
  236. package/packages/theme-grove/site/assets/generated/theme-mark.svg +7 -0
  237. package/packages/theme-grove/site/index.html +1429 -0
  238. package/packages/theme-grove/site/pages/contact.html +664 -0
  239. package/packages/theme-grove/site/pages/gallery.html +216 -0
  240. package/packages/theme-grove/site/pages/privacy.html +180 -0
  241. package/packages/theme-grove/site/pages/process.html +592 -0
  242. package/packages/theme-grove/site/pages/services.html +567 -0
  243. package/packages/theme-grove/site/pages/terms.html +189 -0
  244. package/packages/theme-grove/site/shared/footer.css +140 -0
  245. package/packages/theme-grove/site/shared/footer.html +41 -0
  246. package/packages/{theme-floors-site → theme-grove}/src/index.js +24 -35
  247. package/packages/theme-grove/src/node.js +69 -0
  248. package/packages/theme-grove/test/theme.test.mjs +47 -0
  249. package/packages/theme-harbor/README.md +11 -0
  250. package/packages/{theme-insurance-site → theme-harbor}/package.json +14 -11
  251. package/packages/theme-harbor/prebuild.json +23 -0
  252. package/packages/theme-harbor/site/assets/generated/favicon.svg +7 -0
  253. package/packages/theme-harbor/site/assets/generated/media-manifest.json +17 -0
  254. package/packages/theme-harbor/site/assets/generated/social-card.webp +0 -0
  255. package/packages/theme-harbor/site/assets/generated/theme-mark-192.png +0 -0
  256. package/packages/theme-harbor/site/assets/generated/theme-mark-512.png +0 -0
  257. package/packages/theme-harbor/site/assets/generated/theme-mark.svg +7 -0
  258. package/packages/theme-harbor/site/assets/index-D58RKkr-.js +239 -0
  259. package/packages/theme-harbor/site/assets/index-Dd3YN9Mf.css +1 -0
  260. package/packages/theme-harbor/site/index.html +15 -0
  261. package/packages/theme-harbor/src/index.js +76 -0
  262. package/packages/theme-harbor/src/node.js +69 -0
  263. package/packages/theme-harbor/test/theme.test.mjs +47 -0
  264. package/packages/theme-resolve/README.md +11 -0
  265. package/packages/theme-resolve/package.json +44 -0
  266. package/packages/theme-resolve/prebuild.json +23 -0
  267. package/packages/theme-resolve/site/assets/generated/favicon.svg +7 -0
  268. package/packages/theme-resolve/site/assets/generated/media-216610d365.webp +0 -0
  269. package/packages/theme-resolve/site/assets/generated/media-2a9e0f623f.webp +0 -0
  270. package/packages/theme-resolve/site/assets/generated/media-a70660bfa9.webp +0 -0
  271. package/packages/theme-resolve/site/assets/generated/media-bc1322e813.webp +0 -0
  272. package/packages/theme-resolve/site/assets/generated/media-ced60fcecc.webp +0 -0
  273. package/packages/theme-resolve/site/assets/generated/media-manifest.json +72 -0
  274. package/packages/theme-resolve/site/assets/generated/social-card.webp +0 -0
  275. package/packages/theme-resolve/site/assets/generated/theme-mark-192.png +0 -0
  276. package/packages/theme-resolve/site/assets/generated/theme-mark-512.png +0 -0
  277. package/packages/theme-resolve/site/assets/generated/theme-mark.svg +7 -0
  278. package/packages/theme-resolve/site/assets/index-BSaLpPG1.css +2 -0
  279. package/packages/theme-resolve/site/assets/index-D8au46Z5.js +17 -0
  280. package/packages/theme-resolve/site/index.html +22 -0
  281. package/packages/theme-resolve/src/index.js +69 -0
  282. package/packages/theme-resolve/src/node.js +69 -0
  283. package/packages/theme-resolve/test/theme.test.mjs +47 -0
  284. package/packages/theme-scenes/package.json +1 -1
  285. package/packages/theme-scenes/src/registry.js +32 -49
  286. package/packages/theme-summit/README.md +11 -0
  287. package/packages/{theme-shinshu-site → theme-summit}/package.json +14 -11
  288. package/packages/theme-summit/prebuild.json +23 -0
  289. package/packages/theme-summit/site/adventures.html +450 -0
  290. package/packages/theme-summit/site/assets/generated/favicon.svg +7 -0
  291. package/packages/theme-summit/site/assets/generated/media-1e958ea679.webp +0 -0
  292. package/packages/theme-summit/site/assets/generated/media-9d4521abba.webp +0 -0
  293. package/packages/theme-summit/site/assets/generated/media-manifest.json +39 -0
  294. package/packages/theme-summit/site/assets/generated/social-card.webp +0 -0
  295. package/packages/theme-summit/site/assets/generated/theme-mark-192.png +0 -0
  296. package/packages/theme-summit/site/assets/generated/theme-mark-512.png +0 -0
  297. package/packages/theme-summit/site/assets/generated/theme-mark.svg +7 -0
  298. package/packages/theme-summit/site/business-card.html +315 -0
  299. package/packages/theme-summit/site/chatbot.js +312 -0
  300. package/packages/theme-summit/site/gallery.html +524 -0
  301. package/packages/theme-summit/site/i18n.js +947 -0
  302. package/packages/theme-summit/site/icons.svg +87 -0
  303. package/packages/theme-summit/site/index.html +2415 -0
  304. package/packages/theme-summit/site/pages/about.html +100 -0
  305. package/packages/theme-summit/site/pages/contact.html +117 -0
  306. package/packages/theme-summit/site/pages/dashboard.html +111 -0
  307. package/packages/theme-summit/site/pages/index.html +129 -0
  308. package/packages/theme-summit/site/pages/services.html +125 -0
  309. package/packages/theme-summit/site/shared/footer.html +41 -0
  310. package/packages/theme-summit/site/shared/layout.js +315 -0
  311. package/packages/theme-summit/site/shared/nav.html +19 -0
  312. package/packages/theme-summit/site/shared/styles.css +696 -0
  313. package/packages/theme-summit/site/theme-styles.css +131 -0
  314. package/packages/theme-summit/site/themes.js +442 -0
  315. package/packages/{theme-shinshu-site → theme-summit}/src/index.js +23 -35
  316. package/packages/theme-summit/src/node.js +69 -0
  317. package/packages/theme-summit/test/theme.test.mjs +47 -0
  318. package/packages/theme-violet/README.md +11 -0
  319. package/packages/{theme-companions-site → theme-violet}/package.json +14 -11
  320. package/packages/theme-violet/prebuild.json +23 -0
  321. package/packages/theme-violet/site/assets/generated/favicon.svg +7 -0
  322. package/packages/theme-violet/site/assets/generated/media-07b46d6457.webp +0 -0
  323. package/packages/theme-violet/site/assets/generated/media-09d38ddffc.webp +0 -0
  324. package/packages/theme-violet/site/assets/generated/media-254b0e2ad3.webp +0 -0
  325. package/packages/theme-violet/site/assets/generated/media-3a1b5c0a8d.webp +0 -0
  326. package/packages/theme-violet/site/assets/generated/media-3a78eb7d9d.webp +0 -0
  327. package/packages/theme-violet/site/assets/generated/media-49076977d8.webp +0 -0
  328. package/packages/theme-violet/site/assets/generated/media-6342d50dbd.webp +0 -0
  329. package/packages/theme-violet/site/assets/generated/media-646c65381e.webp +0 -0
  330. package/packages/theme-violet/site/assets/generated/media-7a5fb7c91a.webp +0 -0
  331. package/packages/theme-violet/site/assets/generated/media-9bbd133220.webp +0 -0
  332. package/packages/theme-violet/site/assets/generated/media-9e73307c2a.webp +0 -0
  333. package/packages/theme-violet/site/assets/generated/media-af382146a0.webp +0 -0
  334. package/packages/theme-violet/site/assets/generated/media-b2ae348b43.webp +0 -0
  335. package/packages/theme-violet/site/assets/generated/media-b8f43a3887.webp +0 -0
  336. package/packages/theme-violet/site/assets/generated/media-c96a3e1979.webp +0 -0
  337. package/packages/theme-violet/site/assets/generated/media-cd07daa54a.webp +0 -0
  338. package/packages/theme-violet/site/assets/generated/media-e03ab6b5fe.webp +0 -0
  339. package/packages/theme-violet/site/assets/generated/media-eae4917d25.webp +0 -0
  340. package/packages/theme-violet/site/assets/generated/media-f227ec5690.webp +0 -0
  341. package/packages/theme-violet/site/assets/generated/media-fb57ffd474.webp +0 -0
  342. package/packages/theme-violet/site/assets/generated/media-manifest.json +245 -0
  343. package/packages/theme-violet/site/assets/generated/social-card.webp +0 -0
  344. package/packages/theme-violet/site/assets/generated/theme-mark-192.png +0 -0
  345. package/packages/theme-violet/site/assets/generated/theme-mark-512.png +0 -0
  346. package/packages/theme-violet/site/assets/generated/theme-mark.svg +7 -0
  347. package/packages/theme-violet/site/global/cpas-contact.css +405 -0
  348. package/packages/theme-violet/site/global/cpas-donate-v2.css +931 -0
  349. package/packages/theme-violet/site/global/cpas-drawer-override.css +1 -0
  350. package/packages/theme-violet/site/global/cpas-footer.html +38 -0
  351. package/packages/theme-violet/site/global/cpas-header.html +30 -0
  352. package/packages/theme-violet/site/global/cpas-hero-watercolor.css +275 -0
  353. package/packages/theme-violet/site/global/cpas-modals.js +802 -0
  354. package/packages/theme-violet/site/global/cpas-public-surface.css +982 -0
  355. package/packages/theme-violet/site/global/cpas-shell.css +3980 -0
  356. package/packages/theme-violet/site/global/cpas-shell.js +107 -0
  357. package/packages/theme-violet/site/global/cpas-shelter-hub.css +326 -0
  358. package/packages/theme-violet/site/index.html +141 -0
  359. package/packages/theme-violet/site/pages/about/campaigns.html +28 -0
  360. package/packages/theme-violet/site/pages/about/cta.html +25 -0
  361. package/packages/theme-violet/site/pages/about/hero.html +46 -0
  362. package/packages/theme-violet/site/pages/about/paths.html +24 -0
  363. package/packages/theme-violet/site/pages/about/why_we_exist.html +28 -0
  364. package/packages/theme-violet/site/pages/home/campaigns.html +67 -0
  365. package/packages/theme-violet/site/pages/home/hero.html +42 -0
  366. package/packages/theme-violet/site/pages/home/how-it-helps.html +32 -0
  367. package/packages/theme-violet/site/pages/home/impact-stats.html +31 -0
  368. package/packages/theme-violet/site/pages/home/mission.html +36 -0
  369. package/packages/theme-violet/site/pages/home/newsletter.html +29 -0
  370. package/packages/theme-violet/site/pages/home/transport-win.html +22 -0
  371. package/packages/theme-violet/site/pages/index.html +141 -0
  372. package/packages/theme-violet/src/index.js +76 -0
  373. package/packages/theme-violet/src/node.js +69 -0
  374. package/packages/theme-violet/test/theme.test.mjs +47 -0
  375. package/packages/work-graph/package.json +1 -1
  376. package/protocol/features/README.md +1 -1
  377. package/protocol/features/catalog.json +12 -12
  378. package/protocol/features/examples/provider-resend.feature.json +2 -2
  379. package/protocol/presets/catalog.json +1 -1
  380. package/protocol/theme-refinery/prebuild-registry.json +45 -0
  381. package/protocol/theme-refinery/product-metadata.schema.json +63 -26
  382. package/protocol/theme-refinery/receipts/prebuild-remaster-20261004.json +21 -0
  383. package/src/plugins/completeful.js +2 -2
  384. package/packages/theme-church-site/README.md +0 -10
  385. package/packages/theme-church-site/src/harvest.json +0 -16
  386. package/packages/theme-church-site/test/theme.test.mjs +0 -21
  387. package/packages/theme-companions-site/README.md +0 -10
  388. package/packages/theme-companions-site/src/harvest.json +0 -14
  389. package/packages/theme-companions-site/src/index.js +0 -87
  390. package/packages/theme-companions-site/test/theme.test.mjs +0 -21
  391. package/packages/theme-floors-site/README.md +0 -10
  392. package/packages/theme-floors-site/src/harvest.json +0 -16
  393. package/packages/theme-floors-site/test/theme.test.mjs +0 -21
  394. package/packages/theme-fuelnfree-site/README.md +0 -10
  395. package/packages/theme-fuelnfree-site/src/harvest.json +0 -15
  396. package/packages/theme-fuelnfree-site/test/theme.test.mjs +0 -21
  397. package/packages/theme-handyman-site/README.md +0 -10
  398. package/packages/theme-handyman-site/package.json +0 -41
  399. package/packages/theme-handyman-site/src/harvest.json +0 -12
  400. package/packages/theme-handyman-site/src/index.js +0 -88
  401. package/packages/theme-handyman-site/test/theme.test.mjs +0 -21
  402. package/packages/theme-insurance-site/README.md +0 -10
  403. package/packages/theme-insurance-site/src/harvest.json +0 -12
  404. package/packages/theme-insurance-site/src/index.js +0 -88
  405. package/packages/theme-insurance-site/test/theme.test.mjs +0 -21
  406. package/packages/theme-shinshu-site/README.md +0 -10
  407. package/packages/theme-shinshu-site/src/harvest.json +0 -14
  408. package/packages/theme-shinshu-site/test/theme.test.mjs +0 -21
  409. package/protocol/theme-refinery/lineage-registry.json +0 -105
  410. package/protocol/theme-refinery/receipts/products-registry-batch-20260924.json +0 -318
  411. package/protocol/theme-refinery/receipts/theme-harvest-20260924.json +0 -472
@@ -0,0 +1,216 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8"/>
6
+ <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
7
+ <title>Our Work — Grove</title>
8
+ <meta content="A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests." name="description"/>
9
+ <link href="https://fonts.googleapis.com" rel="preconnect"/>
10
+ <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
11
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&amp;family=DM+Sans:wght@400;500;600;700&amp;display=swap" rel="stylesheet"/>
12
+ <style>
13
+ * { margin: 0; padding: 0; box-sizing: border-box; }
14
+ :root {
15
+ --primary-green: #3a5a4d;
16
+ --primary-green-light: #4a6b5d;
17
+ --cream: #f5f3ef;
18
+ --warm-gray: #4a4a4a;
19
+ --white: #ffffff;
20
+ --dark: #1a1a1a;
21
+ }
22
+ body {
23
+ font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
24
+ color: var(--warm-gray);
25
+ line-height: 1.6;
26
+ background: linear-gradient(to bottom, var(--white) 0%, #fcfcfc 30%, #f6f8f6 70%, var(--cream) 100%);
27
+ }
28
+ h1, h2 { font-family: 'Space Grotesk', sans-serif; color: var(--dark); font-weight: 700; }
29
+
30
+ .navbar {
31
+ position: fixed;
32
+ top: 0;
33
+ left: 0;
34
+ width: 100%;
35
+ background: rgba(255, 255, 255, 0.85);
36
+ backdrop-filter: blur(20px);
37
+ border-bottom: 1px solid rgba(58, 90, 77, 0.1);
38
+ z-index: 1000;
39
+ }
40
+ .nav-container {
41
+ max-width: 1400px;
42
+ margin: 0 auto;
43
+ padding: 1rem 2rem;
44
+ display: flex;
45
+ justify-content: space-between;
46
+ align-items: center;
47
+ }
48
+ .logo { display: flex; align-items: center; text-decoration: none; }
49
+ .logo img { height: 100px; width: auto; object-fit: contain; }
50
+ .nav-menu { display: flex; align-items: center; gap: 2rem; list-style: none; }
51
+ .nav-link {
52
+ color: var(--warm-gray);
53
+ text-decoration: none;
54
+ font-weight: 600;
55
+ font-size: 0.95rem;
56
+ }
57
+ .nav-link:hover, .nav-link.active { color: var(--primary-green); }
58
+ .nav-cta {
59
+ background: var(--primary-green);
60
+ color: var(--white);
61
+ padding: 0.7rem 1.5rem;
62
+ border-radius: 8px;
63
+ font-weight: 700;
64
+ text-decoration: none;
65
+ font-size: 0.9rem;
66
+ }
67
+ .nav-cta:hover { background: var(--primary-green-light); }
68
+ .mobile-toggle { display: none; flex-direction: column; gap: 0.35rem; background: none; border: none; cursor: pointer; padding: 0.5rem; }
69
+ .hamburger { width: 24px; height: 2.5px; background: var(--primary-green); border-radius: 2px; }
70
+
71
+ .page-header {
72
+ margin-top: 80px;
73
+ padding: 4rem 2rem 2rem;
74
+ text-align: center;
75
+ }
76
+ .page-header h1 { font-size: clamp(2rem, 5vw, 3.5rem); margin-bottom: 0.75rem; color: var(--primary-green); }
77
+ .page-header p { font-size: 1.1rem; color: var(--warm-gray); max-width: 600px; margin: 0 auto; }
78
+
79
+ .gallery-section {
80
+ max-width: 1400px;
81
+ margin: 0 auto;
82
+ padding: 0 2rem 4rem;
83
+ }
84
+ .gallery-grid {
85
+ display: grid;
86
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
87
+ gap: 1.5rem;
88
+ }
89
+ .gallery-item {
90
+ border-radius: 12px;
91
+ overflow: hidden;
92
+ aspect-ratio: 4/3;
93
+ background: #e8e8e8;
94
+ box-shadow: 0 4px 20px rgba(58, 90, 77, 0.08);
95
+ }
96
+ .gallery-item img {
97
+ width: 100%;
98
+ height: 100%;
99
+ object-fit: cover;
100
+ display: block;
101
+ }
102
+ .gallery-empty, .gallery-loading {
103
+ grid-column: 1 / -1;
104
+ text-align: center;
105
+ padding: 3rem 2rem;
106
+ color: var(--warm-gray);
107
+ font-size: 1.05rem;
108
+ }
109
+ .gallery-empty code, .gallery-loading code { background: rgba(58, 90, 77, 0.1); padding: 0.2em 0.5em; border-radius: 4px; }
110
+
111
+ @media (max-width: 768px) {
112
+ .logo img { height: 80px; }
113
+ .nav-menu {
114
+ position: fixed;
115
+ top: 0;
116
+ left: -80%;
117
+ width: 80%;
118
+ height: 100vh;
119
+ background: rgba(58, 90, 77, 0.98);
120
+ flex-direction: column;
121
+ align-items: flex-start;
122
+ padding: 5rem 2rem 2rem;
123
+ gap: 1rem;
124
+ transition: left 0.3s ease;
125
+ z-index: 999;
126
+ }
127
+ .nav-menu.active { left: 0; }
128
+ .nav-link { color: rgba(255,255,255,0.9); font-size: 1.1rem; }
129
+ .nav-link.active { color: var(--white); }
130
+ .nav-cta { background: var(--white); color: var(--primary-green); }
131
+ .mobile-toggle { display: flex; }
132
+ }
133
+ </style>
134
+ <link href="https://example.com/pages/gallery.html" rel="canonical"/><meta content="index,follow,max-image-preview:large" name="robots"/><meta content="#182018" name="theme-color"/><meta content="website" property="og:type"/><meta content="Our Work — Grove" property="og:title"/><meta content="A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests." property="og:description"/><meta content="https://example.com/pages/gallery.html" property="og:url"/><meta content="https://example.com/assets/generated/social-card.webp" property="og:image"/><meta content="summary_large_image" name="twitter:card"/><meta content="Our Work — Grove" name="twitter:title"/><meta content="A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests." name="twitter:description"/><meta content="https://example.com/assets/generated/social-card.webp" name="twitter:image"/><script data-agentsam-seo="theme-remaster" type="application/ld+json">{"@context": "https://schema.org", "@type": "WebSite", "name": "Grove Surface Co.", "description": "A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests.", "url": "https://example.com/pages/gallery.html", "isPartOf": {"@type": "CreativeWork", "name": "Grove AgentSam Prebuild"}}</script></head>
135
+ <body>
136
+ <nav class="navbar" id="navbar">
137
+ <div class="nav-container">
138
+ <a class="logo" href="/">
139
+ <img alt="Grove Surface and More" onerror="this.onerror=null;this.src='/assets/generated/media-31107c21f2.webp';" src="/assets/generated/theme-mark.svg"/>
140
+ </a>
141
+ <button aria-label="Menu" class="mobile-toggle" id="mobile-toggle">
142
+ <span class="hamburger"></span>
143
+ <span class="hamburger"></span>
144
+ <span class="hamburger"></span>
145
+ </button>
146
+ <ul class="nav-menu" id="nav-menu">
147
+ <li><a class="nav-link" href="/">Home</a></li>
148
+ <li><a class="nav-link" href="./services">Services</a></li>
149
+ <li><a class="nav-link" href="./process">Process</a></li>
150
+ <li><a class="nav-link active" href="./gallery">Gallery</a></li>
151
+ <li><a class="nav-link" href="./contact">Contact</a></li>
152
+ <li><a class="nav-cta" href="./contact">Get Estimate</a></li>
153
+ </ul>
154
+ </div>
155
+ </nav>
156
+ <section class="page-header">
157
+ <h1>Our Work</h1>
158
+ <p>Photos from our projects. Images are loaded from your R2 bucket (<code>cms/</code>). Upload via the dashboard or R2 to add more.</p>
159
+ </section>
160
+ <section class="gallery-section">
161
+ <div class="gallery-grid" id="r2-gallery">
162
+ <p class="gallery-loading" id="gallery-loading">Loading gallery…</p>
163
+ </div>
164
+ </section>
165
+ <link href="../shared/footer.css" rel="stylesheet"/>
166
+ <script>
167
+ fetch('/shared/footer.html').then(function (r) { return r.text(); }).then(function (html) {
168
+ document.body.insertAdjacentHTML('beforeend', html);
169
+ });
170
+ </script>
171
+ <script>
172
+ (function () {
173
+ var container = document.getElementById('r2-gallery');
174
+ var loading = document.getElementById('gallery-loading');
175
+ if (!container) return;
176
+ fetch('/api/cms/media')
177
+ .then(function (r) { return r.json(); })
178
+ .then(function (data) {
179
+ if (loading) loading.remove();
180
+ if (!data.files || data.files.length === 0) {
181
+ container.innerHTML = '<p class="gallery-empty">No images in your R2 gallery yet. Upload images to the <code>cms/</code> folder in your R2 bucket (or via your CMS) to see them here.</p>';
182
+ return;
183
+ }
184
+ container.innerHTML = '';
185
+ data.files.forEach(function (file) {
186
+ var div = document.createElement('div');
187
+ div.className = 'gallery-item';
188
+ var img = document.createElement('img');
189
+ img.src = file.url;
190
+ img.alt = file.title || file.name || 'Project photo';
191
+ img.loading = 'lazy';
192
+ img.onerror = function () { this.parentElement.style.background = '#e0e0e0'; };
193
+ div.appendChild(img);
194
+ container.appendChild(div);
195
+ });
196
+ })
197
+ .catch(function () {
198
+ if (loading) loading.textContent = 'Could not load gallery. Upload images to R2 (cms/) to showcase your work.';
199
+ });
200
+ })();
201
+
202
+ var mobileToggle = document.getElementById('mobile-toggle');
203
+ var navMenu = document.getElementById('nav-menu');
204
+ if (mobileToggle && navMenu) {
205
+ mobileToggle.addEventListener('click', function () {
206
+ navMenu.classList.toggle('active');
207
+ });
208
+ document.querySelectorAll('.nav-link').forEach(function (link) {
209
+ link.addEventListener('click', function () {
210
+ navMenu.classList.remove('active');
211
+ });
212
+ });
213
+ }
214
+ </script>
215
+ </body>
216
+ </html>
@@ -0,0 +1,180 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8"/>
6
+ <meta content="width=device-width, initial-scale=1.0" name="viewport"/>
7
+ <title>Privacy Policy — Grove</title>
8
+ <meta content="A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests." name="description"/>
9
+ <!-- Fonts -->
10
+ <link href="https://fonts.googleapis.com" rel="preconnect"/>
11
+ <link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
12
+ <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&amp;family=DM+Sans:wght@400;500;600;700&amp;display=swap" rel="stylesheet"/>
13
+ <style>
14
+ * {
15
+ margin: 0;
16
+ padding: 0;
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ :root {
21
+ --primary-green: #3a5a4d;
22
+ --primary-green-dark: #2d4639;
23
+ --sand-medium: #c4b59a;
24
+ --gold: #c9a961;
25
+ --white: #ffffff;
26
+ --warm-gray: #4a4a4a;
27
+ --cream: #f5f3ef;
28
+ }
29
+
30
+ body {
31
+ font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
32
+ background: var(--cream);
33
+ color: var(--warm-gray);
34
+ line-height: 1.6;
35
+ }
36
+
37
+ .container {
38
+ max-width: 900px;
39
+ margin: 0 auto;
40
+ padding: 2rem;
41
+ background: var(--white);
42
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
43
+ margin-top: 2rem;
44
+ margin-bottom: 2rem;
45
+ border-radius: 12px;
46
+ }
47
+
48
+ h1 {
49
+ font-family: 'Space Grotesk', sans-serif;
50
+ color: var(--primary-green-dark);
51
+ font-size: 2.5rem;
52
+ margin-bottom: 1rem;
53
+ }
54
+
55
+ h2 {
56
+ font-family: 'Space Grotesk', sans-serif;
57
+ color: var(--primary-green-dark);
58
+ font-size: 1.5rem;
59
+ margin-top: 2rem;
60
+ margin-bottom: 1rem;
61
+ }
62
+
63
+ p {
64
+ margin-bottom: 1rem;
65
+ }
66
+
67
+ ul {
68
+ margin-left: 2rem;
69
+ margin-bottom: 1rem;
70
+ }
71
+
72
+ li {
73
+ margin-bottom: 0.5rem;
74
+ }
75
+
76
+ .last-updated {
77
+ color: var(--warm-gray);
78
+ font-style: italic;
79
+ margin-bottom: 2rem;
80
+ }
81
+
82
+ a {
83
+ color: var(--primary-green);
84
+ text-decoration: none;
85
+ }
86
+
87
+ a:hover {
88
+ text-decoration: underline;
89
+ }
90
+ </style>
91
+ <link href="https://example.com/pages/privacy.html" rel="canonical"/><meta content="index,follow,max-image-preview:large" name="robots"/><meta content="#182018" name="theme-color"/><meta content="website" property="og:type"/><meta content="Privacy Policy — Grove" property="og:title"/><meta content="A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests." property="og:description"/><meta content="https://example.com/pages/privacy.html" property="og:url"/><meta content="https://example.com/assets/generated/social-card.webp" property="og:image"/><meta content="summary_large_image" name="twitter:card"/><meta content="Privacy Policy — Grove" name="twitter:title"/><meta content="A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests." name="twitter:description"/><meta content="https://example.com/assets/generated/social-card.webp" name="twitter:image"/><script data-agentsam-seo="theme-remaster" type="application/ld+json">{"@context": "https://schema.org", "@type": "WebSite", "name": "Grove Surface Co.", "description": "A tactile home-services website prebuild for flooring and interiors, with project galleries, material details, process storytelling, reviews, and estimate requests.", "url": "https://example.com/pages/privacy.html", "isPartOf": {"@type": "CreativeWork", "name": "Grove AgentSam Prebuild"}}</script></head>
92
+ <body>
93
+ <div class="container">
94
+ <h1>Privacy Policy</h1>
95
+ <p class="last-updated">Last Updated: January 28, 2025</p>
96
+ <h2>1. Information We Collect</h2>
97
+ <p>We collect information that you provide directly to us, including:</p>
98
+ <ul>
99
+ <li>Name, email address, and phone number when you contact us or request a quote</li>
100
+ <li>Project details and preferences when you submit a project inquiry</li>
101
+ <li>Account information if you create a dashboard account</li>
102
+ <li>Google account information (with your permission) when connecting Google services (YouTube, Drive,
103
+ Gemini AI)</li>
104
+ </ul>
105
+ <h2>2. How We Use Your Information</h2>
106
+ <p>We use the information we collect to:</p>
107
+ <ul>
108
+ <li>Respond to your inquiries and provide customer service</li>
109
+ <li>Process and manage your project requests</li>
110
+ <li>Send you project updates and communications (with your consent)</li>
111
+ <li>Provide access to our dashboard and project management tools</li>
112
+ <li>Enable Google service integrations (YouTube, Drive, Gemini AI) when you connect your account</li>
113
+ <li>Improve our services and website experience</li>
114
+ </ul>
115
+ <h2>3. Google OAuth Data</h2>
116
+ <p>When you connect your Google account to use YouTube, Google Drive, or Gemini AI features:</p>
117
+ <ul>
118
+ <li>We request only the minimum permissions necessary for each service</li>
119
+ <li>Your Google account data is stored securely and used only for the features you enable</li>
120
+ <li>You can disconnect your Google account at any time from your dashboard settings</li>
121
+ <li>We do not share your Google account data with third parties</li>
122
+ </ul>
123
+ <h2>4. Data Storage and Security</h2>
124
+ <p>We implement appropriate technical and organizational measures to protect your personal information:</p>
125
+ <ul>
126
+ <li>Data is stored securely using Cloudflare's infrastructure</li>
127
+ <li>Passwords are hashed and never stored in plain text</li>
128
+ <li>OAuth tokens are encrypted and stored securely</li>
129
+ <li>We use HTTPS encryption for all data transmission</li>
130
+ </ul>
131
+ <h2>5. Your Rights</h2>
132
+ <p>You have the right to:</p>
133
+ <ul>
134
+ <li>Access your personal information</li>
135
+ <li>Correct inaccurate information</li>
136
+ <li>Request deletion of your account and data</li>
137
+ <li>Disconnect Google service integrations</li>
138
+ <li>Opt-out of marketing communications</li>
139
+ </ul>
140
+ <h2>6. Cookies and Tracking</h2>
141
+ <p>We use cookies and similar technologies to:</p>
142
+ <ul>
143
+ <li>Maintain your login session</li>
144
+ <li>Remember your preferences</li>
145
+ <li>Analyze website usage</li>
146
+ </ul>
147
+ <p>You can control cookies through your browser settings.</p>
148
+ <h2>7. Third-Party Services</h2>
149
+ <p>We use the following third-party services:</p>
150
+ <ul>
151
+ <li><strong>Cloudflare</strong> - Hosting and infrastructure</li>
152
+ <li><strong>Google APIs</strong> - YouTube, Drive, Gemini AI (when you connect your account)</li>
153
+ <li><strong>Resend</strong> - Email delivery</li>
154
+ </ul>
155
+ <p>These services have their own privacy policies governing data handling.</p>
156
+ <h2>8. Children's Privacy</h2>
157
+ <p>Our services are not directed to individuals under 18. We do not knowingly collect personal information from
158
+ children.</p>
159
+ <h2>9. Changes to This Policy</h2>
160
+ <p>We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new
161
+ policy on this page and updating the "Last Updated" date.</p>
162
+ <h2>10. Contact Us</h2>
163
+ <p>If you have questions about this Privacy Policy, please contact us:</p>
164
+ <ul>
165
+ <li>Email: <a href="mailto:hello@grove.example">hello@grove.example</a></li>
166
+ <li>Phone: <a href="tel:202-555-0100">202-555-0100</a></li>
167
+ <li>Address: River Parish, LA</li>
168
+ </ul>
169
+ </div>
170
+ <!-- Include unified footer -->
171
+ <link href="../shared/footer.css" rel="stylesheet"/>
172
+ <script>
173
+ fetch('/shared/footer.html')
174
+ .then(response => response.text())
175
+ .then(html => {
176
+ document.body.insertAdjacentHTML('beforeend', html);
177
+ });
178
+ </script>
179
+ </body>
180
+ </html>