@agent-native/core 0.102.2 → 0.103.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 (206) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +6 -0
  3. package/corpus/core/docs/content/local-file-mode.mdx +99 -489
  4. package/corpus/core/docs/content/locales/ar-SA/local-file-mode.mdx +35 -490
  5. package/corpus/core/docs/content/locales/ar-SA/template-content.mdx +10 -24
  6. package/corpus/core/docs/content/locales/de-DE/local-file-mode.mdx +37 -491
  7. package/corpus/core/docs/content/locales/de-DE/template-content.mdx +10 -24
  8. package/corpus/core/docs/content/locales/es-ES/local-file-mode.mdx +35 -493
  9. package/corpus/core/docs/content/locales/es-ES/template-content.mdx +10 -24
  10. package/corpus/core/docs/content/locales/fr-FR/local-file-mode.mdx +38 -491
  11. package/corpus/core/docs/content/locales/fr-FR/template-content.mdx +10 -24
  12. package/corpus/core/docs/content/locales/hi-IN/local-file-mode.mdx +33 -492
  13. package/corpus/core/docs/content/locales/hi-IN/template-content.mdx +10 -24
  14. package/corpus/core/docs/content/locales/ja-JP/local-file-mode.mdx +36 -492
  15. package/corpus/core/docs/content/locales/ja-JP/template-content.mdx +10 -24
  16. package/corpus/core/docs/content/locales/ko-KR/local-file-mode.mdx +35 -490
  17. package/corpus/core/docs/content/locales/ko-KR/template-content.mdx +10 -24
  18. package/corpus/core/docs/content/locales/pt-BR/local-file-mode.mdx +35 -493
  19. package/corpus/core/docs/content/locales/pt-BR/template-content.mdx +10 -24
  20. package/corpus/core/docs/content/locales/zh-CN/local-file-mode.mdx +31 -489
  21. package/corpus/core/docs/content/locales/zh-CN/template-content.mdx +9 -24
  22. package/corpus/core/docs/content/locales/zh-TW/local-file-mode.mdx +31 -489
  23. package/corpus/core/docs/content/locales/zh-TW/template-content.mdx +9 -24
  24. package/corpus/core/docs/content/template-content.mdx +26 -42
  25. package/corpus/core/package.json +1 -1
  26. package/corpus/core/src/cli/content-local.ts +86 -18
  27. package/corpus/core/src/cli/index.ts +2 -2
  28. package/corpus/core/src/cli/skills-content/content-skill.ts +36 -25
  29. package/corpus/core/src/cli/skills.ts +47 -13
  30. package/corpus/core/src/local-artifacts/index.ts +65 -0
  31. package/corpus/templates/assets/app/components/library/GenerationPresetsPanel.tsx +325 -0
  32. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +12 -0
  33. package/corpus/templates/assets/app/i18n/zh-TW.ts +21 -0
  34. package/corpus/templates/assets/app/i18n-data.ts +215 -0
  35. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +19 -479
  36. package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +1 -1
  37. package/corpus/templates/assets/app/routes/brand-kits.$id_.settings.tsx +446 -0
  38. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +12 -2
  39. package/corpus/templates/clips/app/components/player/settings-panel.tsx +30 -12
  40. package/corpus/templates/clips/app/components/player/video-player.tsx +5 -1
  41. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +22 -3
  42. package/corpus/templates/clips/app/i18n/ar-SA.ts +3 -2
  43. package/corpus/templates/clips/app/i18n/de-DE.ts +4 -2
  44. package/corpus/templates/clips/app/i18n/en-US.ts +3 -2
  45. package/corpus/templates/clips/app/i18n/es-ES.ts +4 -2
  46. package/corpus/templates/clips/app/i18n/fr-FR.ts +3 -2
  47. package/corpus/templates/clips/app/i18n/hi-IN.ts +3 -2
  48. package/corpus/templates/clips/app/i18n/ja-JP.ts +4 -1
  49. package/corpus/templates/clips/app/i18n/ko-KR.ts +3 -2
  50. package/corpus/templates/clips/app/i18n/pt-BR.ts +4 -2
  51. package/corpus/templates/clips/app/i18n/zh-CN.ts +3 -2
  52. package/corpus/templates/clips/app/i18n/zh-TW.ts +3 -2
  53. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +27 -1
  54. package/corpus/templates/clips/server/lib/share-password.ts +6 -3
  55. package/corpus/templates/content/.agents/skills/content/SKILL.md +26 -39
  56. package/corpus/templates/content/AGENTS.md +25 -30
  57. package/corpus/templates/content/actions/_builder-docs-client.ts +23 -0
  58. package/corpus/templates/content/actions/_content-database-source-adapters.ts +21 -3
  59. package/corpus/templates/content/actions/_content-files.ts +338 -0
  60. package/corpus/templates/content/actions/_content-space-access.ts +135 -0
  61. package/corpus/templates/content/actions/_content-spaces.ts +640 -0
  62. package/corpus/templates/content/actions/_database-source-utils.ts +90 -7
  63. package/corpus/templates/content/actions/_database-utils.ts +7 -1
  64. package/corpus/templates/content/actions/_local-file-documents.ts +0 -9
  65. package/corpus/templates/content/actions/_local-folder-source.ts +53 -0
  66. package/corpus/templates/content/actions/_property-utils.ts +9 -4
  67. package/corpus/templates/content/actions/add-database-item.ts +108 -65
  68. package/corpus/templates/content/actions/backfill-content-files.ts +22 -0
  69. package/corpus/templates/content/actions/connect-local-folder-source.ts +221 -0
  70. package/corpus/templates/content/actions/create-content-database.ts +129 -3
  71. package/corpus/templates/content/actions/create-document.ts +65 -55
  72. package/corpus/templates/content/actions/create-inline-content-database.ts +6 -1
  73. package/corpus/templates/content/actions/delete-content-database.ts +3 -0
  74. package/corpus/templates/content/actions/delete-document.ts +7 -11
  75. package/corpus/templates/content/actions/disconnect-local-folder-source.ts +175 -0
  76. package/corpus/templates/content/actions/duplicate-database-item.ts +10 -0
  77. package/corpus/templates/content/actions/duplicate-database-items.ts +13 -0
  78. package/corpus/templates/content/actions/edit-document.ts +2 -28
  79. package/corpus/templates/content/actions/ensure-content-spaces.ts +26 -0
  80. package/corpus/templates/content/actions/export-content-source.ts +47 -9
  81. package/corpus/templates/content/actions/get-document.ts +0 -14
  82. package/corpus/templates/content/actions/import-content-source.ts +43 -3
  83. package/corpus/templates/content/actions/list-content-spaces.ts +103 -0
  84. package/corpus/templates/content/actions/list-documents.ts +12 -9
  85. package/corpus/templates/content/actions/move-document.ts +3 -14
  86. package/corpus/templates/content/actions/pull-document.ts +0 -23
  87. package/corpus/templates/content/actions/remove-local-file-source.ts +50 -29
  88. package/corpus/templates/content/actions/resolve-local-folder-conflict.ts +442 -0
  89. package/corpus/templates/content/actions/reveal-local-source-file.ts +6 -17
  90. package/corpus/templates/content/actions/search-documents.ts +0 -34
  91. package/corpus/templates/content/actions/share-local-file-document.ts +25 -1
  92. package/corpus/templates/content/actions/submit-content-database-form.ts +12 -0
  93. package/corpus/templates/content/actions/sync-local-folder-source.ts +731 -0
  94. package/corpus/templates/content/actions/sync-manifest-local-folder-source.ts +123 -0
  95. package/corpus/templates/content/actions/update-content-database-view.ts +10 -1
  96. package/corpus/templates/content/actions/update-document.ts +0 -15
  97. package/corpus/templates/content/actions/view-screen.ts +2 -50
  98. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +76 -62
  99. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +70 -22
  100. package/corpus/templates/content/app/components/editor/database/grouping.ts +2 -1
  101. package/corpus/templates/content/app/components/editor/database/settings.tsx +23 -20
  102. package/corpus/templates/content/app/components/editor/database/shared.tsx +2 -0
  103. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +330 -0
  104. package/corpus/templates/content/app/components/editor/database/types.ts +1 -0
  105. package/corpus/templates/content/app/components/editor/database/view-config.ts +3 -1
  106. package/corpus/templates/content/app/components/layout/Layout.tsx +25 -1
  107. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +209 -113
  108. package/corpus/templates/content/app/components/sidebar/select-content-space.ts +31 -0
  109. package/corpus/templates/content/app/hooks/use-content-database.ts +16 -0
  110. package/corpus/templates/content/app/hooks/use-content-spaces.ts +39 -0
  111. package/corpus/templates/content/app/i18n/zh-TW.ts +11 -0
  112. package/corpus/templates/content/app/i18n-data.ts +75 -0
  113. package/corpus/templates/content/app/routes/_app.local-files.tsx +174 -65
  114. package/corpus/templates/content/changelog/2026-07-16-content-callouts-can-now-be-reviewed-and-published-to-builder.md +6 -0
  115. package/corpus/templates/content/changelog/2026-07-16-heading-5-and-heading-6-are-available-from-the-editor-slash-.md +6 -0
  116. package/corpus/templates/content/changelog/2026-07-16-organize-every-workspace-through-a-customizable-files-databa.md +6 -0
  117. package/corpus/templates/content/parity/matrix.md +2 -1
  118. package/corpus/templates/content/parity/matrix.ts +37 -1
  119. package/corpus/templates/content/scripts/dev-database.mjs +7 -5
  120. package/corpus/templates/content/server/db/schema.ts +113 -40
  121. package/corpus/templates/content/server/lib/document-context.ts +15 -1
  122. package/corpus/templates/content/server/lib/notion-sync.ts +6 -0
  123. package/corpus/templates/content/server/plugins/db.ts +153 -0
  124. package/corpus/templates/content/shared/api.ts +17 -3
  125. package/corpus/templates/content/shared/builder-mdx.ts +163 -16
  126. package/corpus/templates/design/.agents/skills/design-templates/SKILL.md +59 -0
  127. package/corpus/templates/design/AGENTS.md +6 -1
  128. package/corpus/templates/design/actions/create-design-from-template.ts +19 -7
  129. package/corpus/templates/design/actions/list-design-templates.ts +69 -21
  130. package/corpus/templates/design/actions/navigate.ts +2 -2
  131. package/corpus/templates/design/actions/view-screen.ts +15 -2
  132. package/corpus/templates/design/agent-native.app-skill.json +5 -0
  133. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +281 -56
  134. package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +14 -2
  135. package/corpus/templates/design/app/hooks/use-navigation-state.ts +3 -2
  136. package/corpus/templates/design/app/i18n/zh-TW.ts +3 -3
  137. package/corpus/templates/design/app/i18n-data.ts +21 -2
  138. package/corpus/templates/design/app/i18n-template-feature.ts +218 -10
  139. package/corpus/templates/design/app/pages/Index.tsx +195 -24
  140. package/corpus/templates/design/app/pages/Templates.tsx +144 -55
  141. package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +12 -1
  142. package/corpus/templates/design/changelog/2026-07-14-templates-now-appear-in-the-new-design-picker-with-previews-.md +6 -0
  143. package/corpus/templates/design/changelog/2026-07-15-templates-now-open-immediately-after-copying-even-while-the-.md +6 -0
  144. package/corpus/templates/design/server/plugins/agent-chat.ts +1 -1
  145. package/corpus/templates/mail/AGENTS.md +23 -18
  146. package/corpus/templates/mail/actions/bulk-archive.ts +32 -28
  147. package/corpus/templates/mail/actions/mark-read.ts +131 -20
  148. package/corpus/templates/mail/actions/mark-thread-read.ts +1 -1
  149. package/corpus/templates/mail/actions/move-email.ts +30 -24
  150. package/corpus/templates/mail/actions/send-email.ts +73 -68
  151. package/corpus/templates/mail/changelog/2026-07-15-unread-inbox-cleanup-now-completes-reliably.md +6 -0
  152. package/corpus/templates/mail/server/handlers/emails.ts +218 -209
  153. package/corpus/templates/mail/server/lib/bulk-mark-read.ts +30 -0
  154. package/corpus/templates/mail/server/lib/email-state.ts +198 -113
  155. package/corpus/templates/mail/server/lib/google-auth.ts +218 -25
  156. package/corpus/templates/mail/server/lib/jobs.ts +69 -74
  157. package/corpus/templates/mail/server/lib/local-email-store.ts +265 -0
  158. package/corpus/templates/mail/server/plugins/agent-chat.ts +6 -0
  159. package/dist/cli/content-local.d.ts +1 -0
  160. package/dist/cli/content-local.d.ts.map +1 -1
  161. package/dist/cli/content-local.js +75 -17
  162. package/dist/cli/content-local.js.map +1 -1
  163. package/dist/cli/index.js +2 -2
  164. package/dist/cli/index.js.map +1 -1
  165. package/dist/cli/skills-content/content-skill.d.ts +1 -1
  166. package/dist/cli/skills-content/content-skill.d.ts.map +1 -1
  167. package/dist/cli/skills-content/content-skill.js +36 -25
  168. package/dist/cli/skills-content/content-skill.js.map +1 -1
  169. package/dist/cli/skills.d.ts.map +1 -1
  170. package/dist/cli/skills.js +47 -14
  171. package/dist/cli/skills.js.map +1 -1
  172. package/dist/collab/awareness.d.ts +2 -2
  173. package/dist/collab/awareness.d.ts.map +1 -1
  174. package/dist/collab/struct-routes.d.ts +1 -1
  175. package/dist/local-artifacts/index.d.ts +10 -0
  176. package/dist/local-artifacts/index.d.ts.map +1 -1
  177. package/dist/local-artifacts/index.js +39 -0
  178. package/dist/local-artifacts/index.js.map +1 -1
  179. package/dist/notifications/routes.d.ts +1 -1
  180. package/dist/observability/routes.d.ts +5 -5
  181. package/dist/resources/handlers.d.ts +1 -1
  182. package/dist/secrets/routes.d.ts +9 -9
  183. package/docs/content/local-file-mode.mdx +99 -489
  184. package/docs/content/locales/ar-SA/local-file-mode.mdx +35 -490
  185. package/docs/content/locales/ar-SA/template-content.mdx +10 -24
  186. package/docs/content/locales/de-DE/local-file-mode.mdx +37 -491
  187. package/docs/content/locales/de-DE/template-content.mdx +10 -24
  188. package/docs/content/locales/es-ES/local-file-mode.mdx +35 -493
  189. package/docs/content/locales/es-ES/template-content.mdx +10 -24
  190. package/docs/content/locales/fr-FR/local-file-mode.mdx +38 -491
  191. package/docs/content/locales/fr-FR/template-content.mdx +10 -24
  192. package/docs/content/locales/hi-IN/local-file-mode.mdx +33 -492
  193. package/docs/content/locales/hi-IN/template-content.mdx +10 -24
  194. package/docs/content/locales/ja-JP/local-file-mode.mdx +36 -492
  195. package/docs/content/locales/ja-JP/template-content.mdx +10 -24
  196. package/docs/content/locales/ko-KR/local-file-mode.mdx +35 -490
  197. package/docs/content/locales/ko-KR/template-content.mdx +10 -24
  198. package/docs/content/locales/pt-BR/local-file-mode.mdx +35 -493
  199. package/docs/content/locales/pt-BR/template-content.mdx +10 -24
  200. package/docs/content/locales/zh-CN/local-file-mode.mdx +31 -489
  201. package/docs/content/locales/zh-CN/template-content.mdx +9 -24
  202. package/docs/content/locales/zh-TW/local-file-mode.mdx +31 -489
  203. package/docs/content/locales/zh-TW/template-content.mdx +9 -24
  204. package/docs/content/template-content.mdx +26 -42
  205. package/package.json +1 -1
  206. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +0 -126
@@ -9,10 +9,6 @@ import { z } from "zod";
9
9
 
10
10
  import { getDb, schema } from "../server/db/index.js";
11
11
  import { serializeDocumentSource } from "./_document-source.js";
12
- import {
13
- getLocalFileDocument,
14
- isContentLocalFileMode,
15
- } from "./_local-file-documents.js";
16
12
 
17
13
  async function revealPath(absolutePath: string) {
18
14
  const target = path.resolve(absolutePath);
@@ -46,19 +42,12 @@ export default defineAction({
46
42
  id: z.string().describe("Document ID"),
47
43
  }),
48
44
  run: async ({ id }) => {
49
- let absolutePath: string | undefined;
50
-
51
- if (await isContentLocalFileMode()) {
52
- const doc = await getLocalFileDocument(id);
53
- absolutePath = doc.source?.absolutePath;
54
- } else {
55
- const access = await assertAccess("document", id, "viewer");
56
- const [doc] = await getDb()
57
- .select()
58
- .from(schema.documents)
59
- .where(eq(schema.documents.id, access.resource.id));
60
- absolutePath = serializeDocumentSource(doc)?.absolutePath;
61
- }
45
+ const access = await assertAccess("document", id, "viewer");
46
+ const [doc] = await getDb()
47
+ .select()
48
+ .from(schema.documents)
49
+ .where(eq(schema.documents.id, access.resource.id));
50
+ const absolutePath = serializeDocumentSource(doc)?.absolutePath;
62
51
 
63
52
  if (!absolutePath) {
64
53
  throw new Error(
@@ -8,10 +8,6 @@ import {
8
8
  documentDiscoveryFilter,
9
9
  parseDocumentHideFromSearch,
10
10
  } from "../server/lib/documents.js";
11
- import {
12
- isContentLocalFileMode,
13
- listLocalFileDocuments,
14
- } from "./_local-file-documents.js";
15
11
 
16
12
  function escapeLike(s: string): string {
17
13
  return s.replace(/([\\%_])/g, "\\$1");
@@ -50,36 +46,6 @@ export default defineAction({
50
46
  run: async (args) => {
51
47
  const query = args.query;
52
48
 
53
- if (await isContentLocalFileMode()) {
54
- const normalizedQuery = query.toLowerCase();
55
- const docs = (await listLocalFileDocuments())
56
- .filter((doc) => doc.source?.kind !== "folder")
57
- .filter((doc) => !doc.hideFromSearch)
58
- .filter(
59
- (doc) =>
60
- !normalizedQuery ||
61
- doc.title.toLowerCase().includes(normalizedQuery) ||
62
- (doc.description ?? "").toLowerCase().includes(normalizedQuery) ||
63
- doc.content.toLowerCase().includes(normalizedQuery),
64
- )
65
- .sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))
66
- .slice(0, args.limit);
67
-
68
- return {
69
- documents: docs.map((doc) => ({
70
- id: doc.id,
71
- parentId: doc.parentId,
72
- title: doc.title,
73
- description: doc.description,
74
- icon: doc.icon,
75
- snippet: makeSnippet(doc.content, query),
76
- contentLength: doc.content.length,
77
- hideFromSearch: doc.hideFromSearch,
78
- updatedAt: doc.updatedAt,
79
- })),
80
- };
81
- }
82
-
83
49
  const db = getDb();
84
50
  const pattern = `%${escapeLike(query)}%`;
85
51
 
@@ -5,7 +5,7 @@ import {
5
5
  getRequestOrgId,
6
6
  getRequestUserEmail,
7
7
  } from "@agent-native/core/server/request-context";
8
- import { and, eq, sql } from "drizzle-orm";
8
+ import { and, eq, isNull, or, sql } from "drizzle-orm";
9
9
  import { z } from "zod";
10
10
 
11
11
  import { getDb, schema } from "../server/db/index.js";
@@ -13,6 +13,12 @@ import {
13
13
  parseDocumentFavorite,
14
14
  parseDocumentHideFromSearch,
15
15
  } from "../server/lib/documents.js";
16
+ import { ensureDocumentFilesMembership } from "./_content-files.js";
17
+ import {
18
+ organizationContentSpaceId,
19
+ personalContentSpaceId,
20
+ provisionContentSpaces,
21
+ } from "./_content-spaces.js";
16
22
  import { serializeDocumentSource } from "./_document-source.js";
17
23
  import {
18
24
  getLocalFileDocument,
@@ -86,6 +92,15 @@ export default defineAction({
86
92
  const now = new Date().toISOString();
87
93
  const orgId = getRequestOrgId() ?? null;
88
94
  const db = getDb();
95
+ const provisioned = await provisionContentSpaces(db, userEmail);
96
+ const targetSpaceId = orgId
97
+ ? organizationContentSpaceId(orgId)
98
+ : personalContentSpaceId(userEmail);
99
+ if (!provisioned.spaceIds.includes(targetSpaceId)) {
100
+ throw new Error(
101
+ "The active organization does not have a writable Content space.",
102
+ );
103
+ }
89
104
 
90
105
  const [existing] = await db
91
106
  .select()
@@ -96,6 +111,10 @@ export default defineAction({
96
111
  eq(schema.documents.sourceMode, "database"),
97
112
  eq(schema.documents.sourceKind, "local-file-copy"),
98
113
  eq(schema.documents.sourcePath, sourcePath),
114
+ or(
115
+ eq(schema.documents.spaceId, targetSpaceId),
116
+ isNull(schema.documents.spaceId),
117
+ ),
99
118
  ),
100
119
  )
101
120
  .limit(1);
@@ -104,6 +123,7 @@ export default defineAction({
104
123
  await db
105
124
  .update(schema.documents)
106
125
  .set({
126
+ spaceId: existing.spaceId ?? targetSpaceId,
107
127
  title: localDocument.title,
108
128
  content: localDocument.content,
109
129
  icon: localDocument.icon,
@@ -115,6 +135,8 @@ export default defineAction({
115
135
  })
116
136
  .where(eq(schema.documents.id, existing.id));
117
137
 
138
+ await ensureDocumentFilesMembership(db, existing.id, now);
139
+
118
140
  const [row] = await db
119
141
  .select()
120
142
  .from(schema.documents)
@@ -140,6 +162,7 @@ export default defineAction({
140
162
 
141
163
  await db.insert(schema.documents).values({
142
164
  id: documentId,
165
+ spaceId: targetSpaceId,
143
166
  ownerEmail: userEmail,
144
167
  orgId,
145
168
  parentId: null,
@@ -158,6 +181,7 @@ export default defineAction({
158
181
  createdAt: now,
159
182
  updatedAt: now,
160
183
  });
184
+ await ensureDocumentFilesMembership(db, documentId, now);
161
185
  },
162
186
  );
163
187
 
@@ -24,6 +24,7 @@ import {
24
24
  type DocumentPropertyType,
25
25
  type DocumentPropertyValue,
26
26
  } from "../shared/properties.js";
27
+ import { ensureDocumentFilesMembership } from "./_content-files.js";
27
28
  import { nanoid, parseDatabaseViewConfig } from "./_property-utils.js";
28
29
 
29
30
  const submitContentDatabaseFormSchema = z.object({
@@ -197,6 +198,9 @@ export default defineAction({
197
198
  ),
198
199
  );
199
200
  if (!database) throw new Error(`Database "${databaseId}" not found.`);
201
+ if (!database.spaceId) {
202
+ throw new Error("Database does not belong to a Content space.");
203
+ }
200
204
 
201
205
  const access = await assertAccess(
202
206
  "document",
@@ -204,6 +208,11 @@ export default defineAction({
204
208
  "editor",
205
209
  );
206
210
  const databaseDocument = access.resource;
211
+ if (databaseDocument.spaceId !== database.spaceId) {
212
+ throw new Error(
213
+ "Database page and database belong to different Content spaces.",
214
+ );
215
+ }
207
216
  const definitions = await db
208
217
  .select()
209
218
  .from(schema.documentPropertyDefinitions)
@@ -318,6 +327,7 @@ export default defineAction({
318
327
 
319
328
  await tx.insert(schema.documents).values({
320
329
  id: documentId,
330
+ spaceId: database.spaceId,
321
331
  ownerEmail: database.ownerEmail,
322
332
  orgId: database.orgId,
323
333
  parentId: database.documentId,
@@ -381,6 +391,8 @@ export default defineAction({
381
391
  );
382
392
  }
383
393
 
394
+ await ensureDocumentFilesMembership(tx, documentId, now);
395
+
384
396
  const [savedDocument] = await tx
385
397
  .select({
386
398
  id: schema.documents.id,