@voltro/cli 0.13.0 → 0.14.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 (165) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/dist/{apiBuild-B6_ehbem.js → apiBuild-370ITNRk.js} +2 -2
  3. package/dist/apiBuild-DatWP5hh.js +2 -0
  4. package/dist/bin.js +3 -3
  5. package/dist/{commands-DYOuGlEC.js → commands-D-teL_TM.js} +3709 -2789
  6. package/dist/dbCommand-B3CeMU3u.js +2 -0
  7. package/dist/{dbCommand-DIOJQwsq.js → dbCommand-Dmi-vHfA.js} +2 -1
  8. package/dist/{dev-Fb9BmavX.js → dev-CKyW_LAv.js} +1620 -1509
  9. package/dist/{dev-xdijqojc.js → dev-CPKbckaN.js} +1 -1
  10. package/dist/fileConventions-COg0ZytD.js +9 -0
  11. package/dist/{frameworkTableAssembly-CYlrafoK.js → frameworkTableAssembly-DCLhpHsF.js} +164 -163
  12. package/dist/frameworkTableAssembly-DYzb2elg.js +2 -0
  13. package/dist/index.js +1 -1
  14. package/dist/{inspectMetrics-DOiiII34.js → inspectMetrics-CyVMeofr.js} +955 -945
  15. package/dist/{serveCommand-CqYxzBZR.js → serveCommand-CU3Sw4ZM.js} +410 -396
  16. package/dist/serveEntry.js +2 -2
  17. package/dist/{start-CjG_0xhR.js → start-D8ATvTzo.js} +246 -246
  18. package/dist/startEntry.js +2 -2
  19. package/package.json +17 -17
  20. package/templates/AGENTS.core.md +77 -3
  21. package/templates/AGENTS.md +77 -3
  22. package/templates/agent-docs/_manifest.json +2 -2
  23. package/templates/agent-docs/authentication.md +5 -2
  24. package/templates/agent-docs/cli.md +36 -2
  25. package/templates/agent-docs/data.md +193 -1
  26. package/templates/agent-docs/database/hosting.md +2 -2
  27. package/templates/agent-docs/database/migrations.md +56 -3
  28. package/templates/agent-docs/database/overview.md +11 -0
  29. package/templates/agent-docs/database/seedsdialects.md +53 -1
  30. package/templates/agent-docs/internationalization.md +3 -3
  31. package/templates/agent-docs/introduction.md +133 -2
  32. package/templates/agent-docs/plugins.md +2 -1
  33. package/templates/agent-docs/reference.md +4 -4
  34. package/templates/agent-docs/routing.md +48 -43
  35. package/templates/agent-docs/schema-driven-ui.md +12 -2
  36. package/templates/agent-docs/templates/apibackends.md +1 -8
  37. package/templates/agent-docs/templates/appshells.md +24 -24
  38. package/templates/agent-docs/testing.md +16 -1
  39. package/templates/agent-docs/whats-new.md +16 -0
  40. package/templates/apps/api-ai/database/schema.ts +0 -2
  41. package/templates/apps/api-ai/package.json +7 -7
  42. package/templates/apps/api-auth/package.json +8 -8
  43. package/templates/apps/api-backend/database/schema.ts +0 -3
  44. package/templates/apps/api-backend/package.json +7 -7
  45. package/templates/apps/api-backend-deactivation/database/schema.ts +0 -1
  46. package/templates/apps/api-backend-deactivation/package.json +7 -7
  47. package/templates/apps/api-backend-mail/database/schema.ts +0 -3
  48. package/templates/apps/api-backend-mail/package.json +8 -8
  49. package/templates/apps/api-backend-mariadb/database/schema.ts +0 -3
  50. package/templates/apps/api-backend-mariadb/package.json +9 -9
  51. package/templates/apps/api-backend-storage/database/schema.ts +0 -3
  52. package/templates/apps/api-backend-storage/package.json +8 -8
  53. package/templates/apps/api-data-advanced/database/authors.entity.ts +0 -2
  54. package/templates/apps/api-data-advanced/database/books.entity.ts +0 -1
  55. package/templates/apps/api-data-advanced/package.json +8 -8
  56. package/templates/apps/api-durable/database/schema.ts +0 -3
  57. package/templates/apps/api-durable/package.json +8 -8
  58. package/templates/apps/api-feature-flags/database/schema.ts +0 -1
  59. package/templates/apps/api-feature-flags/package.json +9 -9
  60. package/templates/apps/api-governance/database/schema.ts +0 -1
  61. package/templates/apps/api-governance/package.json +8 -8
  62. package/templates/apps/api-kv/database/schema.ts +0 -3
  63. package/templates/apps/api-kv/package.json +8 -8
  64. package/templates/apps/api-moderation/database/schema.ts +0 -2
  65. package/templates/apps/api-moderation/package.json +8 -8
  66. package/templates/apps/api-observability/database/schema.ts +0 -1
  67. package/templates/apps/api-observability/package.json +8 -8
  68. package/templates/apps/api-ratelimit/database/schema.ts +0 -1
  69. package/templates/apps/api-ratelimit/package.json +8 -8
  70. package/templates/apps/api-rbac/database/schema.ts +0 -2
  71. package/templates/apps/api-rbac/package.json +8 -8
  72. package/templates/apps/api-rest/database/schema.ts +0 -3
  73. package/templates/apps/api-rest/package.json +7 -7
  74. package/templates/apps/api-saas/database/schema.ts +0 -1
  75. package/templates/apps/api-saas/package.json +11 -11
  76. package/templates/apps/api-search/database/schema.ts +0 -1
  77. package/templates/apps/api-search/package.json +8 -8
  78. package/templates/apps/api-versioning/database/schema.ts +0 -1
  79. package/templates/apps/api-versioning/package.json +8 -8
  80. package/templates/apps/api-webhooks/database/schema.ts +0 -1
  81. package/templates/apps/api-webhooks/package.json +9 -9
  82. package/templates/apps/changelog/package.json +6 -6
  83. package/templates/apps/changelog/src/pages/[locale]/{[slug].tsx → [slug].page.tsx} +2 -2
  84. package/templates/apps/changelog/src/pages/[locale]/{index.tsx → index.page.tsx} +2 -2
  85. package/templates/apps/changelog/src/pages/[locale]/mirrors.test.tsx +2 -2
  86. package/templates/apps/changelog/src/pages/{[slug].test.tsx → [slug].page.test.tsx} +1 -1
  87. package/templates/apps/changelog/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  88. package/templates/apps/edge-functions/package.json +2 -2
  89. package/templates/apps/frontend-admin/package.json +8 -8
  90. package/templates/apps/frontend-admin/src/pages/(marketing)/{index.test.tsx → index.page.test.tsx} +1 -1
  91. package/templates/apps/frontend-admin/src/pages/(marketing)/{login.test.tsx → login.page.test.tsx} +1 -1
  92. package/templates/apps/frontend-admin/src/pages/admin/entity.test.tsx +1 -1
  93. package/templates/apps/frontend-admin/src/pages/admin/{index.test.tsx → index.page.test.tsx} +1 -1
  94. package/templates/apps/frontend-app/package.json +8 -8
  95. package/templates/apps/frontend-app/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  96. package/templates/apps/frontend-app/src/pages/{schema-ui.test.tsx → schema-ui.page.test.tsx} +1 -1
  97. package/templates/apps/frontend-blank/package.json +7 -7
  98. package/templates/apps/frontend-blank/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  99. package/templates/apps/frontend-contact/package.json +7 -7
  100. package/templates/apps/frontend-contact/src/pages/[locale]/{index.tsx → index.page.tsx} +2 -2
  101. package/templates/apps/frontend-contact/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  102. package/templates/apps/frontend-dashboard/package.json +7 -7
  103. package/templates/apps/frontend-dashboard/src/pages/(marketing)/{index.test.tsx → index.page.test.tsx} +1 -1
  104. package/templates/apps/frontend-dashboard/src/pages/(marketing)/{login.test.tsx → login.page.test.tsx} +1 -1
  105. package/templates/apps/frontend-dashboard/src/pages/dashboard/{index.test.tsx → index.page.test.tsx} +1 -1
  106. package/templates/apps/frontend-dashboard/src/pages/dashboard/{settings.test.tsx → settings.page.test.tsx} +1 -1
  107. package/templates/apps/frontend-docs/package.json +7 -7
  108. package/templates/apps/frontend-docs/src/pages/[locale]/docs/{[...slug].tsx → [...slug].page.tsx} +3 -3
  109. package/templates/apps/frontend-docs/src/pages/[locale]/{index.tsx → index.page.tsx} +2 -2
  110. package/templates/apps/frontend-docs/src/pages/[locale]/mirrors.test.tsx +2 -2
  111. package/templates/apps/frontend-docs/src/pages/docs/{[...slug].test.tsx → [...slug].page.test.tsx} +1 -1
  112. package/templates/apps/frontend-docs/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  113. package/templates/apps/frontend-i18n/package.json +6 -6
  114. package/templates/apps/frontend-i18n/src/pages/[locale]/{about.tsx → about.page.tsx} +2 -2
  115. package/templates/apps/frontend-i18n/src/pages/[locale]/{index.tsx → index.page.tsx} +2 -2
  116. package/templates/apps/frontend-i18n/src/pages/[locale]/mirrors.test.tsx +2 -2
  117. package/templates/apps/frontend-i18n/src/pages/{about.test.tsx → about.page.test.tsx} +1 -1
  118. package/templates/apps/frontend-i18n/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  119. package/templates/apps/frontend-landing/package.json +7 -7
  120. package/templates/apps/frontend-landing/src/pages/[locale]/{index.tsx → index.page.tsx} +2 -2
  121. package/templates/apps/frontend-landing/src/pages/[locale]/mirrors.test.tsx +1 -1
  122. package/templates/apps/frontend-landing/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  123. package/templates/apps/frontend-spa/package.json +7 -7
  124. package/templates/apps/frontend-spa/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  125. package/templates/apps/frontend-ssr/package.json +7 -7
  126. package/templates/apps/frontend-ssr/src/pages/{feed-swr.test.tsx → feed-swr.page.test.tsx} +1 -1
  127. package/templates/apps/frontend-ssr/src/pages/{feed.test.tsx → feed.page.test.tsx} +1 -1
  128. package/templates/apps/frontend-ssr/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  129. package/templates/apps/frontend-ssr-api/package.json +8 -8
  130. package/templates/apps/frontend-ssr-api/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  131. package/templates/apps/frontend-static-blog/package.json +6 -6
  132. package/templates/apps/frontend-static-blog/src/pages/[locale]/blog/{[slug].tsx → [slug].page.tsx} +2 -2
  133. package/templates/apps/frontend-static-blog/src/pages/[locale]/{index.tsx → index.page.tsx} +2 -2
  134. package/templates/apps/frontend-static-blog/src/pages/[locale]/mirrors.test.tsx +2 -2
  135. package/templates/apps/frontend-static-blog/src/pages/blog/{[slug].test.tsx → [slug].page.test.tsx} +1 -1
  136. package/templates/apps/frontend-static-blog/src/pages/{index.test.tsx → index.page.test.tsx} +1 -1
  137. package/dist/apiBuild-Bzpb383i.js +0 -2
  138. package/dist/dbCommand-ADD4mrTI.js +0 -2
  139. package/dist/frameworkTableAssembly-XvKO7wQt.js +0 -2
  140. /package/templates/apps/changelog/src/pages/{[slug].tsx → [slug].page.tsx} +0 -0
  141. /package/templates/apps/changelog/src/pages/{index.tsx → index.page.tsx} +0 -0
  142. /package/templates/apps/frontend-admin/src/pages/(marketing)/{index.tsx → index.page.tsx} +0 -0
  143. /package/templates/apps/frontend-admin/src/pages/(marketing)/{login.tsx → login.page.tsx} +0 -0
  144. /package/templates/apps/frontend-admin/src/pages/admin/{[entity].tsx → [entity].page.tsx} +0 -0
  145. /package/templates/apps/frontend-admin/src/pages/admin/{index.tsx → index.page.tsx} +0 -0
  146. /package/templates/apps/frontend-app/src/pages/{index.tsx → index.page.tsx} +0 -0
  147. /package/templates/apps/frontend-app/src/pages/{schema-ui.tsx → schema-ui.page.tsx} +0 -0
  148. /package/templates/apps/frontend-blank/src/pages/{index.tsx → index.page.tsx} +0 -0
  149. /package/templates/apps/frontend-contact/src/pages/{index.tsx → index.page.tsx} +0 -0
  150. /package/templates/apps/frontend-dashboard/src/pages/(marketing)/{index.tsx → index.page.tsx} +0 -0
  151. /package/templates/apps/frontend-dashboard/src/pages/(marketing)/{login.tsx → login.page.tsx} +0 -0
  152. /package/templates/apps/frontend-dashboard/src/pages/dashboard/{index.tsx → index.page.tsx} +0 -0
  153. /package/templates/apps/frontend-dashboard/src/pages/dashboard/{settings.tsx → settings.page.tsx} +0 -0
  154. /package/templates/apps/frontend-docs/src/pages/docs/{[...slug].tsx → [...slug].page.tsx} +0 -0
  155. /package/templates/apps/frontend-docs/src/pages/{index.tsx → index.page.tsx} +0 -0
  156. /package/templates/apps/frontend-i18n/src/pages/{about.tsx → about.page.tsx} +0 -0
  157. /package/templates/apps/frontend-i18n/src/pages/{index.tsx → index.page.tsx} +0 -0
  158. /package/templates/apps/frontend-landing/src/pages/{index.tsx → index.page.tsx} +0 -0
  159. /package/templates/apps/frontend-spa/src/pages/{index.tsx → index.page.tsx} +0 -0
  160. /package/templates/apps/frontend-ssr/src/pages/{feed-swr.tsx → feed-swr.page.tsx} +0 -0
  161. /package/templates/apps/frontend-ssr/src/pages/{feed.tsx → feed.page.tsx} +0 -0
  162. /package/templates/apps/frontend-ssr/src/pages/{index.tsx → index.page.tsx} +0 -0
  163. /package/templates/apps/frontend-ssr-api/src/pages/{index.tsx → index.page.tsx} +0 -0
  164. /package/templates/apps/frontend-static-blog/src/pages/blog/{[slug].tsx → [slug].page.tsx} +0 -0
  165. /package/templates/apps/frontend-static-blog/src/pages/{index.tsx → index.page.tsx} +0 -0
@@ -11,16 +11,16 @@
11
11
  "dependencies": {
12
12
  "@effect/platform": "^0.96.1",
13
13
  "@effect/rpc": "^0.75.1",
14
- "@voltro/ai": "0.13.0",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/protocol": "0.13.0",
19
- "@voltro/runtime": "0.13.0",
14
+ "@voltro/ai": "0.14.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/protocol": "0.14.0",
19
+ "@voltro/runtime": "0.14.0",
20
20
  "effect": "^3.21.2"
21
21
  },
22
22
  "devDependencies": {
23
- "@voltro/testing": "0.13.0",
23
+ "@voltro/testing": "0.14.0",
24
24
  "typescript": "^5.7.0",
25
25
  "vitest": "^3.0.0"
26
26
  }
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-auth": "0.13.0",
19
- "@voltro/protocol": "0.13.0",
20
- "@voltro/runtime": "0.13.0",
21
- "@voltro/sql-postgres": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-auth": "0.14.0",
19
+ "@voltro/protocol": "0.14.0",
20
+ "@voltro/runtime": "0.14.0",
21
+ "@voltro/sql-postgres": "0.14.0",
22
22
  "effect": "^3.21.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/testing": "0.13.0",
25
+ "@voltro/testing": "0.14.0",
26
26
  "typescript": "^5.7.0",
27
27
  "vitest": "^3.0.0"
28
28
  }
@@ -48,9 +48,6 @@ export const notes = table('notes', {
48
48
  // tenant() pulls audit() transitively → adds tenantId + createdAt /
49
49
  // updatedAt / createdBy / updatedBy (auto-stamped by the runtime).
50
50
  .with(tenant())
51
- // Opt into the matcher engine: subscriptions against `notes` get a
52
- // fresh snapshot/delta whenever a mutation writes the table.
53
- .reactive()
54
51
 
55
52
  export type Note = InferRow<typeof notes>
56
53
 
@@ -12,16 +12,16 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-multitenancy": "0.13.0",
19
- "@voltro/protocol": "0.13.0",
20
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-multitenancy": "0.14.0",
19
+ "@voltro/protocol": "0.14.0",
20
+ "@voltro/runtime": "0.14.0",
21
21
  "effect": "^3.21.2"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/testing": "0.13.0",
24
+ "@voltro/testing": "0.14.0",
25
25
  "typescript": "^5.7.0",
26
26
  "vitest": "^3.0.0"
27
27
  }
@@ -34,7 +34,6 @@ export const users = table('users', {
34
34
  // defaultWhere — a deactivated user still shows up in queries, unlike
35
35
  // softDelete() which would hide it.
36
36
  .with(deactivation())
37
- .reactive()
38
37
 
39
38
  export type User = InferRow<typeof users>
40
39
 
@@ -12,16 +12,16 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-deactivation": "0.13.0",
19
- "@voltro/protocol": "0.13.0",
20
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-deactivation": "0.14.0",
19
+ "@voltro/protocol": "0.14.0",
20
+ "@voltro/runtime": "0.14.0",
21
21
  "effect": "^3.21.2"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/testing": "0.13.0",
24
+ "@voltro/testing": "0.14.0",
25
25
  "typescript": "^5.7.0",
26
26
  "vitest": "^3.0.0"
27
27
  }
@@ -48,9 +48,6 @@ export const notes = table('notes', {
48
48
  // tenant() pulls audit() transitively → adds tenantId + createdAt /
49
49
  // updatedAt / createdBy / updatedBy (auto-stamped by the runtime).
50
50
  .with(tenant())
51
- // Opt into the matcher engine: subscriptions against `notes` get a
52
- // fresh snapshot/delta whenever a mutation writes the table.
53
- .reactive()
54
51
 
55
52
  export type Note = InferRow<typeof notes>
56
53
 
@@ -12,18 +12,18 @@
12
12
  "dependencies": {
13
13
  "@react-email/components": "^1.0.12",
14
14
  "@react-email/render": "^1.4.0",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-mail": "0.13.0",
19
- "@voltro/plugin-multitenancy": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-mail": "0.14.0",
19
+ "@voltro/plugin-multitenancy": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
22
  "effect": "^3.21.2",
23
23
  "react": "^19.0.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/testing": "0.13.0",
26
+ "@voltro/testing": "0.14.0",
27
27
  "typescript": "^5.7.0",
28
28
  "vitest": "^3.0.0"
29
29
  }
@@ -48,9 +48,6 @@ export const notes = table('notes', {
48
48
  // tenant() pulls audit() transitively → adds tenantId + createdAt /
49
49
  // updatedAt / createdBy / updatedBy (auto-stamped by the runtime).
50
50
  .with(tenant())
51
- // Opt into the matcher engine: subscriptions against `notes` get a
52
- // fresh snapshot/delta whenever a mutation writes the table.
53
- .reactive()
54
51
 
55
52
  export type Note = InferRow<typeof notes>
56
53
 
@@ -12,18 +12,18 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-multitenancy": "0.13.0",
19
- "@voltro/plugin-storage": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
22
- "@voltro/sql-mysql": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-multitenancy": "0.14.0",
19
+ "@voltro/plugin-storage": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
+ "@voltro/sql-mysql": "0.14.0",
23
23
  "effect": "^3.21.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/testing": "0.13.0",
26
+ "@voltro/testing": "0.14.0",
27
27
  "typescript": "^5.7.0",
28
28
  "vitest": "^3.0.0"
29
29
  }
@@ -48,9 +48,6 @@ export const notes = table('notes', {
48
48
  // tenant() pulls audit() transitively → adds tenantId + createdAt /
49
49
  // updatedAt / createdBy / updatedBy (auto-stamped by the runtime).
50
50
  .with(tenant())
51
- // Opt into the matcher engine: subscriptions against `notes` get a
52
- // fresh snapshot/delta whenever a mutation writes the table.
53
- .reactive()
54
51
 
55
52
  export type Note = InferRow<typeof notes>
56
53
 
@@ -10,17 +10,17 @@
10
10
  "test": "voltro test"
11
11
  },
12
12
  "dependencies": {
13
- "@voltro/cli": "0.13.0",
14
- "@voltro/database": "0.13.0",
15
- "@voltro/env": "0.13.0",
16
- "@voltro/plugin-multitenancy": "0.13.0",
17
- "@voltro/plugin-storage": "0.13.0",
18
- "@voltro/protocol": "0.13.0",
19
- "@voltro/runtime": "0.13.0",
13
+ "@voltro/cli": "0.14.0",
14
+ "@voltro/database": "0.14.0",
15
+ "@voltro/env": "0.14.0",
16
+ "@voltro/plugin-multitenancy": "0.14.0",
17
+ "@voltro/plugin-storage": "0.14.0",
18
+ "@voltro/protocol": "0.14.0",
19
+ "@voltro/runtime": "0.14.0",
20
20
  "effect": "^3.21.2"
21
21
  },
22
22
  "devDependencies": {
23
- "@voltro/testing": "0.13.0",
23
+ "@voltro/testing": "0.14.0",
24
24
  "typescript": "^5.7.0",
25
25
  "vitest": "^3.0.0"
26
26
  }
@@ -26,5 +26,3 @@ export const authors = table('authors', {
26
26
  // tenant() pulls audit() transitively → adds tenantId + createdAt /
27
27
  // updatedAt / createdBy / updatedBy (auto-stamped by the runtime).
28
28
  .with(tenant())
29
- // Opt into the matcher engine so subscriptions react to writes.
30
- .reactive()
@@ -56,4 +56,3 @@ export const books = table('books', {
56
56
  })
57
57
  // tenant() pulls audit() transitively (tenantId + audit columns).
58
58
  .with(tenant())
59
- .reactive()
@@ -11,17 +11,17 @@
11
11
  "dependencies": {
12
12
  "@effect/platform": "^0.96.1",
13
13
  "@effect/rpc": "^0.75.1",
14
- "@voltro/cli": "0.13.0",
15
- "@voltro/database": "0.13.0",
16
- "@voltro/env": "0.13.0",
17
- "@voltro/plugin-governance": "0.13.0",
18
- "@voltro/plugin-multitenancy": "0.13.0",
19
- "@voltro/protocol": "0.13.0",
20
- "@voltro/runtime": "0.13.0",
14
+ "@voltro/cli": "0.14.0",
15
+ "@voltro/database": "0.14.0",
16
+ "@voltro/env": "0.14.0",
17
+ "@voltro/plugin-governance": "0.14.0",
18
+ "@voltro/plugin-multitenancy": "0.14.0",
19
+ "@voltro/protocol": "0.14.0",
20
+ "@voltro/runtime": "0.14.0",
21
21
  "effect": "^3.21.2"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/testing": "0.13.0",
24
+ "@voltro/testing": "0.14.0",
25
25
  "typescript": "^5.7.0",
26
26
  "vitest": "^3.0.0"
27
27
  }
@@ -56,9 +56,6 @@ export const orders = table('orders', {
56
56
  // tenant() pulls audit() transitively → adds tenantId + createdAt /
57
57
  // updatedAt / createdBy / updatedBy (auto-stamped by the runtime).
58
58
  .with(tenant())
59
- // Opt into the matcher engine: the `orderChanges` subscriber + any
60
- // live subscription against `orders` fire on every mutation write.
61
- .reactive()
62
59
 
63
60
  export type Order = InferRow<typeof orders>
64
61
 
@@ -11,17 +11,17 @@
11
11
  "dependencies": {
12
12
  "@effect/platform": "^0.96.1",
13
13
  "@effect/rpc": "^0.75.1",
14
- "@voltro/cli": "0.13.0",
15
- "@voltro/database": "0.13.0",
16
- "@voltro/env": "0.13.0",
17
- "@voltro/plugin-multitenancy": "0.13.0",
18
- "@voltro/protocol": "0.13.0",
19
- "@voltro/runtime": "0.13.0",
20
- "@voltro/workflow": "0.13.0",
14
+ "@voltro/cli": "0.14.0",
15
+ "@voltro/database": "0.14.0",
16
+ "@voltro/env": "0.14.0",
17
+ "@voltro/plugin-multitenancy": "0.14.0",
18
+ "@voltro/protocol": "0.14.0",
19
+ "@voltro/runtime": "0.14.0",
20
+ "@voltro/workflow": "0.14.0",
21
21
  "effect": "^3.21.2"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/testing": "0.13.0",
24
+ "@voltro/testing": "0.14.0",
25
25
  "typescript": "^5.7.0",
26
26
  "vitest": "^3.0.0"
27
27
  }
@@ -30,7 +30,6 @@ export const notes = table('notes', {
30
30
  body: text(),
31
31
  })
32
32
  .with(tenant())
33
- .reactive()
34
33
 
35
34
  export type Note = InferRow<typeof notes>
36
35
 
@@ -12,18 +12,18 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-flags": "0.13.0",
19
- "@voltro/plugin-multitenancy": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
22
- "@voltro/sql-postgres": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-flags": "0.14.0",
19
+ "@voltro/plugin-multitenancy": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
+ "@voltro/sql-postgres": "0.14.0",
23
23
  "effect": "^3.21.2"
24
24
  },
25
25
  "devDependencies": {
26
- "@voltro/testing": "0.13.0",
26
+ "@voltro/testing": "0.14.0",
27
27
  "typescript": "^5.7.0",
28
28
  "vitest": "^3.0.0"
29
29
  }
@@ -34,7 +34,6 @@ export const profiles = table('profiles', {
34
34
  ssn: text().encrypted(),
35
35
  })
36
36
  .with(audit()) // createdAt drives the retention sweep
37
- .reactive()
38
37
 
39
38
  export type Profile = InferRow<typeof profiles>
40
39
 
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-audit": "0.13.0",
19
- "@voltro/plugin-governance": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-audit": "0.14.0",
19
+ "@voltro/plugin-governance": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
22
  "effect": "^3.21.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/testing": "0.13.0",
25
+ "@voltro/testing": "0.14.0",
26
26
  "typescript": "^5.7.0",
27
27
  "vitest": "^3.0.0"
28
28
  }
@@ -53,9 +53,6 @@ export const syncedEvents = table('synced_events', {
53
53
  // tenant() pulls audit() transitively → tenantId + created/updated columns,
54
54
  // auto-stamped by the runtime from the caller's subject.
55
55
  .with(tenant())
56
- // Opt into the matcher engine so the `events.list` subscription wakes on
57
- // every insert.
58
- .reactive()
59
56
 
60
57
  export type SyncedEvent = InferRow<typeof syncedEvents>
61
58
 
@@ -11,17 +11,17 @@
11
11
  "dependencies": {
12
12
  "@effect/platform": "^0.96.1",
13
13
  "@effect/rpc": "^0.75.1",
14
- "@voltro/cli": "0.13.0",
15
- "@voltro/database": "0.13.0",
16
- "@voltro/env": "0.13.0",
17
- "@voltro/kv": "0.13.0",
18
- "@voltro/plugin-multitenancy": "0.13.0",
19
- "@voltro/protocol": "0.13.0",
20
- "@voltro/runtime": "0.13.0",
14
+ "@voltro/cli": "0.14.0",
15
+ "@voltro/database": "0.14.0",
16
+ "@voltro/env": "0.14.0",
17
+ "@voltro/kv": "0.14.0",
18
+ "@voltro/plugin-multitenancy": "0.14.0",
19
+ "@voltro/protocol": "0.14.0",
20
+ "@voltro/runtime": "0.14.0",
21
21
  "effect": "^3.21.2"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/testing": "0.13.0",
24
+ "@voltro/testing": "0.14.0",
25
25
  "typescript": "^5.7.0",
26
26
  "vitest": "^3.0.0"
27
27
  }
@@ -30,14 +30,12 @@ export const posts = table('posts', {
30
30
  body: text(),
31
31
  })
32
32
  .with(tenant())
33
- .reactive()
34
33
 
35
34
  export const comments = table('comments', {
36
35
  id: id({ prefix: 'cmt' }),
37
36
  body: text(),
38
37
  })
39
38
  .with(tenant())
40
- .reactive()
41
39
 
42
40
  export type Post = InferRow<typeof posts>
43
41
  export type Comment = InferRow<typeof comments>
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-moderation": "0.13.0",
19
- "@voltro/plugin-multitenancy": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-moderation": "0.14.0",
19
+ "@voltro/plugin-multitenancy": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
22
  "effect": "^3.21.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/testing": "0.13.0",
25
+ "@voltro/testing": "0.14.0",
26
26
  "typescript": "^5.7.0",
27
27
  "vitest": "^3.0.0"
28
28
  }
@@ -31,7 +31,6 @@ export const notes = table('notes', {
31
31
  done: boolean().default(false),
32
32
  })
33
33
  .with(tenant()) // tenantId + audit columns, auto-stamped
34
- .reactive()
35
34
 
36
35
  export type Note = InferRow<typeof notes>
37
36
 
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/plugin-multitenancy": "0.13.0",
18
- "@voltro/plugin-prometheus": "0.13.0",
19
- "@voltro/plugin-sentry": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/plugin-multitenancy": "0.14.0",
18
+ "@voltro/plugin-prometheus": "0.14.0",
19
+ "@voltro/plugin-sentry": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
22
  "effect": "^3.21.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/testing": "0.13.0",
25
+ "@voltro/testing": "0.14.0",
26
26
  "typescript": "^5.7.0",
27
27
  "vitest": "^3.0.0"
28
28
  }
@@ -30,7 +30,6 @@ export const notes = table('notes', {
30
30
  body: text(),
31
31
  })
32
32
  .with(tenant())
33
- .reactive()
34
33
 
35
34
  export type Note = InferRow<typeof notes>
36
35
 
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-multitenancy": "0.13.0",
19
- "@voltro/plugin-ratelimit": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-multitenancy": "0.14.0",
19
+ "@voltro/plugin-ratelimit": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
22
  "effect": "^3.21.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/testing": "0.13.0",
25
+ "@voltro/testing": "0.14.0",
26
26
  "typescript": "^5.7.0",
27
27
  "vitest": "^3.0.0"
28
28
  }
@@ -36,7 +36,6 @@ export const notes = table('notes', {
36
36
  archived: boolean().default(false),
37
37
  })
38
38
  .with(tenant())
39
- .reactive()
40
39
 
41
40
  // Guarded per-resource rather than globally: holding `teams:rename` on
42
41
  // `team_core` must not let you rename `team_marketing`. The grant comes from
@@ -46,7 +45,6 @@ export const teams = table('teams', {
46
45
  name: text(),
47
46
  })
48
47
  .with(tenant())
49
- .reactive()
50
48
 
51
49
  export type Note = InferRow<typeof notes>
52
50
  export type Team = InferRow<typeof teams>
@@ -12,17 +12,17 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/env": "0.13.0",
18
- "@voltro/plugin-multitenancy": "0.13.0",
19
- "@voltro/plugin-rbac": "0.13.0",
20
- "@voltro/protocol": "0.13.0",
21
- "@voltro/runtime": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/env": "0.14.0",
18
+ "@voltro/plugin-multitenancy": "0.14.0",
19
+ "@voltro/plugin-rbac": "0.14.0",
20
+ "@voltro/protocol": "0.14.0",
21
+ "@voltro/runtime": "0.14.0",
22
22
  "effect": "^3.21.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@voltro/testing": "0.13.0",
25
+ "@voltro/testing": "0.14.0",
26
26
  "typescript": "^5.7.0",
27
27
  "vitest": "^3.0.0"
28
28
  }
@@ -43,9 +43,6 @@ export const products = table('products', {
43
43
  priceCents: integer(),
44
44
  createdAt: timestamp().default('now'),
45
45
  })
46
- // Opt into the matcher engine so a future reactive WS query over the
47
- // same table stays live. The REST routes don't need it, but it's free.
48
- .reactive()
49
46
 
50
47
  export type Product = InferRow<typeof products>
51
48
 
@@ -12,16 +12,16 @@
12
12
  "dependencies": {
13
13
  "@effect/platform": "^0.96.1",
14
14
  "@effect/rpc": "^0.75.1",
15
- "@voltro/cli": "0.13.0",
16
- "@voltro/database": "0.13.0",
17
- "@voltro/plugin-openapi": "0.13.0",
18
- "@voltro/protocol": "0.13.0",
19
- "@voltro/runtime": "0.13.0",
20
- "@voltro/sql-postgres": "0.13.0",
15
+ "@voltro/cli": "0.14.0",
16
+ "@voltro/database": "0.14.0",
17
+ "@voltro/plugin-openapi": "0.14.0",
18
+ "@voltro/protocol": "0.14.0",
19
+ "@voltro/runtime": "0.14.0",
20
+ "@voltro/sql-postgres": "0.14.0",
21
21
  "effect": "^3.21.2"
22
22
  },
23
23
  "devDependencies": {
24
- "@voltro/testing": "0.13.0",
24
+ "@voltro/testing": "0.14.0",
25
25
  "typescript": "^5.7.0",
26
26
  "vitest": "^3.0.0"
27
27
  }