@agent-native/core 0.102.1 → 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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +15 -0
- package/corpus/core/docs/content/local-file-mode.mdx +99 -489
- package/corpus/core/docs/content/locales/ar-SA/local-file-mode.mdx +35 -490
- package/corpus/core/docs/content/locales/ar-SA/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/de-DE/local-file-mode.mdx +37 -491
- package/corpus/core/docs/content/locales/de-DE/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/es-ES/local-file-mode.mdx +35 -493
- package/corpus/core/docs/content/locales/es-ES/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/fr-FR/local-file-mode.mdx +38 -491
- package/corpus/core/docs/content/locales/fr-FR/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/hi-IN/local-file-mode.mdx +33 -492
- package/corpus/core/docs/content/locales/hi-IN/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/ja-JP/local-file-mode.mdx +36 -492
- package/corpus/core/docs/content/locales/ja-JP/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/ko-KR/local-file-mode.mdx +35 -490
- package/corpus/core/docs/content/locales/ko-KR/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/pt-BR/local-file-mode.mdx +35 -493
- package/corpus/core/docs/content/locales/pt-BR/template-content.mdx +10 -24
- package/corpus/core/docs/content/locales/zh-CN/local-file-mode.mdx +31 -489
- package/corpus/core/docs/content/locales/zh-CN/template-content.mdx +9 -24
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.mdx +31 -489
- package/corpus/core/docs/content/locales/zh-TW/template-content.mdx +9 -24
- package/corpus/core/docs/content/template-content.mdx +26 -42
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/cli/content-local.ts +86 -18
- package/corpus/core/src/cli/index.ts +2 -2
- package/corpus/core/src/cli/skills-content/content-skill.ts +36 -25
- package/corpus/core/src/cli/skills.ts +47 -13
- package/corpus/core/src/client/AgentPanel.tsx +7 -0
- package/corpus/core/src/client/AssistantChat.tsx +7 -0
- package/corpus/core/src/client/agent-chat-adapter.ts +7 -1
- package/corpus/core/src/client/chat/message-components.tsx +17 -3
- package/corpus/core/src/client/composer/ComposerPlusMenu.tsx +96 -6
- package/corpus/core/src/client/composer/asset-picker-url.ts +80 -0
- package/corpus/core/src/client/error-format.ts +24 -0
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +8 -1
- package/corpus/core/src/local-artifacts/index.ts +65 -0
- package/corpus/templates/assets/app/components/library/GenerationPresetsPanel.tsx +325 -0
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +12 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +21 -0
- package/corpus/templates/assets/app/i18n-data.ts +215 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +19 -479
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +1 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id_.settings.tsx +446 -0
- package/corpus/templates/assets/app/routes/library.tsx +69 -0
- package/corpus/templates/assets/changelog/2026-07-15-fixed-top-level-image-picker-selections-returning-to-the-com.md +6 -0
- package/corpus/templates/clips/actions/disconnect-calendar.ts +57 -9
- package/corpus/templates/clips/actions/generate-workflow.ts +102 -59
- package/corpus/templates/clips/actions/get-recording-player-data.ts +64 -1
- package/corpus/templates/clips/actions/regenerate-summary.ts +7 -0
- package/corpus/templates/clips/actions/regenerate-title.ts +29 -11
- package/corpus/templates/clips/app/components/editor/editor-layout.tsx +34 -13
- package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +87 -9
- package/corpus/templates/clips/app/components/editor/trim-handles.tsx +15 -0
- package/corpus/templates/clips/app/components/editor/waveform.tsx +21 -8
- package/corpus/templates/clips/app/components/library/folder-tree.tsx +52 -0
- package/corpus/templates/clips/app/components/player/settings-panel.tsx +116 -58
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +43 -37
- package/corpus/templates/clips/app/components/player/video-player.tsx +50 -2
- package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +22 -3
- package/corpus/templates/clips/app/i18n/ar-SA.ts +5 -2
- package/corpus/templates/clips/app/i18n/de-DE.ts +6 -2
- package/corpus/templates/clips/app/i18n/en-US.ts +5 -2
- package/corpus/templates/clips/app/i18n/es-ES.ts +6 -2
- package/corpus/templates/clips/app/i18n/fr-FR.ts +5 -2
- package/corpus/templates/clips/app/i18n/hi-IN.ts +5 -2
- package/corpus/templates/clips/app/i18n/ja-JP.ts +6 -1
- package/corpus/templates/clips/app/i18n/ko-KR.ts +5 -2
- package/corpus/templates/clips/app/i18n/pt-BR.ts +6 -2
- package/corpus/templates/clips/app/i18n/zh-CN.ts +5 -2
- package/corpus/templates/clips/app/i18n/zh-TW.ts +5 -2
- package/corpus/templates/clips/app/lib/timestamp-mapping.ts +14 -0
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -2
- package/corpus/templates/clips/app/routes/_index.tsx +1 -2
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +98 -32
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +4 -1
- package/corpus/templates/clips/changelog/2026-07-15-ai-workflow-generation-now-stays-visible-avoids-duplicate-re.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-clip-playback-and-cta-controls-remain-interactive-through-ed.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-clip-titles-no-longer-describe-the-product-as-a-loom-alterna.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-description-regeneration-now-opens-the-agent-chat-so-progres.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-direct-recording-urls-now-respect-share-link-and-password-ac.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-disconnecting-a-calendar-now-clears-unrecorded-synced-meetin.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-folders-now-expose-rename-and-delete-actions-directly-in-the.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-recording-pages-now-explain-sign-in-access-and-avoid-showing.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-the-clips-extension-quick-actions-toolbar-can-be-moved-out-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-the-editor-now-skips-cut-sections-during-preview-and-keeps-t.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-thumbnail-capture-now-updates-previews-while-scrubbing-and-l.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-15-windows-permission-links-open-the-matching-settings-page.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/content-script.ts +117 -2
- package/corpus/templates/clips/chrome-extension/src/overlay.ts +27 -0
- package/corpus/templates/clips/desktop/src-tauri/tauri.conf.json +1 -1
- package/corpus/templates/clips/server/lib/calendar-event-meetings.ts +139 -101
- package/corpus/templates/clips/server/lib/recording-page-access.ts +35 -0
- package/corpus/templates/clips/server/lib/share-password.ts +6 -3
- package/corpus/templates/content/.agents/skills/content/SKILL.md +26 -39
- package/corpus/templates/content/AGENTS.md +25 -30
- package/corpus/templates/content/actions/_builder-docs-client.ts +23 -0
- package/corpus/templates/content/actions/_content-database-source-adapters.ts +21 -3
- package/corpus/templates/content/actions/_content-files.ts +338 -0
- package/corpus/templates/content/actions/_content-space-access.ts +135 -0
- package/corpus/templates/content/actions/_content-spaces.ts +640 -0
- package/corpus/templates/content/actions/_database-source-utils.ts +90 -7
- package/corpus/templates/content/actions/_database-utils.ts +7 -1
- package/corpus/templates/content/actions/_local-file-documents.ts +0 -9
- package/corpus/templates/content/actions/_local-folder-source.ts +53 -0
- package/corpus/templates/content/actions/_property-utils.ts +9 -4
- package/corpus/templates/content/actions/add-database-item.ts +108 -65
- package/corpus/templates/content/actions/backfill-content-files.ts +22 -0
- package/corpus/templates/content/actions/connect-local-folder-source.ts +221 -0
- package/corpus/templates/content/actions/create-content-database.ts +129 -3
- package/corpus/templates/content/actions/create-document.ts +65 -55
- package/corpus/templates/content/actions/create-inline-content-database.ts +6 -1
- package/corpus/templates/content/actions/delete-content-database.ts +3 -0
- package/corpus/templates/content/actions/delete-document.ts +7 -11
- package/corpus/templates/content/actions/disconnect-local-folder-source.ts +175 -0
- package/corpus/templates/content/actions/duplicate-database-item.ts +10 -0
- package/corpus/templates/content/actions/duplicate-database-items.ts +13 -0
- package/corpus/templates/content/actions/edit-document.ts +2 -28
- package/corpus/templates/content/actions/ensure-content-spaces.ts +26 -0
- package/corpus/templates/content/actions/export-content-source.ts +47 -9
- package/corpus/templates/content/actions/get-document.ts +0 -14
- package/corpus/templates/content/actions/import-content-source.ts +43 -3
- package/corpus/templates/content/actions/list-content-spaces.ts +103 -0
- package/corpus/templates/content/actions/list-documents.ts +12 -9
- package/corpus/templates/content/actions/move-document.ts +3 -14
- package/corpus/templates/content/actions/pull-document.ts +0 -23
- package/corpus/templates/content/actions/remove-local-file-source.ts +50 -29
- package/corpus/templates/content/actions/resolve-local-folder-conflict.ts +442 -0
- package/corpus/templates/content/actions/reveal-local-source-file.ts +6 -17
- package/corpus/templates/content/actions/search-documents.ts +0 -34
- package/corpus/templates/content/actions/share-local-file-document.ts +25 -1
- package/corpus/templates/content/actions/submit-content-database-form.ts +12 -0
- package/corpus/templates/content/actions/sync-local-folder-source.ts +731 -0
- package/corpus/templates/content/actions/sync-manifest-local-folder-source.ts +123 -0
- package/corpus/templates/content/actions/update-content-database-view.ts +10 -1
- package/corpus/templates/content/actions/update-document.ts +0 -15
- package/corpus/templates/content/actions/view-screen.ts +2 -50
- package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +76 -62
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +70 -22
- package/corpus/templates/content/app/components/editor/database/grouping.ts +2 -1
- package/corpus/templates/content/app/components/editor/database/settings.tsx +23 -20
- package/corpus/templates/content/app/components/editor/database/shared.tsx +2 -0
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +330 -0
- package/corpus/templates/content/app/components/editor/database/types.ts +1 -0
- package/corpus/templates/content/app/components/editor/database/view-config.ts +3 -1
- package/corpus/templates/content/app/components/layout/Layout.tsx +25 -1
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +209 -113
- package/corpus/templates/content/app/components/sidebar/select-content-space.ts +31 -0
- package/corpus/templates/content/app/hooks/use-content-database.ts +16 -0
- package/corpus/templates/content/app/hooks/use-content-spaces.ts +39 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +11 -0
- package/corpus/templates/content/app/i18n-data.ts +75 -0
- package/corpus/templates/content/app/routes/_app.local-files.tsx +174 -65
- package/corpus/templates/content/changelog/2026-07-16-content-callouts-can-now-be-reviewed-and-published-to-builder.md +6 -0
- package/corpus/templates/content/changelog/2026-07-16-heading-5-and-heading-6-are-available-from-the-editor-slash-.md +6 -0
- package/corpus/templates/content/changelog/2026-07-16-organize-every-workspace-through-a-customizable-files-databa.md +6 -0
- package/corpus/templates/content/parity/matrix.md +2 -1
- package/corpus/templates/content/parity/matrix.ts +37 -1
- package/corpus/templates/content/scripts/dev-database.mjs +7 -5
- package/corpus/templates/content/server/db/schema.ts +113 -40
- package/corpus/templates/content/server/lib/document-context.ts +15 -1
- package/corpus/templates/content/server/lib/notion-sync.ts +6 -0
- package/corpus/templates/content/server/plugins/db.ts +153 -0
- package/corpus/templates/content/shared/api.ts +17 -3
- package/corpus/templates/content/shared/builder-mdx.ts +163 -16
- package/corpus/templates/design/.agents/skills/design-templates/SKILL.md +59 -0
- package/corpus/templates/design/AGENTS.md +6 -1
- package/corpus/templates/design/actions/create-design-from-template.ts +19 -7
- package/corpus/templates/design/actions/list-design-templates.ts +69 -21
- package/corpus/templates/design/actions/navigate.ts +2 -2
- package/corpus/templates/design/actions/view-screen.ts +15 -2
- package/corpus/templates/design/agent-native.app-skill.json +5 -0
- package/corpus/templates/design/app/components/design/design-canvas/external-preview.ts +7 -3
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +281 -56
- package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +14 -2
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +3 -2
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -3
- package/corpus/templates/design/app/i18n-data.ts +21 -2
- package/corpus/templates/design/app/i18n-template-feature.ts +218 -10
- package/corpus/templates/design/app/pages/Index.tsx +195 -24
- package/corpus/templates/design/app/pages/Templates.tsx +144 -55
- package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +12 -1
- package/corpus/templates/design/changelog/2026-07-14-templates-now-appear-in-the-new-design-picker-with-previews-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-15-prototype-print-and-download-buttons-now-work-in-preview.md +6 -0
- package/corpus/templates/design/changelog/2026-07-15-templates-now-open-immediately-after-copying-even-while-the-.md +6 -0
- package/corpus/templates/design/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/mail/AGENTS.md +23 -18
- package/corpus/templates/mail/actions/bulk-archive.ts +32 -28
- package/corpus/templates/mail/actions/mark-read.ts +131 -20
- package/corpus/templates/mail/actions/mark-thread-read.ts +1 -1
- package/corpus/templates/mail/actions/move-email.ts +30 -24
- package/corpus/templates/mail/actions/send-email.ts +73 -68
- package/corpus/templates/mail/changelog/2026-07-15-unread-inbox-cleanup-now-completes-reliably.md +6 -0
- package/corpus/templates/mail/server/handlers/emails.ts +218 -209
- package/corpus/templates/mail/server/lib/bulk-mark-read.ts +30 -0
- package/corpus/templates/mail/server/lib/email-state.ts +198 -113
- package/corpus/templates/mail/server/lib/google-auth.ts +218 -25
- package/corpus/templates/mail/server/lib/jobs.ts +69 -74
- package/corpus/templates/mail/server/lib/local-email-store.ts +265 -0
- package/corpus/templates/mail/server/plugins/agent-chat.ts +6 -0
- package/corpus/templates/slides/actions/extract-pdf.ts +1 -1
- package/corpus/templates/slides/actions/import-file.ts +4 -1
- package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +9 -12
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +29 -21
- package/corpus/templates/slides/app/i18n/ar-SA.ts +1 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +1 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
- package/corpus/templates/slides/app/i18n/es-ES.ts +1 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +1 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +1 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +1 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +1 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +1 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +1 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/slides/changelog/2026-07-15-image-search-and-generation-controls-now-use-the-registered-.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-15-pdf-deck-references-can-be-imported-for-slide-inspiration-ag.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-15-stable-style-inspector-dock.md +6 -0
- package/dist/cli/content-local.d.ts +1 -0
- package/dist/cli/content-local.d.ts.map +1 -1
- package/dist/cli/content-local.js +75 -17
- package/dist/cli/content-local.js.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills-content/content-skill.d.ts +1 -1
- package/dist/cli/skills-content/content-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/content-skill.js +36 -25
- package/dist/cli/skills-content/content-skill.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +47 -14
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +5 -0
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +7 -0
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +8 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +4 -0
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +10 -3
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -1
- package/dist/client/composer/ComposerPlusMenu.js +58 -6
- package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
- package/dist/client/composer/asset-picker-url.d.ts +16 -0
- package/dist/client/composer/asset-picker-url.d.ts.map +1 -0
- package/dist/client/composer/asset-picker-url.js +64 -0
- package/dist/client/composer/asset-picker-url.js.map +1 -0
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +17 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +6 -1
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/local-artifacts/index.d.ts +10 -0
- package/dist/local-artifacts/index.d.ts.map +1 -1
- package/dist/local-artifacts/index.js +39 -0
- package/dist/local-artifacts/index.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/docs/content/local-file-mode.mdx +99 -489
- package/docs/content/locales/ar-SA/local-file-mode.mdx +35 -490
- package/docs/content/locales/ar-SA/template-content.mdx +10 -24
- package/docs/content/locales/de-DE/local-file-mode.mdx +37 -491
- package/docs/content/locales/de-DE/template-content.mdx +10 -24
- package/docs/content/locales/es-ES/local-file-mode.mdx +35 -493
- package/docs/content/locales/es-ES/template-content.mdx +10 -24
- package/docs/content/locales/fr-FR/local-file-mode.mdx +38 -491
- package/docs/content/locales/fr-FR/template-content.mdx +10 -24
- package/docs/content/locales/hi-IN/local-file-mode.mdx +33 -492
- package/docs/content/locales/hi-IN/template-content.mdx +10 -24
- package/docs/content/locales/ja-JP/local-file-mode.mdx +36 -492
- package/docs/content/locales/ja-JP/template-content.mdx +10 -24
- package/docs/content/locales/ko-KR/local-file-mode.mdx +35 -490
- package/docs/content/locales/ko-KR/template-content.mdx +10 -24
- package/docs/content/locales/pt-BR/local-file-mode.mdx +35 -493
- package/docs/content/locales/pt-BR/template-content.mdx +10 -24
- package/docs/content/locales/zh-CN/local-file-mode.mdx +31 -489
- package/docs/content/locales/zh-CN/template-content.mdx +9 -24
- package/docs/content/locales/zh-TW/local-file-mode.mdx +31 -489
- package/docs/content/locales/zh-TW/template-content.mdx +9 -24
- package/docs/content/template-content.mdx +26 -42
- package/package.json +1 -1
- 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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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,
|