@agent-native/core 0.90.4 → 0.90.7
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/README.md +34 -7
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/docs/content/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +1 -1
- package/corpus/core/docs/content/toolkit-agent-ux.mdx +1 -1
- package/corpus/core/docs/content/toolkit-app-adapters.mdx +1 -1
- package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +1 -1
- package/corpus/core/docs/content/toolkit-collaboration.mdx +1 -1
- package/corpus/core/docs/content/toolkit-command-navigation.mdx +2 -2
- package/corpus/core/docs/content/toolkit-comments-review.mdx +1 -1
- package/corpus/core/docs/content/toolkit-history.mdx +1 -1
- package/corpus/core/docs/content/toolkit-observability.mdx +1 -1
- package/corpus/core/docs/content/toolkit-org-team.mdx +1 -1
- package/corpus/core/docs/content/toolkit-resources.mdx +1 -1
- package/corpus/core/docs/content/toolkit-settings.mdx +1 -1
- package/corpus/core/docs/content/toolkit-setup-connections.mdx +1 -1
- package/corpus/core/docs/content/toolkit-sharing-ui.mdx +1 -1
- package/corpus/core/docs/content/toolkit-sharing.mdx +1 -1
- package/corpus/core/docs/content/toolkit-shell-hooks.mdx +1 -1
- package/corpus/core/docs/content/toolkit-ui.mdx +1 -1
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/durable-background.ts +18 -18
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +8 -2
- package/corpus/core/src/agent/engine/anthropic-engine.ts +11 -1
- package/corpus/core/src/agent/production-agent.ts +22 -11
- package/corpus/core/src/agent/run-manager.ts +17 -6
- package/corpus/core/src/agent/run-store.ts +16 -11
- package/corpus/core/src/cli/design-connect.ts +16 -2
- package/corpus/core/src/client/KeepTabOpenNotice.tsx +20 -15
- package/corpus/core/src/client/RunStuckBanner.tsx +14 -13
- package/corpus/core/src/client/agent-chat-adapter.ts +28 -17
- package/corpus/core/src/client/use-db-sync.ts +99 -1
- package/corpus/core/src/client/use-run-stuck-detection.ts +8 -5
- package/corpus/core/src/collab/client.ts +49 -4
- package/corpus/core/src/deploy/build.ts +103 -0
- package/corpus/core/src/server/core-routes-plugin.ts +137 -8
- package/corpus/templates/clips/changelog/2026-07-07-faster-local-whisper-dictation-start.md +6 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_speech.rs +311 -31
- package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +2 -0
- package/corpus/templates/content/AGENTS.md +1 -0
- package/corpus/templates/content/actions/_database-source-utils.ts +73 -8
- package/corpus/templates/content/actions/_database-utils.ts +2 -1
- package/corpus/templates/content/actions/prepare-builder-source-review.ts +20 -1
- package/corpus/templates/content/actions/stage-builder-source-bulk-update.ts +663 -0
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +33 -7
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +53 -4
- package/corpus/templates/content/app/components/editor/database/settings.tsx +24 -0
- package/corpus/templates/content/app/hooks/use-content-database.ts +70 -1
- package/corpus/templates/content/app/hooks/use-document-properties.ts +63 -5
- package/corpus/templates/content/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/content/app/i18n-data.ts +31 -0
- package/corpus/templates/content/changelog/2026-07-01-builder-source-rows-can-be-staged-in-bulk-with-a-reviewable.md +6 -0
- package/corpus/templates/content/changelog/2026-07-07-builder-backed-database-fields-now-edit-like-normal-content-fields.md +6 -0
- package/corpus/templates/content/parity/matrix.md +24 -24
- package/corpus/templates/content/parity/matrix.ts +2 -0
- package/corpus/templates/content/shared/api.ts +59 -4
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +9 -0
- package/corpus/templates/design/actions/connect-localhost.ts +26 -3
- package/corpus/templates/design/actions/open-visual-edit.ts +4 -37
- package/corpus/templates/design/actions/read-source-file.ts +28 -0
- package/corpus/templates/design/actions/update-file.ts +76 -7
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +207 -11
- package/corpus/templates/design/app/components/design/EditPanel.tsx +4 -0
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +387 -25
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1110 -88
- package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +368 -16
- package/corpus/templates/design/app/components/design/edit-panel/fill-gradient-helpers.ts +24 -0
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +27 -6
- package/corpus/templates/design/app/components/design/edit-panel/position-helpers.ts +18 -0
- package/corpus/templates/design/app/components/design/edit-panel/stroke-properties.tsx +5 -4
- package/corpus/templates/design/app/components/design/multi-screen/handle-hit-zones.ts +124 -0
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +23 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/design/app/i18n-data.ts +19 -0
- package/corpus/templates/design/changelog/2026-07-07-dragging-a-free-floating-element-into-a-layout-column-or-row.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-dragging-a-repeated-list-item-like-a-to-do-card-generated-fr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-dragging-an-element-onto-a-button-or-chip-s-middle-no-longer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-elements-dropped-into-another-board-shape-now-stay-exactly-w.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-fixed-drag-reordering-elements-within-a-screen-no-longer-sil.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-fixed-dragging-an-element-from-a-screen-onto-the-canvas-now-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-fixed-dragging-elements-between-screens-into-ai-generated-co.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-fixed-moving-elements-between-screens-no-longer-bakes-intern.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-fixed-the-cross-screen-drop-indicator-now-points-at-the-corr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-fixed-the-zoom-menu-no-longer-leaves-the-canvas-unresponsive.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-keeps-bridge-access-when-opening-previousl.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-now-keeps-the-live-app-connection-authenti.md +6 -0
- package/corpus/templates/design/changelog/2026-07-07-text-drawn-on-the-canvas-is-now-readable-white-instead-of-in.md +6 -0
- package/corpus/templates/design/server/source-workspace.ts +27 -3
- package/corpus/templates/design/shared/board-file.ts +359 -0
- package/corpus/templates/design/shared/breakpoint-media.ts +21 -3
- package/corpus/templates/design/shared/code-layer.ts +145 -10
- package/dist/agent/durable-background.d.ts +12 -12
- package/dist/agent/durable-background.js +18 -18
- package/dist/agent/durable-background.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +8 -2
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +11 -1
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/production-agent.d.ts +2 -2
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +18 -11
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +7 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +6 -1
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +1 -1
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +15 -10
- package/dist/agent/run-store.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +12 -2
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/client/KeepTabOpenNotice.d.ts +9 -10
- package/dist/client/KeepTabOpenNotice.d.ts.map +1 -1
- package/dist/client/KeepTabOpenNotice.js +8 -4
- package/dist/client/KeepTabOpenNotice.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +14 -13
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +25 -17
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +18 -0
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +88 -1
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/client/use-run-stuck-detection.d.ts +1 -1
- package/dist/client/use-run-stuck-detection.d.ts.map +1 -1
- package/dist/client/use-run-stuck-detection.js +6 -4
- package/dist/client/use-run-stuck-detection.js.map +1 -1
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +43 -4
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/deploy/build.d.ts +1 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +57 -0
- package/dist/deploy/build.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/core-routes-plugin.d.ts +10 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +103 -9
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/docs/content/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/de-DE/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/es-ES/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +1 -1
- package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +1 -1
- package/docs/content/toolkit-agent-ux.mdx +1 -1
- package/docs/content/toolkit-app-adapters.mdx +1 -1
- package/docs/content/toolkit-collaboration-ui.mdx +1 -1
- package/docs/content/toolkit-collaboration.mdx +1 -1
- package/docs/content/toolkit-command-navigation.mdx +2 -2
- package/docs/content/toolkit-comments-review.mdx +1 -1
- package/docs/content/toolkit-history.mdx +1 -1
- package/docs/content/toolkit-observability.mdx +1 -1
- package/docs/content/toolkit-org-team.mdx +1 -1
- package/docs/content/toolkit-resources.mdx +1 -1
- package/docs/content/toolkit-settings.mdx +1 -1
- package/docs/content/toolkit-setup-connections.mdx +1 -1
- package/docs/content/toolkit-sharing-ui.mdx +1 -1
- package/docs/content/toolkit-sharing.mdx +1 -1
- package/docs/content/toolkit-shell-hooks.mdx +1 -1
- package/docs/content/toolkit-ui.mdx +1 -1
- package/package.json +1 -1
|
@@ -26,6 +26,8 @@ const databaseMessages = {
|
|
|
26
26
|
bestWhenSameKindAdditionalRows:
|
|
27
27
|
"Best when this collection has the same kind of records and should appear as additional rows.",
|
|
28
28
|
builderSpace: "Builder space",
|
|
29
|
+
builderBulkUpdateNotStaged: "Builder bulk update not staged",
|
|
30
|
+
builderBulkUpdateStaged: "Builder bulk update staged",
|
|
29
31
|
builderUpdateFailed: "Builder update failed",
|
|
30
32
|
builderWriteModeWasNotChanged: "Builder write mode was not changed",
|
|
31
33
|
builderBodiesReadyLocally: "Builder article bodies are ready locally.",
|
|
@@ -111,6 +113,7 @@ const databaseMessages = {
|
|
|
111
113
|
nextMonth: "Next month",
|
|
112
114
|
nextTimelineRange: "Next timeline range",
|
|
113
115
|
noRowsMatchThisView: "No rows match this view",
|
|
116
|
+
editFilesForSelectedRows: "Edit files for selected rows",
|
|
114
117
|
oneFileOrMediaLinkPerLine: "One file or media link per line",
|
|
115
118
|
previewPageTitle: "Preview page title",
|
|
116
119
|
pickDetailsBecomeColumns:
|
|
@@ -470,6 +473,8 @@ const databaseMessagesByLocale = {
|
|
|
470
473
|
addProperty: "添加属性",
|
|
471
474
|
back: "返回",
|
|
472
475
|
builderSpace: "Builder 空间",
|
|
476
|
+
builderBulkUpdateNotStaged: "Builder 批量更新未暂存",
|
|
477
|
+
builderBulkUpdateStaged: "Builder 批量更新已暂存",
|
|
473
478
|
builderUpdateFailed: "Builder 更新失败",
|
|
474
479
|
builderWriteModeWasNotChanged: "Builder 写入模式未更改",
|
|
475
480
|
closeDatabaseSettings: "关闭数据库设置",
|
|
@@ -505,6 +510,7 @@ const databaseMessagesByLocale = {
|
|
|
505
510
|
nextMonth: "下个月",
|
|
506
511
|
nextTimelineRange: "下一个时间线范围",
|
|
507
512
|
noRowsMatchThisView: "没有行匹配此视图",
|
|
513
|
+
editFilesForSelectedRows: "编辑所选行的文件",
|
|
508
514
|
oneFileOrMediaLinkPerLine: "每行一个文件或媒体链接",
|
|
509
515
|
previewPageTitle: "预览页面标题",
|
|
510
516
|
previousDatabasePage: "上一页数据库页面",
|
|
@@ -621,6 +627,8 @@ const databaseMessagesByLocale = {
|
|
|
621
627
|
addProperty: "Añadir propiedad",
|
|
622
628
|
back: "Atrás",
|
|
623
629
|
builderSpace: "Espacio de Builder",
|
|
630
|
+
builderBulkUpdateNotStaged: "Actualización masiva de Builder no preparada",
|
|
631
|
+
builderBulkUpdateStaged: "Actualización masiva de Builder preparada",
|
|
624
632
|
builderUpdateFailed: "Falló la actualización de Builder",
|
|
625
633
|
builderWriteModeWasNotChanged:
|
|
626
634
|
"No se cambió el modo de escritura de Builder",
|
|
@@ -661,6 +669,7 @@ const databaseMessagesByLocale = {
|
|
|
661
669
|
nextMonth: "Mes siguiente",
|
|
662
670
|
nextTimelineRange: "Rango de cronología siguiente",
|
|
663
671
|
noRowsMatchThisView: "Ninguna fila coincide con esta vista",
|
|
672
|
+
editFilesForSelectedRows: "Editar archivos de las filas seleccionadas",
|
|
664
673
|
oneFileOrMediaLinkPerLine: "Un archivo o enlace multimedia por línea",
|
|
665
674
|
previewPageTitle: "Título de página de vista previa",
|
|
666
675
|
previousDatabasePage: "Página de base de datos anterior",
|
|
@@ -779,6 +788,8 @@ const databaseMessagesByLocale = {
|
|
|
779
788
|
addProperty: "Ajouter une propriété",
|
|
780
789
|
back: "Retour",
|
|
781
790
|
builderSpace: "Espace Builder",
|
|
791
|
+
builderBulkUpdateNotStaged: "Mise à jour groupée Builder non préparée",
|
|
792
|
+
builderBulkUpdateStaged: "Mise à jour groupée Builder préparée",
|
|
782
793
|
builderUpdateFailed: "Échec de la mise à jour Builder",
|
|
783
794
|
builderWriteModeWasNotChanged: "Le mode d’écriture Builder n’a pas changé",
|
|
784
795
|
closeDatabaseSettings: "Fermer les paramètres de base de données",
|
|
@@ -818,6 +829,7 @@ const databaseMessagesByLocale = {
|
|
|
818
829
|
nextMonth: "Mois suivant",
|
|
819
830
|
nextTimelineRange: "Plage chronologique suivante",
|
|
820
831
|
noRowsMatchThisView: "Aucune ligne ne correspond à cette vue",
|
|
832
|
+
editFilesForSelectedRows: "Modifier les fichiers des lignes sélectionnées",
|
|
821
833
|
oneFileOrMediaLinkPerLine: "Un fichier ou lien média par ligne",
|
|
822
834
|
previewPageTitle: "Titre de la page d’aperçu",
|
|
823
835
|
previousDatabasePage: "Page de base de données précédente",
|
|
@@ -936,6 +948,9 @@ const databaseMessagesByLocale = {
|
|
|
936
948
|
addProperty: "Eigenschaft hinzufügen",
|
|
937
949
|
back: "Zurück",
|
|
938
950
|
builderSpace: "Builder-Bereich",
|
|
951
|
+
builderBulkUpdateNotStaged:
|
|
952
|
+
"Builder-Massenaktualisierung nicht bereitgestellt",
|
|
953
|
+
builderBulkUpdateStaged: "Builder-Massenaktualisierung bereitgestellt",
|
|
939
954
|
builderUpdateFailed: "Builder-Aktualisierung fehlgeschlagen",
|
|
940
955
|
builderWriteModeWasNotChanged: "Builder-Schreibmodus wurde nicht geändert",
|
|
941
956
|
closeDatabaseSettings: "Datenbankeinstellungen schließen",
|
|
@@ -975,6 +990,7 @@ const databaseMessagesByLocale = {
|
|
|
975
990
|
nextMonth: "Nächster Monat",
|
|
976
991
|
nextTimelineRange: "Nächster Zeitachsenbereich",
|
|
977
992
|
noRowsMatchThisView: "Keine Zeilen entsprechen dieser Ansicht",
|
|
993
|
+
editFilesForSelectedRows: "Dateien für ausgewählte Zeilen bearbeiten",
|
|
978
994
|
oneFileOrMediaLinkPerLine: "Eine Datei oder ein Medienlink pro Zeile",
|
|
979
995
|
previewPageTitle: "Titel der Seitenvorschau",
|
|
980
996
|
previousDatabasePage: "Vorherige Datenbankseite",
|
|
@@ -1090,6 +1106,8 @@ const databaseMessagesByLocale = {
|
|
|
1090
1106
|
addProperty: "プロパティを追加",
|
|
1091
1107
|
back: "戻る",
|
|
1092
1108
|
builderSpace: "Builder スペース",
|
|
1109
|
+
builderBulkUpdateNotStaged: "Builder 一括更新はステージングされていません",
|
|
1110
|
+
builderBulkUpdateStaged: "Builder 一括更新をステージングしました",
|
|
1093
1111
|
builderUpdateFailed: "Builder の更新に失敗しました",
|
|
1094
1112
|
builderWriteModeWasNotChanged:
|
|
1095
1113
|
"Builder の書き込みモードは変更されませんでした",
|
|
@@ -1128,6 +1146,7 @@ const databaseMessagesByLocale = {
|
|
|
1128
1146
|
nextMonth: "次の月",
|
|
1129
1147
|
nextTimelineRange: "次のタイムライン範囲",
|
|
1130
1148
|
noRowsMatchThisView: "このビューに一致する行はありません",
|
|
1149
|
+
editFilesForSelectedRows: "選択した行のファイルを編集",
|
|
1131
1150
|
oneFileOrMediaLinkPerLine: "1 行に 1 つのファイルまたはメディアリンク",
|
|
1132
1151
|
previewPageTitle: "プレビューページタイトル",
|
|
1133
1152
|
previousDatabasePage: "前のデータベースページ",
|
|
@@ -1243,6 +1262,8 @@ const databaseMessagesByLocale = {
|
|
|
1243
1262
|
addProperty: "속성 추가",
|
|
1244
1263
|
back: "뒤로",
|
|
1245
1264
|
builderSpace: "Builder 공간",
|
|
1265
|
+
builderBulkUpdateNotStaged: "Builder 대량 업데이트가 스테이징되지 않음",
|
|
1266
|
+
builderBulkUpdateStaged: "Builder 대량 업데이트가 스테이징됨",
|
|
1246
1267
|
builderUpdateFailed: "Builder 업데이트 실패",
|
|
1247
1268
|
builderWriteModeWasNotChanged: "Builder 쓰기 모드가 변경되지 않았습니다",
|
|
1248
1269
|
closeDatabaseSettings: "데이터베이스 설정 닫기",
|
|
@@ -1279,6 +1300,7 @@ const databaseMessagesByLocale = {
|
|
|
1279
1300
|
nextMonth: "다음 달",
|
|
1280
1301
|
nextTimelineRange: "다음 타임라인 범위",
|
|
1281
1302
|
noRowsMatchThisView: "이 보기에 일치하는 행이 없습니다",
|
|
1303
|
+
editFilesForSelectedRows: "선택한 행의 파일 편집",
|
|
1282
1304
|
oneFileOrMediaLinkPerLine: "한 줄에 파일 또는 미디어 링크 하나",
|
|
1283
1305
|
previewPageTitle: "미리보기 페이지 제목",
|
|
1284
1306
|
previousDatabasePage: "이전 데이터베이스 페이지",
|
|
@@ -1396,6 +1418,8 @@ const databaseMessagesByLocale = {
|
|
|
1396
1418
|
addProperty: "Adicionar propriedade",
|
|
1397
1419
|
back: "Voltar",
|
|
1398
1420
|
builderSpace: "Espaço do Builder",
|
|
1421
|
+
builderBulkUpdateNotStaged: "Atualização em massa do Builder não preparada",
|
|
1422
|
+
builderBulkUpdateStaged: "Atualização em massa do Builder preparada",
|
|
1399
1423
|
builderUpdateFailed: "Falha na atualização do Builder",
|
|
1400
1424
|
builderWriteModeWasNotChanged: "O modo de escrita do Builder não mudou",
|
|
1401
1425
|
closeDatabaseSettings: "Fechar configurações do banco de dados",
|
|
@@ -1435,6 +1459,7 @@ const databaseMessagesByLocale = {
|
|
|
1435
1459
|
nextMonth: "Próximo mês",
|
|
1436
1460
|
nextTimelineRange: "Próximo intervalo da linha do tempo",
|
|
1437
1461
|
noRowsMatchThisView: "Nenhuma linha corresponde a esta visualização",
|
|
1462
|
+
editFilesForSelectedRows: "Editar arquivos das linhas selecionadas",
|
|
1438
1463
|
oneFileOrMediaLinkPerLine: "Um arquivo ou link de mídia por linha",
|
|
1439
1464
|
previewPageTitle: "Título da página de prévia",
|
|
1440
1465
|
previousDatabasePage: "Página anterior do banco de dados",
|
|
@@ -1547,6 +1572,8 @@ const databaseMessagesByLocale = {
|
|
|
1547
1572
|
addProperty: "प्रॉपर्टी जोड़ें",
|
|
1548
1573
|
back: "वापस",
|
|
1549
1574
|
builderSpace: "Builder स्पेस",
|
|
1575
|
+
builderBulkUpdateNotStaged: "Builder बल्क अपडेट स्टेज नहीं हुआ",
|
|
1576
|
+
builderBulkUpdateStaged: "Builder बल्क अपडेट स्टेज हुआ",
|
|
1550
1577
|
builderUpdateFailed: "Builder अपडेट विफल रहा",
|
|
1551
1578
|
builderWriteModeWasNotChanged: "Builder लेखन मोड नहीं बदला गया",
|
|
1552
1579
|
closeDatabaseSettings: "डेटाबेस सेटिंग्स बंद करें",
|
|
@@ -1583,6 +1610,7 @@ const databaseMessagesByLocale = {
|
|
|
1583
1610
|
nextMonth: "अगला महीना",
|
|
1584
1611
|
nextTimelineRange: "अगला टाइमलाइन रेंज",
|
|
1585
1612
|
noRowsMatchThisView: "इस दृश्य से कोई पंक्ति मेल नहीं खाती",
|
|
1613
|
+
editFilesForSelectedRows: "चयनित पंक्तियों की फ़ाइलें संपादित करें",
|
|
1586
1614
|
oneFileOrMediaLinkPerLine: "हर पंक्ति में एक फ़ाइल या मीडिया लिंक",
|
|
1587
1615
|
previewPageTitle: "प्रीव्यू पेज शीर्षक",
|
|
1588
1616
|
previousDatabasePage: "पिछला डेटाबेस पेज",
|
|
@@ -1694,6 +1722,8 @@ const databaseMessagesByLocale = {
|
|
|
1694
1722
|
addProperty: "إضافة خاصية",
|
|
1695
1723
|
back: "رجوع",
|
|
1696
1724
|
builderSpace: "مساحة Builder",
|
|
1725
|
+
builderBulkUpdateNotStaged: "لم يتم تجهيز تحديث Builder المجمع",
|
|
1726
|
+
builderBulkUpdateStaged: "تم تجهيز تحديث Builder المجمع",
|
|
1697
1727
|
builderUpdateFailed: "فشل تحديث Builder",
|
|
1698
1728
|
builderWriteModeWasNotChanged: "لم يتغير وضع كتابة Builder",
|
|
1699
1729
|
closeDatabaseSettings: "إغلاق إعدادات قاعدة البيانات",
|
|
@@ -1730,6 +1760,7 @@ const databaseMessagesByLocale = {
|
|
|
1730
1760
|
nextMonth: "الشهر التالي",
|
|
1731
1761
|
nextTimelineRange: "نطاق المخطط الزمني التالي",
|
|
1732
1762
|
noRowsMatchThisView: "لا توجد صفوف تطابق هذا العرض",
|
|
1763
|
+
editFilesForSelectedRows: "تحرير ملفات الصفوف المحددة",
|
|
1733
1764
|
oneFileOrMediaLinkPerLine: "ملف أو رابط وسائط واحد في كل سطر",
|
|
1734
1765
|
previewPageTitle: "عنوان صفحة المعاينة",
|
|
1735
1766
|
previousDatabasePage: "صفحة قاعدة البيانات السابقة",
|
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
This generated matrix tracks whether high-value Content UI operations use the same action surface agents can call, or have an explicit exception. Edit `matrix.ts`, then regenerate this file.
|
|
4
4
|
|
|
5
|
-
| ID | Surface | User-visible action | Status | Actions
|
|
6
|
-
| ---------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------- | --------------------- |
|
|
7
|
-
| comments.threads | comments | List, add, reply, resolve, reopen, and delete comment threads | action-backed | `add-comment`, `delete-comment`, `list-comments`, `update-comment`
|
|
8
|
-
| database.lifecycle-and-trash | database | Create, soft-delete, restore, list, and inspect content databases | action-backed | `create-content-database`, `create-inline-content-database`, `delete-content-database`, `get-content-database`, `list-content-databases`, `list-trashed-content-databases`, `restore-content-database`
|
|
9
|
-
| database.properties-and-view-config | database | Configure properties, values, ordering, and saved views | action-backed | `configure-document-property`, `delete-document-property`, `duplicate-document-property`, `list-document-properties`, `reorder-document-property`, `set-document-property`, `update-content-database-view`
|
|
10
|
-
| database.rows | database | Add, duplicate, move, open, and delete database rows | action-backed | `add-database-item`, `delete-database-items`, `delete-document`, `duplicate-database-items`, `duplicate-database-item`, `move-database-item`, `set-document-property`
|
|
11
|
-
| editor.agent-assist-prompts | editor | Ask AI from slash generation or comment context | client-assist | -
|
|
12
|
-
| editor.client-formatting-and-insertions | editor | Rich text formatting, selection state, slash block insertion, and copy actions | client-only-ephemeral | -
|
|
13
|
-
| editor.document-body-and-title | editor | Edit document title, body, icon, image alt text, and precise text | action-backed | `edit-document`, `pull-document`, `set-image-alt-text`, `transcribe-media`, `update-document`
|
|
14
|
-
| local-files.components-workspace | local-files | Register, list, and write local MDX component workspaces | host-only | `list-local-component-files`, `register-local-component-workspace`, `write-local-component-file`
|
|
15
|
-
| local-files.host-folder-handles | local-files | Choose, persist, remove, and write trusted local folder handles | host-only | -
|
|
16
|
-
| local-files.import-export-mounted-folder | local-files | Import, check, export, push, and remove local folder source files | action-backed | `export-content-source`, `import-content-source`, `remove-local-file-source`
|
|
17
|
-
| notion.route-backed-document-sync | source-sync | Notion document sync status, link, unlink, pull, push, resolve, create, search, and disconnect | action-backed | `connect-notion-status`, `create-and-link-notion-page`, `disconnect-notion`, `link-notion-page`, `list-notion-links`, `pull-notion-page`, `push-notion-page`, `refresh-notion-sync-status`, `resolve-notion-sync-conflict`, `search-notion-pages`, `sync-notion-comments`, `unlink-notion-page`
|
|
18
|
-
| sharing.document-discoverability-and-export | sharing | Share, hide from search, export, and reveal documents | action-backed | `export-document`, `reveal-local-source-file`, `set-document-discoverability`, `share-local-file-document`
|
|
19
|
-
| sharing.os-reveal-local-source | sharing | Reveal a local source file in the system file manager | host-only | `reveal-local-source-file`
|
|
20
|
-
| sidebar.chrome-state | sidebar | Collapse sections and resize the sidebar | client-only-ephemeral | -
|
|
21
|
-
| sidebar.document-tree-crud | sidebar | Create, delete, move, favorite, list, search, and open pages | action-backed | `create-document`, `delete-document`, `get-document`, `list-documents`, `move-document`, `search-documents`, `update-document`
|
|
22
|
-
| sidebar.navigation-and-screen-context | sidebar | Navigate between documents and expose current screen context | action-equivalent | `navigate`, `view-screen`
|
|
23
|
-
| source-sync.builder-body-hydration-worker | source-sync | Process queued Builder CMS body hydration work | action-backed | `process-builder-body-hydration`
|
|
24
|
-
| source-sync.builder-cms-review-and-write-gates | source-sync | Review, stage, validate, and execute Builder CMS source writes | action-backed | `execute-builder-source-batch`, `execute-builder-source-execution`, `prepare-builder-source-execution`, `prepare-builder-source-review`, `review-content-database-source-change-set`, `set-content-database-source-write-mode`, `stage-builder-revision`, `validate-builder-source-execution`
|
|
25
|
-
| source-sync.builder-documents | source-sync | List, pull, check, and push Builder docs/blog MDX documents | action-backed | `check-builder-doc`, `list-builder-docs`, `pull-builder-doc`, `push-builder-doc`
|
|
26
|
-
| source-sync.database-source-bindings | source-sync | Attach, inspect, refresh, disconnect, join, and bind database sources | action-backed | `add-content-database-source-field-property`, `attach-content-database-source`, `bind-content-database-source-field`, `change-content-database-source-role`, `disconnect-content-database-source`, `get-content-database-source`, `list-builder-cms-models`, `refresh-content-database-source`, `suggest-source-join-key`
|
|
27
|
-
| source-sync.provider-api-and-staged-datasets | source-sync | Inspect provider APIs and stage/query/delete large provider datasets | action-backed | `delete-staged-dataset`, `list-staged-datasets`, `provider-api-catalog`, `provider-api-docs`, `provider-api-request`, `query-staged-dataset`
|
|
28
|
-
| versions.history-and-restore | versions | Open version history and restore a previous document version | action-backed | `list-document-versions`, `restore-document-version`
|
|
5
|
+
| ID | Surface | User-visible action | Status | Actions | UI entrypoints | Durable effect | Exception / gap | Reliability risk | Spine priority | Test coverage | Coverage refs | Eval scenarios | Follow-up |
|
|
6
|
+
| ---------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | -------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------------ |
|
|
7
|
+
| comments.threads | comments | List, add, reply, resolve, reopen, and delete comment threads | action-backed | `add-comment`, `delete-comment`, `list-comments`, `update-comment` | `app/components/editor/CommentsSidebar.tsx`, `app/hooks/use-comments.ts` | Comment threads, replies, anchors, mentions, resolution state, and deletion are stored through comment actions. | - | - | P0 | seeded | - | - | - |
|
|
8
|
+
| database.lifecycle-and-trash | database | Create, soft-delete, restore, list, and inspect content databases | action-backed | `create-content-database`, `create-inline-content-database`, `delete-content-database`, `get-content-database`, `list-content-databases`, `list-trashed-content-databases`, `restore-content-database` | `app/components/editor/SlashCommandMenu.tsx`, `app/hooks/use-content-database.ts`, `app/hooks/use-documents.ts` | Database pages and database records are created, read, soft-deleted, restored, and listed. | - | - | P0 | covered | `actions/content-database-lifecycle.db.test.ts` | `database-source-scope` | - |
|
|
9
|
+
| database.properties-and-view-config | database | Configure properties, values, ordering, and saved views | action-backed | `configure-document-property`, `delete-document-property`, `duplicate-document-property`, `list-document-properties`, `reorder-document-property`, `set-document-property`, `update-content-database-view` | `app/components/editor/DocumentProperties.tsx`, `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/database/DatabaseView.tsx`, `app/hooks/use-document-properties.ts` | Property schemas, property values, property order, filters, sorts, grouping, hidden columns, view type, and view settings are stored. | - | - | P0 | covered | `actions/bind-content-database-source-field.db.test.ts`, `actions/content-database-source-actions.test.ts`, `actions/resync-content-database-source.db.test.ts` | `database-source-scope` | - |
|
|
10
|
+
| database.rows | database | Add, duplicate, move, open, and delete database rows | action-backed | `add-database-item`, `delete-database-items`, `delete-document`, `duplicate-database-items`, `duplicate-database-item`, `move-database-item`, `set-document-property` | `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/database/DatabaseView.tsx` | Database row backing documents and row ordering are created, duplicated, moved, edited, and deleted. | - | - | P0 | covered | `actions/database-row-batch-actions.db.test.ts`, `parity/__tests__/database-row-batch-reliability.test.ts` | `database-bulk-row-reliability` | - |
|
|
11
|
+
| editor.agent-assist-prompts | editor | Ask AI from slash generation or comment context | client-assist | - | `app/components/editor/SlashCommandMenu.tsx`, `app/components/editor/CommentsSidebar.tsx` | No direct durable mutation; the prompt asks the agent to use document actions when it decides to write. | - | - | P1 | none | - | - | - |
|
|
12
|
+
| editor.client-formatting-and-insertions | editor | Rich text formatting, selection state, slash block insertion, and copy actions | client-only-ephemeral | - | `app/components/editor/BubbleToolbar.tsx`, `app/components/editor/SlashCommandMenu.tsx`, `app/components/editor/DocumentToolbar.tsx` | - | - | - | P1 | none | - | - | - |
|
|
13
|
+
| editor.document-body-and-title | editor | Edit document title, body, icon, image alt text, and precise text | action-backed | `edit-document`, `pull-document`, `set-image-alt-text`, `transcribe-media`, `update-document` | `app/components/editor/DocumentEditor.tsx`, `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/extensions/ImageBlock.tsx`, `app/components/editor/SlashCommandMenu.tsx` | Document content, title, icon, image metadata, and text replacements are saved to the same document source. | - | - | P0 | covered | `actions/content-database-lifecycle.db.test.ts`, `actions/_local-file-documents.test.ts` | `document-search-edit` | - |
|
|
14
|
+
| local-files.components-workspace | local-files | Register, list, and write local MDX component workspaces | host-only | `list-local-component-files`, `register-local-component-workspace`, `write-local-component-file` | `app/routes/_app.local-files.tsx`, `actions/register-local-component-workspace.ts`, `actions/list-local-component-files.ts`, `actions/write-local-component-file.ts` | Trusted local component workspace registration and component file reads/writes support local MDX previews. | Workspace registration depends on a trusted Desktop folder path and is intentionally hidden with agentTool: false. | - | P1 | seeded | - | - | Local folder exception/docs PR |
|
|
15
|
+
| local-files.host-folder-handles | local-files | Choose, persist, remove, and write trusted local folder handles | host-only | - | `app/routes/_app.local-files.tsx` | Host directory handles and browser/Desktop write permissions are managed outside SQL action state. | Mounted local folders require browser/Desktop host handles that agents cannot safely or portably hold as normal tools. | - | P0 | none | - | - | Local folder exception/docs PR |
|
|
16
|
+
| local-files.import-export-mounted-folder | local-files | Import, check, export, push, and remove local folder source files | action-backed | `export-content-source`, `import-content-source`, `remove-local-file-source` | `app/routes/_app.local-files.tsx`, `actions/import-content-source.ts`, `actions/export-content-source.ts` | Local Markdown/MDX source files are imported into Content documents, editable Content documents are exported back to source-friendly files, and imported source entries can be removed without deleting files on disk. | - | - | P0 | covered | `actions/_local-file-documents.test.ts` | `local-file-source-truth` | - |
|
|
17
|
+
| notion.route-backed-document-sync | source-sync | Notion document sync status, link, unlink, pull, push, resolve, create, search, and disconnect | action-backed | `connect-notion-status`, `create-and-link-notion-page`, `disconnect-notion`, `link-notion-page`, `list-notion-links`, `pull-notion-page`, `push-notion-page`, `refresh-notion-sync-status`, `resolve-notion-sync-conflict`, `search-notion-pages`, `sync-notion-comments`, `unlink-notion-page` | `app/hooks/use-notion.ts`, `app/components/editor/DocumentToolbar.tsx`, `app/components/editor/NotionSyncBar.tsx`, `app/components/editor/DocumentEditor.tsx` | Notion connection state, page search, link metadata, and local/remote document body sync state are read or mutated through Content actions. | Notion OAuth auth-url and callback routes remain route-shaped because they initiate and receive browser redirects rather than normal app data mutations. | - | P0 | covered | `parity/__tests__/matrix-route-gap-classify.test.ts` | - | - |
|
|
18
|
+
| sharing.document-discoverability-and-export | sharing | Share, hide from search, export, and reveal documents | action-backed | `export-document`, `reveal-local-source-file`, `set-document-discoverability`, `share-local-file-document` | `app/components/editor/DocumentToolbar.tsx`, `app/hooks/use-documents.ts` | Search discoverability, shareable copies, exports, and OS reveal requests are managed through Content actions. | - | - | P0 | covered | `actions/_local-file-documents.test.ts` | `local-file-source-truth` | - |
|
|
19
|
+
| sharing.os-reveal-local-source | sharing | Reveal a local source file in the system file manager | host-only | `reveal-local-source-file` | `app/components/editor/DocumentToolbar.tsx`, `actions/reveal-local-source-file.ts` | - | OS reveal depends on trusted local host capabilities and should not spend agent tool surface or imply portable hosted behavior. | - | P2 | seeded | - | - | Local folder exception/docs PR |
|
|
20
|
+
| sidebar.chrome-state | sidebar | Collapse sections and resize the sidebar | client-only-ephemeral | - | `app/components/sidebar/DocumentSidebar.tsx`, `app/components/layout/Layout.tsx` | - | - | - | P2 | none | - | - | - |
|
|
21
|
+
| sidebar.document-tree-crud | sidebar | Create, delete, move, favorite, list, search, and open pages | action-backed | `create-document`, `delete-document`, `get-document`, `list-documents`, `move-document`, `search-documents`, `update-document` | `app/components/sidebar/DocumentSidebar.tsx`, `app/components/sidebar/DocumentTreeItem.tsx`, `app/hooks/use-documents.ts` | Document tree rows and document metadata are created, updated, deleted, moved, searched, or read. | - | - | P0 | covered | `actions/content-database-lifecycle.db.test.ts`, `actions/_local-file-documents.test.ts` | `document-search-edit` | - |
|
|
22
|
+
| sidebar.navigation-and-screen-context | sidebar | Navigate between documents and expose current screen context | action-equivalent | `navigate`, `view-screen` | `app/components/sidebar/DocumentSidebar.tsx`, `actions/navigate.ts`, `actions/view-screen.ts` | Application navigation state is updated or read so the agent can reason about the user's current page/view. | Human navigation is router-local, while agent navigation/screen inspection uses application-state actions to produce the same workspace orientation effect. | - | P1 | seeded | - | - | - |
|
|
23
|
+
| source-sync.builder-body-hydration-worker | source-sync | Process queued Builder CMS body hydration work | action-backed | `process-builder-body-hydration` | `app/components/editor/DocumentEditor.tsx`, `app/components/editor/database/DatabaseView.tsx`, `app/hooks/use-content-database.ts` | Queued Builder body hydration entries are processed into readable Content document/database body state. | This action is intentionally hidden from the model with agentTool: false because it is an internal bounded queue worker; agents should use source refresh, review, and execution actions rather than manually driving hydration internals. | - | P0 | covered | `actions/_database-source-utils.test.ts` | - | - |
|
|
24
|
+
| source-sync.builder-cms-review-and-write-gates | source-sync | Review, stage, validate, and execute Builder CMS source writes | action-backed | `execute-builder-source-batch`, `execute-builder-source-execution`, `prepare-builder-source-execution`, `prepare-builder-source-review`, `review-content-database-source-change-set`, `set-content-database-source-write-mode`, `stage-builder-source-bulk-update`, `stage-builder-revision`, `validate-builder-source-execution` | `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/database/DatabaseView.tsx`, `app/components/editor/database-sources/BuilderSourceReviewDialog.tsx` | Builder source write mode, staged reviews, validation records, and bounded execution records are created through guarded actions. | - | - | P0 | covered | `actions/builder-source-review-gates.db.test.ts`, `actions/execute-builder-source-execution.test.ts`, `actions/stage-builder-source-bulk-update.db.test.ts` | `builder-source-review-readonly` | - |
|
|
25
|
+
| source-sync.builder-documents | source-sync | List, pull, check, and push Builder docs/blog MDX documents | action-backed | `check-builder-doc`, `list-builder-docs`, `pull-builder-doc`, `push-builder-doc` | `actions/list-builder-docs.ts`, `actions/pull-builder-doc.ts`, `actions/check-builder-doc.ts`, `actions/push-builder-doc.ts` | Builder docs/blog entries can be read into Content, checked locally, and pushed through guarded Builder document actions. | - | - | P1 | seeded | - | - | - |
|
|
26
|
+
| source-sync.database-source-bindings | source-sync | Attach, inspect, refresh, disconnect, join, and bind database sources | action-backed | `add-content-database-source-field-property`, `attach-content-database-source`, `bind-content-database-source-field`, `change-content-database-source-role`, `disconnect-content-database-source`, `get-content-database-source`, `list-builder-cms-models`, `refresh-content-database-source`, `suggest-source-join-key` | `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/DocumentProperties.tsx`, `app/components/editor/database/DatabaseView.tsx`, `app/hooks/use-content-database.ts` | Mounted database source metadata, fields, source role, join keys, and source-field/property bindings are stored and refreshed. | - | - | P0 | covered | `actions/bind-content-database-source-field.db.test.ts`, `actions/content-database-source-actions.test.ts`, `actions/resync-content-database-source.db.test.ts` | `database-source-scope` | - |
|
|
27
|
+
| source-sync.provider-api-and-staged-datasets | source-sync | Inspect provider APIs and stage/query/delete large provider datasets | action-backed | `delete-staged-dataset`, `list-staged-datasets`, `provider-api-catalog`, `provider-api-docs`, `provider-api-request`, `query-staged-dataset` | `actions/provider-api-catalog.ts`, `actions/provider-api-docs.ts`, `actions/provider-api-request.ts`, `actions/query-staged-dataset.ts` | Provider API metadata and staged dataset scratch storage support scoped agent/source analysis. | - | - | P1 | seeded | - | - | - |
|
|
28
|
+
| versions.history-and-restore | versions | Open version history and restore a previous document version | action-backed | `list-document-versions`, `restore-document-version` | `app/components/editor/VersionHistoryPanel.tsx`, `app/hooks/use-document-versions.ts` | Document versions are listed and selected versions can restore the document while snapshotting current state. | - | - | P0 | seeded | - | - | - |
|
|
@@ -357,6 +357,7 @@ export const parityMatrix: ParityRow[] = [
|
|
|
357
357
|
"prepare-builder-source-review",
|
|
358
358
|
"review-content-database-source-change-set",
|
|
359
359
|
"set-content-database-source-write-mode",
|
|
360
|
+
"stage-builder-source-bulk-update",
|
|
360
361
|
"stage-builder-revision",
|
|
361
362
|
"validate-builder-source-execution",
|
|
362
363
|
],
|
|
@@ -368,6 +369,7 @@ export const parityMatrix: ParityRow[] = [
|
|
|
368
369
|
coverageRefs: [
|
|
369
370
|
"actions/builder-source-review-gates.db.test.ts",
|
|
370
371
|
"actions/execute-builder-source-execution.test.ts",
|
|
372
|
+
"actions/stage-builder-source-bulk-update.db.test.ts",
|
|
371
373
|
],
|
|
372
374
|
evalScenarioIds: ["builder-source-review-readonly"],
|
|
373
375
|
},
|
|
@@ -894,6 +894,16 @@ export interface ExecuteBuilderSourceExecutionRequest {
|
|
|
894
894
|
confirmUnpublish?: boolean;
|
|
895
895
|
}
|
|
896
896
|
|
|
897
|
+
export interface PrepareBuilderSourceReviewRequest {
|
|
898
|
+
databaseId?: string;
|
|
899
|
+
documentId?: string;
|
|
900
|
+
sourceId?: string;
|
|
901
|
+
changeSetIds?: string[];
|
|
902
|
+
pushModeConfirmation?: ContentDatabaseSourcePushMode;
|
|
903
|
+
publicationTransition?: BuilderCmsPublicationTransitionIntent;
|
|
904
|
+
confirmUnpublish?: boolean;
|
|
905
|
+
}
|
|
906
|
+
|
|
897
907
|
export interface ExecuteBuilderSourceBatchTransition {
|
|
898
908
|
publicationTransition?: BuilderCmsPublicationTransitionIntent;
|
|
899
909
|
confirmUnpublish?: boolean;
|
|
@@ -938,13 +948,58 @@ export interface SetContentDatabaseSourceWriteModeRequest {
|
|
|
938
948
|
allowPublishWrites?: boolean;
|
|
939
949
|
}
|
|
940
950
|
|
|
941
|
-
export
|
|
951
|
+
export type StageBuilderSourceBulkUpdateRowStatus =
|
|
952
|
+
| "staged"
|
|
953
|
+
| "unchanged"
|
|
954
|
+
| "blocked";
|
|
955
|
+
|
|
956
|
+
export interface StageBuilderSourceBulkUpdateFieldRequest {
|
|
957
|
+
propertyId?: string;
|
|
958
|
+
localFieldKey?: string;
|
|
959
|
+
sourceFieldKey?: string;
|
|
960
|
+
value: DocumentPropertyValue;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
export interface StageBuilderSourceBulkUpdateRequest {
|
|
942
964
|
databaseId?: string;
|
|
943
965
|
documentId?: string;
|
|
944
966
|
sourceId?: string;
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
967
|
+
itemIds?: string[];
|
|
968
|
+
documentIds?: string[];
|
|
969
|
+
field: StageBuilderSourceBulkUpdateFieldRequest;
|
|
970
|
+
dryRun?: boolean;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
export interface StageBuilderSourceBulkUpdateRowResult {
|
|
974
|
+
itemId: string;
|
|
975
|
+
documentId: string;
|
|
976
|
+
title: string;
|
|
977
|
+
status: StageBuilderSourceBulkUpdateRowStatus;
|
|
978
|
+
message?: string;
|
|
979
|
+
changeSetId?: string;
|
|
980
|
+
fieldChange?: ContentDatabaseSourceFieldChange;
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
export interface StageBuilderSourceBulkUpdateResponse {
|
|
984
|
+
dryRun: boolean;
|
|
985
|
+
databaseId: string;
|
|
986
|
+
documentId: string;
|
|
987
|
+
sourceId: string;
|
|
988
|
+
field: {
|
|
989
|
+
propertyId: string | null;
|
|
990
|
+
propertyName: string | null;
|
|
991
|
+
localFieldKey: string;
|
|
992
|
+
sourceFieldKey: string;
|
|
993
|
+
sourceFieldLabel: string;
|
|
994
|
+
};
|
|
995
|
+
summary: {
|
|
996
|
+
total: number;
|
|
997
|
+
staged: number;
|
|
998
|
+
unchanged: number;
|
|
999
|
+
blocked: number;
|
|
1000
|
+
};
|
|
1001
|
+
rows: StageBuilderSourceBulkUpdateRowResult[];
|
|
1002
|
+
review: ContentDatabaseSourceReviewPayload | null;
|
|
948
1003
|
}
|
|
949
1004
|
|
|
950
1005
|
export type BuilderCmsWriteEffect =
|
|
@@ -643,6 +643,15 @@ regeneration is slow, expensive, and regresses unrelated parts.
|
|
|
643
643
|
`data-screen`, or `#` anchors (see Multi-screen prototypes & navigation).
|
|
644
644
|
- Never hardcode colors — always reference CSS custom properties (no raw
|
|
645
645
|
`text-white` / `bg-black` / hex literals in markup).
|
|
646
|
+
- Never define or rely on a CSS custom property starting with `--agent-native-`
|
|
647
|
+
in generated design content. That prefix (plus `--design-editor-`) is
|
|
648
|
+
reserved for editor-internal state (selection chrome, editor-chrome scale
|
|
649
|
+
compensation, clipboard/surface tokens) — the editor strips any property
|
|
650
|
+
under those prefixes before persisting a cross-screen style capture
|
|
651
|
+
(`isEditorInternalCssVar` in `app/pages/DesignEditor.tsx`), so a design that
|
|
652
|
+
defines its own theming under that namespace would silently lose those
|
|
653
|
+
values on a cross-screen move. Use `--color-*`, `--font-*`, or another
|
|
654
|
+
design-owned prefix for tokens/tweaks instead.
|
|
646
655
|
- Never use the v3 `bg-gradient-to-*` classes — use v4 `bg-linear-to-*`.
|
|
647
656
|
- Never use `<script>` blocks with raw DOM manipulation — use Alpine.js directives
|
|
648
657
|
- Never inline `onclick="..."` handlers — use `@click`
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
|
|
1
3
|
import { defineAction } from "@agent-native/core";
|
|
2
4
|
import {
|
|
3
5
|
getRequestOrgId,
|
|
4
6
|
getRequestUserEmail,
|
|
5
7
|
} from "@agent-native/core/server/request-context";
|
|
6
8
|
import { eq } from "drizzle-orm";
|
|
7
|
-
import { nanoid } from "nanoid";
|
|
8
9
|
import { z } from "zod";
|
|
9
10
|
|
|
10
11
|
import { getDb, schema } from "../server/db/index.js";
|
|
@@ -76,6 +77,20 @@ function normalizeBridgeUrl(value: string): string {
|
|
|
76
77
|
return parsed.toString().replace(/\/$/, "");
|
|
77
78
|
}
|
|
78
79
|
|
|
80
|
+
function stableConnectionId(
|
|
81
|
+
devServerUrl: string,
|
|
82
|
+
rootPath: string | undefined,
|
|
83
|
+
ownerEmail: string,
|
|
84
|
+
orgId: string | null,
|
|
85
|
+
) {
|
|
86
|
+
const hash = crypto
|
|
87
|
+
.createHash("sha256")
|
|
88
|
+
.update(`${ownerEmail}\n${orgId ?? ""}\n${devServerUrl}\n${rootPath ?? ""}`)
|
|
89
|
+
.digest("base64url")
|
|
90
|
+
.slice(0, 16);
|
|
91
|
+
return `localhost_${hash}`;
|
|
92
|
+
}
|
|
93
|
+
|
|
79
94
|
export default defineAction({
|
|
80
95
|
description:
|
|
81
96
|
"Register or refresh a localhost Design source connection produced by `agent-native design connect`. Stores the dev server URL, bridge URL, route manifest, and operation capabilities so the UI can later list local-code artboards.",
|
|
@@ -126,9 +141,9 @@ export default defineAction({
|
|
|
126
141
|
run: async (args) => {
|
|
127
142
|
const ownerEmail = getRequestUserEmail();
|
|
128
143
|
if (!ownerEmail) throw new Error("no authenticated user");
|
|
144
|
+
const orgId = getRequestOrgId() ?? null;
|
|
129
145
|
|
|
130
146
|
const now = new Date().toISOString();
|
|
131
|
-
const id = args.id ?? nanoid();
|
|
132
147
|
const db = getDb();
|
|
133
148
|
const devServerUrl = normalizeUrl(args.devServerUrl, "devServerUrl");
|
|
134
149
|
const bridgeUrl = args.bridgeUrl
|
|
@@ -152,6 +167,14 @@ export default defineAction({
|
|
|
152
167
|
routes,
|
|
153
168
|
generatedAt: args.routeManifest?.generatedAt ?? now,
|
|
154
169
|
};
|
|
170
|
+
const id =
|
|
171
|
+
args.id ??
|
|
172
|
+
stableConnectionId(
|
|
173
|
+
devServerUrl,
|
|
174
|
+
routeManifest.rootPath,
|
|
175
|
+
ownerEmail,
|
|
176
|
+
orgId,
|
|
177
|
+
);
|
|
155
178
|
const capabilities =
|
|
156
179
|
args.capabilities ??
|
|
157
180
|
DESIGN_BRIDGE_OPERATIONS.map((operation) => ({
|
|
@@ -193,7 +216,7 @@ export default defineAction({
|
|
|
193
216
|
status: args.status,
|
|
194
217
|
lastSeenAt: now,
|
|
195
218
|
ownerEmail,
|
|
196
|
-
orgId
|
|
219
|
+
orgId,
|
|
197
220
|
updatedAt: now,
|
|
198
221
|
};
|
|
199
222
|
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import crypto from "node:crypto";
|
|
2
|
-
|
|
3
1
|
import { defineAction, embedApp } from "@agent-native/core";
|
|
4
2
|
import { writeAppState } from "@agent-native/core/application-state";
|
|
5
3
|
import { buildDeepLink } from "@agent-native/core/server";
|
|
6
|
-
import { getRequestUserEmail } from "@agent-native/core/server/request-context";
|
|
7
4
|
import { eq } from "drizzle-orm";
|
|
8
5
|
import { z } from "zod";
|
|
9
6
|
|
|
@@ -89,28 +86,6 @@ function isLoopbackUrl(value: string): boolean {
|
|
|
89
86
|
);
|
|
90
87
|
}
|
|
91
88
|
|
|
92
|
-
/**
|
|
93
|
-
* Derive a stable per-user connection id for a devServerUrl + rootPath pair.
|
|
94
|
-
*
|
|
95
|
-
* The owner email is embedded in the hash so two users with an identical
|
|
96
|
-
* devServerUrl + rootPath (common with devcontainers/codespaces images) derive
|
|
97
|
-
* DIFFERENT ids and never collide on the shared primary key. Connections
|
|
98
|
-
* created before user scoping keep their old ids; those users simply
|
|
99
|
-
* reconnect fresh under the new per-user id.
|
|
100
|
-
*/
|
|
101
|
-
function stableConnectionId(
|
|
102
|
-
devServerUrl: string,
|
|
103
|
-
rootPath: string | undefined,
|
|
104
|
-
ownerEmail: string,
|
|
105
|
-
) {
|
|
106
|
-
const hash = crypto
|
|
107
|
-
.createHash("sha256")
|
|
108
|
-
.update(`${ownerEmail}\n${devServerUrl}\n${rootPath ?? ""}`)
|
|
109
|
-
.digest("base64url")
|
|
110
|
-
.slice(0, 16);
|
|
111
|
-
return `localhost_${hash}`;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
89
|
function designOverviewDeepLink(designId: string): string {
|
|
115
90
|
return buildDeepLink({
|
|
116
91
|
app: "design",
|
|
@@ -254,19 +229,11 @@ export default defineAction({
|
|
|
254
229
|
}) ?? [],
|
|
255
230
|
generatedAt: new Date().toISOString(),
|
|
256
231
|
};
|
|
257
|
-
let connectionId = args.connectionId;
|
|
258
|
-
if (!connectionId) {
|
|
259
|
-
const ownerEmail = getRequestUserEmail();
|
|
260
|
-
if (!ownerEmail) throw new Error("no authenticated user");
|
|
261
|
-
connectionId = stableConnectionId(
|
|
262
|
-
devServerUrl,
|
|
263
|
-
args.rootPath,
|
|
264
|
-
ownerEmail,
|
|
265
|
-
);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
232
|
const connection = await connectLocalhostAction.run({
|
|
269
|
-
|
|
233
|
+
// Let connect-localhost be the single source of truth for stable
|
|
234
|
+
// per-user/per-org id derivation. Duplicating it here can create a second
|
|
235
|
+
// tokenless row after the CLI self-registers the bridge token.
|
|
236
|
+
id: args.connectionId,
|
|
270
237
|
name: args.name,
|
|
271
238
|
devServerUrl,
|
|
272
239
|
bridgeUrl: args.bridgeUrl,
|