@agent-native/creative-context 0.4.0 → 0.5.1
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 +51 -9
- package/agent-native.package.json +4 -0
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +8 -0
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/list-context-memberships.d.ts +11 -0
- package/dist/actions/list-context-memberships.d.ts.map +1 -0
- package/dist/actions/list-context-memberships.js +47 -0
- package/dist/actions/list-context-memberships.js.map +1 -0
- package/dist/actions/list-creative-contexts.d.ts +12 -0
- package/dist/actions/list-creative-contexts.d.ts.map +1 -0
- package/dist/actions/list-creative-contexts.js +28 -0
- package/dist/actions/list-creative-contexts.js.map +1 -0
- package/dist/actions/manage-context-membership.d.ts +64 -0
- package/dist/actions/manage-context-membership.d.ts.map +1 -0
- package/dist/actions/manage-context-membership.js +70 -0
- package/dist/actions/manage-context-membership.js.map +1 -0
- package/dist/actions/manage-context-pack.d.ts +3 -0
- package/dist/actions/manage-context-pack.js +6 -0
- package/dist/actions/manage-context-pack.js.map +1 -1
- package/dist/actions/manage-context-source.js +4 -11
- package/dist/actions/manage-context-source.js.map +1 -1
- package/dist/actions/manage-creative-context.d.ts +28 -0
- package/dist/actions/manage-creative-context.d.ts.map +1 -0
- package/dist/actions/manage-creative-context.js +65 -0
- package/dist/actions/manage-creative-context.js.map +1 -0
- package/dist/actions/process-context-purge.d.ts +16 -1
- package/dist/actions/process-context-purge.js +2 -1
- package/dist/actions/process-context-purge.js.map +1 -1
- package/dist/actions/search-creative-context.d.ts +1 -0
- package/dist/actions/search-creative-context.js +2 -1
- package/dist/actions/search-creative-context.js.map +1 -1
- package/dist/client/CreativeContextChip.d.ts +7 -2
- package/dist/client/CreativeContextChip.d.ts.map +1 -1
- package/dist/client/CreativeContextChip.js +42 -7
- package/dist/client/CreativeContextChip.js.map +1 -1
- package/dist/client/CreativeContextPanel.d.ts.map +1 -1
- package/dist/client/CreativeContextPanel.js +406 -89
- package/dist/client/CreativeContextPanel.js.map +1 -1
- package/dist/client/CreativeContextShareTab.d.ts +56 -0
- package/dist/client/CreativeContextShareTab.d.ts.map +1 -0
- package/dist/client/CreativeContextShareTab.js +213 -0
- package/dist/client/CreativeContextShareTab.js.map +1 -0
- package/dist/client/actions.d.ts +210 -0
- package/dist/client/actions.d.ts.map +1 -1
- package/dist/client/actions.js +318 -0
- package/dist/client/actions.js.map +1 -1
- package/dist/client/application-state.d.ts +2 -0
- package/dist/client/application-state.d.ts.map +1 -1
- package/dist/client/application-state.js +25 -2
- package/dist/client/application-state.js.map +1 -1
- package/dist/client/index.d.ts +4 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/messages.d.ts +1 -1
- package/dist/client/messages.d.ts.map +1 -1
- package/dist/client/messages.js +77 -0
- package/dist/client/messages.js.map +1 -1
- package/dist/connectors/types.d.ts +2 -2
- package/dist/connectors/types.d.ts.map +1 -1
- package/dist/schema/index.d.ts +1592 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +95 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/migrations.d.ts.map +1 -1
- package/dist/schema/migrations.js +80 -0
- package/dist/schema/migrations.js.map +1 -1
- package/dist/server/generation-artifact-access.js +2 -0
- package/dist/server/generation-artifact-access.js.map +1 -1
- package/dist/server/generation-context.d.ts +12 -4
- package/dist/server/generation-context.d.ts.map +1 -1
- package/dist/server/generation-context.js +129 -7
- package/dist/server/generation-context.js.map +1 -1
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +16 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/isolated-a2a.d.ts +3 -0
- package/dist/server/isolated-a2a.d.ts.map +1 -1
- package/dist/server/isolated-a2a.js +3 -1
- package/dist/server/isolated-a2a.js.map +1 -1
- package/dist/server/media.d.ts +1 -1
- package/dist/server/media.d.ts.map +1 -1
- package/dist/server/media.js +24 -9
- package/dist/server/media.js.map +1 -1
- package/dist/server/native-resource-capture.d.ts +78 -0
- package/dist/server/native-resource-capture.d.ts.map +1 -0
- package/dist/server/native-resource-capture.js +94 -0
- package/dist/server/native-resource-capture.js.map +1 -0
- package/dist/server/public-serialization.js +1 -1
- package/dist/server/public-serialization.js.map +1 -1
- package/dist/server/retrieval.d.ts +1 -0
- package/dist/server/retrieval.d.ts.map +1 -1
- package/dist/server/retrieval.js +2 -0
- package/dist/server/retrieval.js.map +1 -1
- package/dist/server/safe-native-preview.d.ts +15 -0
- package/dist/server/safe-native-preview.d.ts.map +1 -0
- package/dist/server/safe-native-preview.js +149 -0
- package/dist/server/safe-native-preview.js.map +1 -0
- package/dist/store/brand.d.ts.map +1 -1
- package/dist/store/brand.js +2 -16
- package/dist/store/brand.js.map +1 -1
- package/dist/store/content.d.ts +1 -0
- package/dist/store/content.d.ts.map +1 -1
- package/dist/store/content.js +84 -20
- package/dist/store/content.js.map +1 -1
- package/dist/store/contexts.d.ts +216 -0
- package/dist/store/contexts.d.ts.map +1 -0
- package/dist/store/contexts.js +1341 -0
- package/dist/store/contexts.js.map +1 -0
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/packs.d.ts +3 -0
- package/dist/store/packs.d.ts.map +1 -1
- package/dist/store/packs.js +126 -9
- package/dist/store/packs.js.map +1 -1
- package/dist/store/purge.d.ts.map +1 -1
- package/dist/store/purge.js +103 -6
- package/dist/store/purge.js.map +1 -1
- package/dist/store/sources.d.ts.map +1 -1
- package/dist/store/sources.js +2 -15
- package/dist/store/sources.js.map +1 -1
- package/dist/store/suggestions.d.ts.map +1 -1
- package/dist/store/suggestions.js +3 -1
- package/dist/store/suggestions.js.map +1 -1
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +9 -1
- package/dist/types.js.map +1 -1
- package/docs/skills/creative-context/SKILL.md +13 -5
- package/package.json +2 -2
- package/src/actions/index.ts +8 -0
- package/src/actions/job-public-serialization.spec.ts +21 -0
- package/src/actions/list-context-memberships.ts +56 -0
- package/src/actions/list-creative-contexts.spec.ts +38 -0
- package/src/actions/list-creative-contexts.ts +32 -0
- package/src/actions/manage-context-membership.ts +80 -0
- package/src/actions/manage-context-pack.ts +6 -0
- package/src/actions/manage-context-source.ts +8 -11
- package/src/actions/manage-creative-context.ts +73 -0
- package/src/actions/process-context-purge.ts +4 -1
- package/src/actions/search-creative-context.ts +2 -1
- package/src/client/CreativeContextChip.spec.ts +59 -0
- package/src/client/CreativeContextChip.tsx +95 -14
- package/src/client/CreativeContextPanel.tsx +1947 -885
- package/src/client/CreativeContextShareTab.spec.ts +70 -0
- package/src/client/CreativeContextShareTab.tsx +657 -0
- package/src/client/actions.spec.ts +177 -0
- package/src/client/actions.ts +566 -0
- package/src/client/application-state.spec.ts +5 -0
- package/src/client/application-state.ts +30 -2
- package/src/client/index.ts +33 -0
- package/src/client/messages.ts +95 -0
- package/src/connectors/types.ts +6 -8
- package/src/eval/library-flow.acceptance.spec.tsx +1 -0
- package/src/schema/index.ts +116 -0
- package/src/schema/migrations.ts +80 -0
- package/src/server/generation-artifact-access.ts +1 -0
- package/src/server/generation-context-a2a.spec.ts +133 -0
- package/src/server/generation-context.ts +153 -7
- package/src/server/index.spec.ts +15 -0
- package/src/server/index.ts +16 -0
- package/src/server/isolated-a2a.ts +4 -1
- package/src/server/media.spec.ts +30 -2
- package/src/server/media.ts +31 -12
- package/src/server/native-resource-capture.spec.ts +121 -0
- package/src/server/native-resource-capture.ts +198 -0
- package/src/server/public-serialization.spec.ts +1 -0
- package/src/server/public-serialization.ts +1 -1
- package/src/server/retrieval.ts +3 -0
- package/src/server/safe-native-preview.spec.ts +29 -0
- package/src/server/safe-native-preview.ts +200 -0
- package/src/store/access.integration.spec.ts +1116 -0
- package/src/store/brand.ts +2 -21
- package/src/store/content.ts +217 -17
- package/src/store/contexts.ts +1826 -0
- package/src/store/index.ts +1 -0
- package/src/store/packs.ts +279 -24
- package/src/store/purge.ts +139 -6
- package/src/store/sources.ts +2 -18
- package/src/store/suggestions.ts +3 -1
- package/src/types.ts +95 -0
package/src/client/index.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export {
|
|
2
2
|
CREATIVE_CONTEXT_ACTIONS,
|
|
3
|
+
parseContextMemberships,
|
|
4
|
+
parseContextMembershipsForResource,
|
|
5
|
+
parseCreativeContexts,
|
|
6
|
+
useContextMemberships,
|
|
3
7
|
useCreativeContextBrandProfile,
|
|
8
|
+
useCreativeContexts,
|
|
4
9
|
useCreativeContextGooglePickerSession,
|
|
5
10
|
useCreativeContextImportStatus,
|
|
6
11
|
useCreativeContextPack,
|
|
@@ -8,16 +13,30 @@ export {
|
|
|
8
13
|
useCreativeContextSearch,
|
|
9
14
|
useCreativeContextSources,
|
|
10
15
|
useManageCreativeContextSource,
|
|
16
|
+
useManageCreativeContext,
|
|
17
|
+
useManageContextMembership,
|
|
11
18
|
usePreviewCreativeContextImport,
|
|
12
19
|
usePublishCreativeContextBrandDna,
|
|
13
20
|
useRefreshCreativeContextSource,
|
|
14
21
|
useReviewCreativeContextItems,
|
|
15
22
|
useStartCreativeContextImport,
|
|
16
23
|
type GetBrandProfileResult,
|
|
24
|
+
type CreativeContextMembership,
|
|
25
|
+
type CreativeContextMembershipRank,
|
|
26
|
+
type CreativeContextPolicy,
|
|
27
|
+
type CreativeContextSummary,
|
|
17
28
|
type GetContextImportStatusResult,
|
|
18
29
|
type GetContextPackResult,
|
|
19
30
|
type GetGooglePickerSessionResult,
|
|
20
31
|
type ListContextPacksResult,
|
|
32
|
+
type ListContextMembershipsParams,
|
|
33
|
+
type ListContextMembershipsResult,
|
|
34
|
+
type ListCreativeContextsParams,
|
|
35
|
+
type ListCreativeContextsResult,
|
|
36
|
+
type ManageContextMembershipParams,
|
|
37
|
+
type ManageContextMembershipResult,
|
|
38
|
+
type ManageCreativeContextParams,
|
|
39
|
+
type ManageCreativeContextResult,
|
|
21
40
|
type ListContextSourcesParams,
|
|
22
41
|
type ListContextSourcesResult,
|
|
23
42
|
type ManageContextSourceParams,
|
|
@@ -38,6 +57,7 @@ export {
|
|
|
38
57
|
normalizeCreativeContextState,
|
|
39
58
|
readCreativeContextState,
|
|
40
59
|
setCreativeContextMode,
|
|
60
|
+
setSelectedCreativeContext,
|
|
41
61
|
setCreativeContextState,
|
|
42
62
|
setPinnedCreativeContextPack,
|
|
43
63
|
useCreativeContextState,
|
|
@@ -47,12 +67,25 @@ export {
|
|
|
47
67
|
export {
|
|
48
68
|
CreativeContextChip,
|
|
49
69
|
CreativeContextComposerChip,
|
|
70
|
+
resolveCreativeContextChipSelection,
|
|
50
71
|
type CreativeContextChipProps,
|
|
72
|
+
type CreativeContextChipSelection,
|
|
51
73
|
} from "./CreativeContextChip.js";
|
|
52
74
|
export {
|
|
53
75
|
CreativeContextPanel,
|
|
54
76
|
type CreativeContextPanelProps,
|
|
55
77
|
} from "./CreativeContextPanel.js";
|
|
78
|
+
export {
|
|
79
|
+
CreativeContextShareSheet,
|
|
80
|
+
CreativeContextShareTab,
|
|
81
|
+
creativeContextSafePreviewUrl,
|
|
82
|
+
normalizeCreativeContextResources,
|
|
83
|
+
requiresBroaderPublication,
|
|
84
|
+
submitCreativeContextResources,
|
|
85
|
+
type CreativeContextResourceDescriptor,
|
|
86
|
+
type CreativeContextResourcePreview,
|
|
87
|
+
type CreativeContextShareTabProps,
|
|
88
|
+
} from "./CreativeContextShareTab.js";
|
|
56
89
|
export { CreativeContextSettingsLink } from "./CreativeContextSettingsLink.js";
|
|
57
90
|
export {
|
|
58
91
|
createCreativeContextAgentTab,
|
package/src/client/messages.ts
CHANGED
|
@@ -53,6 +53,7 @@ export type CreativeContextMessageKey =
|
|
|
53
53
|
| "personal"
|
|
54
54
|
| "organization"
|
|
55
55
|
| "addSource"
|
|
56
|
+
| "addToContext"
|
|
56
57
|
| "sourceName"
|
|
57
58
|
| "sourceReference"
|
|
58
59
|
| "preview"
|
|
@@ -74,6 +75,12 @@ export type CreativeContextMessageKey =
|
|
|
74
75
|
| "influence"
|
|
75
76
|
| "cancel"
|
|
76
77
|
| "saveFailed"
|
|
78
|
+
| "updateAvailable"
|
|
79
|
+
| "submitUpdate"
|
|
80
|
+
| "submittingUpdate"
|
|
81
|
+
| "submitUpdateTitle"
|
|
82
|
+
| "submitUpdateDescription"
|
|
83
|
+
| "submitUpdateFailed"
|
|
77
84
|
| "chooseFiles"
|
|
78
85
|
| "chooseFolder"
|
|
79
86
|
| "dropFiles"
|
|
@@ -162,6 +169,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
162
169
|
personal: "Personal",
|
|
163
170
|
organization: "Organization",
|
|
164
171
|
addSource: "Add a source",
|
|
172
|
+
addToContext: "Add to context…",
|
|
165
173
|
sourceName: "Source name",
|
|
166
174
|
sourceReference: "Source reference",
|
|
167
175
|
preview: "Preview",
|
|
@@ -183,6 +191,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
183
191
|
influence: "Influence",
|
|
184
192
|
cancel: "Close",
|
|
185
193
|
saveFailed: "Could not save these changes.",
|
|
194
|
+
updateAvailable: "Update available",
|
|
195
|
+
submitUpdate: "Submit update",
|
|
196
|
+
submittingUpdate: "Submitting…",
|
|
197
|
+
submitUpdateTitle: "Submit the latest version?",
|
|
198
|
+
submitUpdateDescription:
|
|
199
|
+
'Capture the current version of "{{name}}" and send it through this context’s approval policy. This may publish it to a broader audience.',
|
|
200
|
+
submitUpdateFailed: "Could not submit the latest version.",
|
|
186
201
|
chooseFiles: "Choose files",
|
|
187
202
|
chooseFolder: "Choose folder",
|
|
188
203
|
dropFiles: "Drop PPTX, DOCX, PDF, or image files here.",
|
|
@@ -263,6 +278,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
263
278
|
personal: "個人",
|
|
264
279
|
organization: "組織",
|
|
265
280
|
addSource: "新增來源",
|
|
281
|
+
addToContext: "新增至脈絡…",
|
|
266
282
|
sourceName: "來源名稱",
|
|
267
283
|
sourceReference: "來源參考",
|
|
268
284
|
preview: "預覽",
|
|
@@ -284,6 +300,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
284
300
|
influence: "影響",
|
|
285
301
|
cancel: "關閉",
|
|
286
302
|
saveFailed: "無法儲存這些變更。",
|
|
303
|
+
updateAvailable: "有可用更新",
|
|
304
|
+
submitUpdate: "提交更新",
|
|
305
|
+
submittingUpdate: "提交中…",
|
|
306
|
+
submitUpdateTitle: "提交最新版本?",
|
|
307
|
+
submitUpdateDescription:
|
|
308
|
+
"擷取「{{name}}」的目前版本,並依此內容環境的核准政策提交。這可能會將其發布給更廣泛的對象。",
|
|
309
|
+
submitUpdateFailed: "無法提交最新版本。",
|
|
287
310
|
chooseFiles: "選擇檔案",
|
|
288
311
|
chooseFolder: "選擇資料夾",
|
|
289
312
|
dropFiles: "將 PPTX、DOCX、PDF 或圖片檔案拖放到這裡。",
|
|
@@ -362,6 +385,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
362
385
|
personal: "个人",
|
|
363
386
|
organization: "组织",
|
|
364
387
|
addSource: "添加来源",
|
|
388
|
+
addToContext: "添加到上下文…",
|
|
365
389
|
sourceName: "来源名称",
|
|
366
390
|
sourceReference: "来源引用",
|
|
367
391
|
preview: "预览",
|
|
@@ -383,6 +407,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
383
407
|
influence: "影响",
|
|
384
408
|
cancel: "关闭",
|
|
385
409
|
saveFailed: "无法保存这些更改。",
|
|
410
|
+
updateAvailable: "有可用更新",
|
|
411
|
+
submitUpdate: "提交更新",
|
|
412
|
+
submittingUpdate: "正在提交…",
|
|
413
|
+
submitUpdateTitle: "提交最新版本?",
|
|
414
|
+
submitUpdateDescription:
|
|
415
|
+
"捕获“{{name}}”的当前版本,并按此上下文的审批策略提交。这可能会将其发布给更广泛的受众。",
|
|
416
|
+
submitUpdateFailed: "无法提交最新版本。",
|
|
386
417
|
chooseFiles: "选择文件",
|
|
387
418
|
chooseFolder: "选择文件夹",
|
|
388
419
|
dropFiles: "将 PPTX、DOCX、PDF 或图片文件拖放到此处。",
|
|
@@ -467,6 +498,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
467
498
|
personal: "Personal",
|
|
468
499
|
organization: "Organización",
|
|
469
500
|
addSource: "Añadir una fuente",
|
|
501
|
+
addToContext: "Añadir al contexto…",
|
|
470
502
|
sourceName: "Nombre de la fuente",
|
|
471
503
|
sourceReference: "Referencia de la fuente",
|
|
472
504
|
preview: "Vista previa",
|
|
@@ -488,6 +520,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
488
520
|
influence: "Influencia",
|
|
489
521
|
cancel: "Cerrar",
|
|
490
522
|
saveFailed: "No se pudieron guardar estos cambios.",
|
|
523
|
+
updateAvailable: "Actualización disponible",
|
|
524
|
+
submitUpdate: "Enviar actualización",
|
|
525
|
+
submittingUpdate: "Enviando…",
|
|
526
|
+
submitUpdateTitle: "¿Enviar la versión más reciente?",
|
|
527
|
+
submitUpdateDescription:
|
|
528
|
+
"Captura la versión actual de «{{name}}» y envíala mediante la política de aprobación de este contexto. Esto puede publicarla para una audiencia más amplia.",
|
|
529
|
+
submitUpdateFailed: "No se pudo enviar la versión más reciente.",
|
|
491
530
|
chooseFiles: "Elegir archivos",
|
|
492
531
|
chooseFolder: "Elegir carpeta",
|
|
493
532
|
dropFiles: "Suelta aquí archivos PPTX, DOCX, PDF o imágenes.",
|
|
@@ -575,6 +614,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
575
614
|
personal: "Personnel",
|
|
576
615
|
organization: "Organisation",
|
|
577
616
|
addSource: "Ajouter une source",
|
|
617
|
+
addToContext: "Ajouter au contexte…",
|
|
578
618
|
sourceName: "Nom de la source",
|
|
579
619
|
sourceReference: "Référence de la source",
|
|
580
620
|
preview: "Aperçu",
|
|
@@ -596,6 +636,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
596
636
|
influence: "Influence",
|
|
597
637
|
cancel: "Fermer",
|
|
598
638
|
saveFailed: "Impossible d’enregistrer ces modifications.",
|
|
639
|
+
updateAvailable: "Mise à jour disponible",
|
|
640
|
+
submitUpdate: "Envoyer la mise à jour",
|
|
641
|
+
submittingUpdate: "Envoi…",
|
|
642
|
+
submitUpdateTitle: "Envoyer la dernière version ?",
|
|
643
|
+
submitUpdateDescription:
|
|
644
|
+
"Capturez la version actuelle de « {{name}} » et soumettez-la à la politique d’approbation de ce contexte. Elle peut être publiée auprès d’un public plus large.",
|
|
645
|
+
submitUpdateFailed: "Impossible d’envoyer la dernière version.",
|
|
599
646
|
chooseFiles: "Choisir des fichiers",
|
|
600
647
|
chooseFolder: "Choisir un dossier",
|
|
601
648
|
dropFiles: "Déposez ici des fichiers PPTX, DOCX, PDF ou image.",
|
|
@@ -683,6 +730,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
683
730
|
personal: "Persönlich",
|
|
684
731
|
organization: "Organisation",
|
|
685
732
|
addSource: "Quelle hinzufügen",
|
|
733
|
+
addToContext: "Zum Kontext hinzufügen…",
|
|
686
734
|
sourceName: "Quellenname",
|
|
687
735
|
sourceReference: "Quellenreferenz",
|
|
688
736
|
preview: "Vorschau",
|
|
@@ -704,6 +752,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
704
752
|
influence: "Einfluss",
|
|
705
753
|
cancel: "Schließen",
|
|
706
754
|
saveFailed: "Diese Änderungen konnten nicht gespeichert werden.",
|
|
755
|
+
updateAvailable: "Aktualisierung verfügbar",
|
|
756
|
+
submitUpdate: "Aktualisierung einreichen",
|
|
757
|
+
submittingUpdate: "Wird eingereicht…",
|
|
758
|
+
submitUpdateTitle: "Neueste Version einreichen?",
|
|
759
|
+
submitUpdateDescription:
|
|
760
|
+
"Erfassen Sie die aktuelle Version von „{{name}}“ und reichen Sie sie gemäß der Freigaberichtlinie dieses Kontexts ein. Dadurch kann sie für ein größeres Publikum veröffentlicht werden.",
|
|
761
|
+
submitUpdateFailed: "Die neueste Version konnte nicht eingereicht werden.",
|
|
707
762
|
chooseFiles: "Dateien auswählen",
|
|
708
763
|
chooseFolder: "Ordner auswählen",
|
|
709
764
|
dropFiles: "PPTX-, DOCX-, PDF- oder Bilddateien hier ablegen.",
|
|
@@ -791,6 +846,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
791
846
|
personal: "個人",
|
|
792
847
|
organization: "組織",
|
|
793
848
|
addSource: "ソースを追加",
|
|
849
|
+
addToContext: "コンテキストに追加…",
|
|
794
850
|
sourceName: "ソース名",
|
|
795
851
|
sourceReference: "ソース参照",
|
|
796
852
|
preview: "プレビュー",
|
|
@@ -812,6 +868,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
812
868
|
influence: "影響",
|
|
813
869
|
cancel: "閉じる",
|
|
814
870
|
saveFailed: "変更を保存できませんでした。",
|
|
871
|
+
updateAvailable: "更新があります",
|
|
872
|
+
submitUpdate: "更新を送信",
|
|
873
|
+
submittingUpdate: "送信中…",
|
|
874
|
+
submitUpdateTitle: "最新バージョンを送信しますか?",
|
|
875
|
+
submitUpdateDescription:
|
|
876
|
+
"「{{name}}」の現在のバージョンを取得し、このコンテキストの承認ポリシーに従って送信します。より広い対象に公開される場合があります。",
|
|
877
|
+
submitUpdateFailed: "最新バージョンを送信できませんでした。",
|
|
815
878
|
chooseFiles: "ファイルを選択",
|
|
816
879
|
chooseFolder: "フォルダを選択",
|
|
817
880
|
dropFiles: "PPTX、DOCX、PDF、画像ファイルをここにドロップします。",
|
|
@@ -898,6 +961,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
898
961
|
personal: "개인",
|
|
899
962
|
organization: "조직",
|
|
900
963
|
addSource: "소스 추가",
|
|
964
|
+
addToContext: "컨텍스트에 추가…",
|
|
901
965
|
sourceName: "소스 이름",
|
|
902
966
|
sourceReference: "소스 참조",
|
|
903
967
|
preview: "미리보기",
|
|
@@ -919,6 +983,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
919
983
|
influence: "영향",
|
|
920
984
|
cancel: "닫기",
|
|
921
985
|
saveFailed: "변경 사항을 저장할 수 없습니다.",
|
|
986
|
+
updateAvailable: "업데이트 있음",
|
|
987
|
+
submitUpdate: "업데이트 제출",
|
|
988
|
+
submittingUpdate: "제출 중…",
|
|
989
|
+
submitUpdateTitle: "최신 버전을 제출할까요?",
|
|
990
|
+
submitUpdateDescription:
|
|
991
|
+
"“{{name}}”의 현재 버전을 캡처하여 이 컨텍스트의 승인 정책에 따라 제출합니다. 더 넓은 대상에게 게시될 수 있습니다.",
|
|
992
|
+
submitUpdateFailed: "최신 버전을 제출할 수 없습니다.",
|
|
922
993
|
chooseFiles: "파일 선택",
|
|
923
994
|
chooseFolder: "폴더 선택",
|
|
924
995
|
dropFiles: "PPTX, DOCX, PDF 또는 이미지 파일을 여기에 놓으세요.",
|
|
@@ -1005,6 +1076,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
1005
1076
|
personal: "Pessoal",
|
|
1006
1077
|
organization: "Organização",
|
|
1007
1078
|
addSource: "Adicionar uma fonte",
|
|
1079
|
+
addToContext: "Adicionar ao contexto…",
|
|
1008
1080
|
sourceName: "Nome da fonte",
|
|
1009
1081
|
sourceReference: "Referência da fonte",
|
|
1010
1082
|
preview: "Prévia",
|
|
@@ -1026,6 +1098,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
1026
1098
|
influence: "Influência",
|
|
1027
1099
|
cancel: "Fechar",
|
|
1028
1100
|
saveFailed: "Não foi possível salvar estas alterações.",
|
|
1101
|
+
updateAvailable: "Atualização disponível",
|
|
1102
|
+
submitUpdate: "Enviar atualização",
|
|
1103
|
+
submittingUpdate: "Enviando…",
|
|
1104
|
+
submitUpdateTitle: "Enviar a versão mais recente?",
|
|
1105
|
+
submitUpdateDescription:
|
|
1106
|
+
"Capture a versão atual de “{{name}}” e envie-a pela política de aprovação deste contexto. Isso pode publicá-la para um público mais amplo.",
|
|
1107
|
+
submitUpdateFailed: "Não foi possível enviar a versão mais recente.",
|
|
1029
1108
|
chooseFiles: "Escolher arquivos",
|
|
1030
1109
|
chooseFolder: "Escolher pasta",
|
|
1031
1110
|
dropFiles: "Solte arquivos PPTX, DOCX, PDF ou imagens aqui.",
|
|
@@ -1109,6 +1188,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
1109
1188
|
personal: "व्यक्तिगत",
|
|
1110
1189
|
organization: "संगठन",
|
|
1111
1190
|
addSource: "स्रोत जोड़ें",
|
|
1191
|
+
addToContext: "कॉन्टेक्स्ट में जोड़ें…",
|
|
1112
1192
|
sourceName: "स्रोत का नाम",
|
|
1113
1193
|
sourceReference: "स्रोत संदर्भ",
|
|
1114
1194
|
preview: "पूर्वावलोकन",
|
|
@@ -1130,6 +1210,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
1130
1210
|
influence: "प्रभाव",
|
|
1131
1211
|
cancel: "बंद करें",
|
|
1132
1212
|
saveFailed: "इन बदलावों को सहेजा नहीं जा सका।",
|
|
1213
|
+
updateAvailable: "अपडेट उपलब्ध है",
|
|
1214
|
+
submitUpdate: "अपडेट सबमिट करें",
|
|
1215
|
+
submittingUpdate: "सबमिट हो रहा है…",
|
|
1216
|
+
submitUpdateTitle: "नवीनतम संस्करण सबमिट करें?",
|
|
1217
|
+
submitUpdateDescription:
|
|
1218
|
+
"“{{name}}” का मौजूदा संस्करण कैप्चर करके इस कॉन्टेक्स्ट की स्वीकृति नीति के अनुसार सबमिट करें। यह बड़े दर्शक वर्ग के लिए प्रकाशित हो सकता है।",
|
|
1219
|
+
submitUpdateFailed: "नवीनतम संस्करण सबमिट नहीं किया जा सका।",
|
|
1133
1220
|
chooseFiles: "फ़ाइलें चुनें",
|
|
1134
1221
|
chooseFolder: "फ़ोल्डर चुनें",
|
|
1135
1222
|
dropFiles: "PPTX, DOCX, PDF या इमेज फ़ाइलें यहाँ छोड़ें।",
|
|
@@ -1213,6 +1300,7 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
1213
1300
|
personal: "شخصي",
|
|
1214
1301
|
organization: "المؤسسة",
|
|
1215
1302
|
addSource: "إضافة مصدر",
|
|
1303
|
+
addToContext: "إضافة إلى السياق…",
|
|
1216
1304
|
sourceName: "اسم المصدر",
|
|
1217
1305
|
sourceReference: "مرجع المصدر",
|
|
1218
1306
|
preview: "معاينة",
|
|
@@ -1234,6 +1322,13 @@ export const creativeContextMessagesByLocale: Record<
|
|
|
1234
1322
|
influence: "التأثير",
|
|
1235
1323
|
cancel: "إغلاق",
|
|
1236
1324
|
saveFailed: "تعذّر حفظ هذه التغييرات.",
|
|
1325
|
+
updateAvailable: "يتوفر تحديث",
|
|
1326
|
+
submitUpdate: "إرسال التحديث",
|
|
1327
|
+
submittingUpdate: "جارٍ الإرسال…",
|
|
1328
|
+
submitUpdateTitle: "إرسال أحدث إصدار؟",
|
|
1329
|
+
submitUpdateDescription:
|
|
1330
|
+
'التقط الإصدار الحالي من "{{name}}" وأرسله وفق سياسة الموافقة لهذا السياق. قد يؤدي ذلك إلى نشره لجمهور أوسع.',
|
|
1331
|
+
submitUpdateFailed: "تعذّر إرسال أحدث إصدار.",
|
|
1237
1332
|
chooseFiles: "اختيار ملفات",
|
|
1238
1333
|
chooseFolder: "اختيار مجلد",
|
|
1239
1334
|
dropFiles: "أفلت ملفات PPTX أو DOCX أو PDF أو الصور هنا.",
|
package/src/connectors/types.ts
CHANGED
|
@@ -5,16 +5,14 @@ import type {
|
|
|
5
5
|
} from "@agent-native/core/private-blob";
|
|
6
6
|
import type { ProviderApiRuntime } from "@agent-native/core/provider-api";
|
|
7
7
|
|
|
8
|
-
import type {
|
|
8
|
+
import type {
|
|
9
|
+
ContextSourceKind,
|
|
10
|
+
NormalizedContextItem,
|
|
11
|
+
UpstreamAccess,
|
|
12
|
+
} from "../types.js";
|
|
9
13
|
import type { RenderedPageProvider } from "./rendered-page.js";
|
|
10
14
|
|
|
11
|
-
export type ContextConnectorKind =
|
|
12
|
-
| "manual"
|
|
13
|
-
| "upload"
|
|
14
|
-
| "google-slides"
|
|
15
|
-
| "figma"
|
|
16
|
-
| "notion"
|
|
17
|
-
| "website";
|
|
15
|
+
export type ContextConnectorKind = Exclude<ContextSourceKind, "native-app">;
|
|
18
16
|
|
|
19
17
|
export interface ContextConnectorInventoryItem {
|
|
20
18
|
externalId: string;
|
|
@@ -131,6 +131,7 @@ describe("credential-free Library acceptance", () => {
|
|
|
131
131
|
contextMode: "off",
|
|
132
132
|
currentPackId: null,
|
|
133
133
|
pinnedPackId: null,
|
|
134
|
+
selectedContextId: null,
|
|
134
135
|
});
|
|
135
136
|
const offMarkup = renderToStaticMarkup(
|
|
136
137
|
<CreativeContextChip state={off} packs={[pack]} />,
|
package/src/schema/index.ts
CHANGED
|
@@ -293,6 +293,9 @@ export const contextPacks = table("creative_context_packs", {
|
|
|
293
293
|
derivedFromPackId: text("derived_from_pack_id"),
|
|
294
294
|
brandDnaVersionId: text("brand_dna_version_id"),
|
|
295
295
|
contextMode: text("context_mode").notNull().default("manual"),
|
|
296
|
+
baseContextId: text("base_context_id"),
|
|
297
|
+
specialtyContextId: text("specialty_context_id"),
|
|
298
|
+
selectionReason: text("selection_reason"),
|
|
296
299
|
request: text("request").notNull().default("{}"),
|
|
297
300
|
archivedAt: text("archived_at"),
|
|
298
301
|
createdAt: text("created_at").notNull(),
|
|
@@ -323,6 +326,119 @@ export const contextPackPins = table("creative_context_pack_pins", {
|
|
|
323
326
|
...scopedColumns(),
|
|
324
327
|
});
|
|
325
328
|
|
|
329
|
+
/** A governed, shareable collection of published creative artifacts. */
|
|
330
|
+
export const creativeContexts = table("creative_contexts", {
|
|
331
|
+
id: text("id").primaryKey(),
|
|
332
|
+
name: text("name").notNull(),
|
|
333
|
+
description: text("description"),
|
|
334
|
+
kind: text("kind", { enum: ["default", "specialty"] }).notNull(),
|
|
335
|
+
defaultScopeKey: text("default_scope_key"),
|
|
336
|
+
brandProfileId: text("brand_profile_id"),
|
|
337
|
+
stagingSourceId: text("staging_source_id").notNull(),
|
|
338
|
+
// This source is owned by the context and is intentionally not a library source.
|
|
339
|
+
publishedSourceId: text("published_source_id").notNull(),
|
|
340
|
+
approvalPolicy: text("approval_policy", {
|
|
341
|
+
enum: ["open", "review", "admins-only"],
|
|
342
|
+
})
|
|
343
|
+
.notNull()
|
|
344
|
+
.default("open"),
|
|
345
|
+
archivedAt: text("archived_at"),
|
|
346
|
+
createdAt: text("created_at").notNull(),
|
|
347
|
+
updatedAt: text("updated_at").notNull(),
|
|
348
|
+
...ownableColumns(),
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
export const creativeContextShares = createSharesTable(
|
|
352
|
+
"creative_context_shares",
|
|
353
|
+
);
|
|
354
|
+
|
|
355
|
+
export const creativeContextAudit = table("creative_context_audit", {
|
|
356
|
+
id: text("id").primaryKey(),
|
|
357
|
+
contextId: text("context_id").notNull(),
|
|
358
|
+
operation: text("operation").notNull(),
|
|
359
|
+
actorEmail: text("actor_email").notNull(),
|
|
360
|
+
details: text("details").notNull().default("{}"),
|
|
361
|
+
createdAt: text("created_at").notNull(),
|
|
362
|
+
...scopedColumns(),
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
/** One stable row per context/artifact identity; published pointers are mutable. */
|
|
366
|
+
export const creativeContextMemberships = table(
|
|
367
|
+
"creative_context_memberships",
|
|
368
|
+
{
|
|
369
|
+
id: text("id").primaryKey(),
|
|
370
|
+
contextId: text("context_id").notNull(),
|
|
371
|
+
artifactKey: text("artifact_key").notNull(),
|
|
372
|
+
publishedItemId: text("published_item_id"),
|
|
373
|
+
publishedItemVersionId: text("published_item_version_id"),
|
|
374
|
+
pendingSubmissionId: text("pending_submission_id"),
|
|
375
|
+
rank: text("rank", { enum: ["canonical", "exemplar", "normal"] })
|
|
376
|
+
.notNull()
|
|
377
|
+
.default("normal"),
|
|
378
|
+
purpose: text("purpose"),
|
|
379
|
+
status: text("status", { enum: ["active", "removed"] })
|
|
380
|
+
.notNull()
|
|
381
|
+
.default("active"),
|
|
382
|
+
createdAt: text("created_at").notNull(),
|
|
383
|
+
updatedAt: text("updated_at").notNull(),
|
|
384
|
+
...scopedColumns(),
|
|
385
|
+
},
|
|
386
|
+
);
|
|
387
|
+
|
|
388
|
+
/** Submission rows track workflow state; immutable version pins and audit rows preserve evidence. */
|
|
389
|
+
export const creativeContextSubmissions = table(
|
|
390
|
+
"creative_context_submissions",
|
|
391
|
+
{
|
|
392
|
+
id: text("id").primaryKey(),
|
|
393
|
+
contextId: text("context_id").notNull(),
|
|
394
|
+
membershipId: text("membership_id").notNull(),
|
|
395
|
+
artifactKey: text("artifact_key").notNull(),
|
|
396
|
+
stagingItemId: text("staging_item_id"),
|
|
397
|
+
stagingItemVersionId: text("staging_item_version_id"),
|
|
398
|
+
publishedItemId: text("published_item_id"),
|
|
399
|
+
publishedItemVersionId: text("published_item_version_id"),
|
|
400
|
+
note: text("note"),
|
|
401
|
+
privateMetadata: text("private_metadata").notNull().default("{}"),
|
|
402
|
+
status: text("status", {
|
|
403
|
+
enum: ["pending", "approved", "rejected", "withdrawn", "superseded"],
|
|
404
|
+
}).notNull(),
|
|
405
|
+
submittedBy: text("submitted_by").notNull(),
|
|
406
|
+
reviewedBy: text("reviewed_by"),
|
|
407
|
+
reviewNote: text("review_note"),
|
|
408
|
+
createdAt: text("created_at").notNull(),
|
|
409
|
+
reviewedAt: text("reviewed_at"),
|
|
410
|
+
...scopedColumns(),
|
|
411
|
+
},
|
|
412
|
+
);
|
|
413
|
+
|
|
414
|
+
export const creativeContextAppBindings = table(
|
|
415
|
+
"creative_context_app_bindings",
|
|
416
|
+
{
|
|
417
|
+
id: text("id").primaryKey(),
|
|
418
|
+
appId: text("app_id").notNull(),
|
|
419
|
+
contextId: text("context_id").notNull(),
|
|
420
|
+
createdAt: text("created_at").notNull(),
|
|
421
|
+
updatedAt: text("updated_at").notNull(),
|
|
422
|
+
...scopedColumns(),
|
|
423
|
+
},
|
|
424
|
+
);
|
|
425
|
+
|
|
426
|
+
/** Internal history of publish/materialization operations; never public API. */
|
|
427
|
+
export const creativeContextPublishedSnapshots = table(
|
|
428
|
+
"creative_context_published_snapshots",
|
|
429
|
+
{
|
|
430
|
+
id: text("id").primaryKey(),
|
|
431
|
+
contextId: text("context_id").notNull(),
|
|
432
|
+
sourceId: text("source_id").notNull(),
|
|
433
|
+
membershipId: text("membership_id").notNull(),
|
|
434
|
+
itemId: text("item_id").notNull(),
|
|
435
|
+
itemVersionId: text("item_version_id").notNull(),
|
|
436
|
+
submissionId: text("submission_id").notNull(),
|
|
437
|
+
createdAt: text("created_at").notNull(),
|
|
438
|
+
...scopedColumns(),
|
|
439
|
+
},
|
|
440
|
+
);
|
|
441
|
+
|
|
326
442
|
export const contextJobs = table("creative_context_jobs", {
|
|
327
443
|
id: text("id").primaryKey(),
|
|
328
444
|
dedupeKey: text("dedupe_key"),
|
package/src/schema/migrations.ts
CHANGED
|
@@ -255,4 +255,84 @@ export const creativeContextMigrations: CreativeContextMigration[] = [
|
|
|
255
255
|
ON creative_context_jobs (dedupe_scope, scoped_dedupe_key);
|
|
256
256
|
`,
|
|
257
257
|
},
|
|
258
|
+
{
|
|
259
|
+
version: 6,
|
|
260
|
+
name: "creative-context-governed-collections",
|
|
261
|
+
sql: `
|
|
262
|
+
CREATE TABLE IF NOT EXISTS creative_contexts (
|
|
263
|
+
id TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT,
|
|
264
|
+
kind TEXT NOT NULL, brand_profile_id TEXT, staging_source_id TEXT NOT NULL, published_source_id TEXT NOT NULL,
|
|
265
|
+
approval_policy TEXT NOT NULL DEFAULT 'open', archived_at TEXT,
|
|
266
|
+
created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
|
|
267
|
+
owner_email TEXT NOT NULL DEFAULT 'local@localhost', org_id TEXT,
|
|
268
|
+
visibility TEXT NOT NULL DEFAULT 'private'
|
|
269
|
+
);
|
|
270
|
+
CREATE TABLE IF NOT EXISTS creative_context_shares (
|
|
271
|
+
id TEXT PRIMARY KEY, resource_id TEXT NOT NULL, principal_type TEXT NOT NULL,
|
|
272
|
+
principal_id TEXT NOT NULL, role TEXT NOT NULL DEFAULT 'viewer',
|
|
273
|
+
created_by TEXT NOT NULL, created_at TEXT NOT NULL
|
|
274
|
+
);
|
|
275
|
+
CREATE TABLE IF NOT EXISTS creative_context_audit (
|
|
276
|
+
id TEXT PRIMARY KEY, context_id TEXT NOT NULL, operation TEXT NOT NULL,
|
|
277
|
+
actor_email TEXT NOT NULL, details TEXT NOT NULL DEFAULT '{}', created_at TEXT NOT NULL,
|
|
278
|
+
owner_email TEXT NOT NULL, org_id TEXT
|
|
279
|
+
);
|
|
280
|
+
CREATE TABLE IF NOT EXISTS creative_context_memberships (
|
|
281
|
+
id TEXT PRIMARY KEY, context_id TEXT NOT NULL, artifact_key TEXT NOT NULL,
|
|
282
|
+
published_item_id TEXT, published_item_version_id TEXT, pending_submission_id TEXT,
|
|
283
|
+
rank TEXT NOT NULL DEFAULT 'normal', purpose TEXT, status TEXT NOT NULL DEFAULT 'active',
|
|
284
|
+
created_at TEXT NOT NULL, updated_at TEXT NOT NULL, owner_email TEXT NOT NULL, org_id TEXT
|
|
285
|
+
);
|
|
286
|
+
CREATE TABLE IF NOT EXISTS creative_context_submissions (
|
|
287
|
+
id TEXT PRIMARY KEY, context_id TEXT NOT NULL, membership_id TEXT NOT NULL,
|
|
288
|
+
artifact_key TEXT NOT NULL, staging_item_id TEXT, staging_item_version_id TEXT,
|
|
289
|
+
published_item_id TEXT, published_item_version_id TEXT, note TEXT,
|
|
290
|
+
private_metadata TEXT NOT NULL DEFAULT '{}', status TEXT NOT NULL,
|
|
291
|
+
submitted_by TEXT NOT NULL, reviewed_by TEXT, review_note TEXT,
|
|
292
|
+
created_at TEXT NOT NULL, reviewed_at TEXT, owner_email TEXT NOT NULL, org_id TEXT
|
|
293
|
+
);
|
|
294
|
+
CREATE TABLE IF NOT EXISTS creative_context_app_bindings (
|
|
295
|
+
id TEXT PRIMARY KEY, app_id TEXT NOT NULL, context_id TEXT NOT NULL,
|
|
296
|
+
created_at TEXT NOT NULL, updated_at TEXT NOT NULL,
|
|
297
|
+
owner_email TEXT NOT NULL, org_id TEXT
|
|
298
|
+
);
|
|
299
|
+
CREATE TABLE IF NOT EXISTS creative_context_published_snapshots (
|
|
300
|
+
id TEXT PRIMARY KEY, context_id TEXT NOT NULL, source_id TEXT NOT NULL,
|
|
301
|
+
membership_id TEXT NOT NULL, item_id TEXT NOT NULL, item_version_id TEXT NOT NULL,
|
|
302
|
+
submission_id TEXT NOT NULL, created_at TEXT NOT NULL, owner_email TEXT NOT NULL, org_id TEXT
|
|
303
|
+
);
|
|
304
|
+
ALTER TABLE creative_context_packs ADD COLUMN base_context_id TEXT;
|
|
305
|
+
ALTER TABLE creative_context_packs ADD COLUMN specialty_context_id TEXT;
|
|
306
|
+
ALTER TABLE creative_context_packs ADD COLUMN selection_reason TEXT;
|
|
307
|
+
CREATE UNIQUE INDEX IF NOT EXISTS creative_context_membership_artifact_uidx
|
|
308
|
+
ON creative_context_memberships (context_id, artifact_key);
|
|
309
|
+
CREATE INDEX IF NOT EXISTS creative_context_memberships_context_status_idx
|
|
310
|
+
ON creative_context_memberships (context_id, status, updated_at);
|
|
311
|
+
CREATE INDEX IF NOT EXISTS creative_context_submissions_context_status_idx
|
|
312
|
+
ON creative_context_submissions (context_id, status, created_at);
|
|
313
|
+
CREATE INDEX IF NOT EXISTS creative_context_app_bindings_lookup_idx
|
|
314
|
+
ON creative_context_app_bindings (app_id, owner_email, org_id, updated_at);
|
|
315
|
+
CREATE INDEX IF NOT EXISTS creative_context_memberships_published_item_idx
|
|
316
|
+
ON creative_context_memberships (published_item_id, published_item_version_id);
|
|
317
|
+
CREATE INDEX IF NOT EXISTS creative_context_published_snapshots_source_item_idx
|
|
318
|
+
ON creative_context_published_snapshots (source_id, item_id, item_version_id);
|
|
319
|
+
CREATE INDEX IF NOT EXISTS creative_context_shares_lookup_idx
|
|
320
|
+
ON creative_context_shares (resource_id, principal_type, principal_id);
|
|
321
|
+
`,
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
version: 7,
|
|
325
|
+
name: "creative-context-default-scope-uniqueness",
|
|
326
|
+
sql: `
|
|
327
|
+
ALTER TABLE creative_contexts ADD COLUMN default_scope_key TEXT;
|
|
328
|
+
UPDATE creative_contexts
|
|
329
|
+
SET default_scope_key = CASE
|
|
330
|
+
WHEN kind = 'default' AND org_id IS NOT NULL THEN 'org:' || org_id
|
|
331
|
+
WHEN kind = 'default' THEN 'user:' || owner_email
|
|
332
|
+
ELSE NULL
|
|
333
|
+
END;
|
|
334
|
+
CREATE UNIQUE INDEX IF NOT EXISTS creative_context_default_scope_uidx
|
|
335
|
+
ON creative_contexts (default_scope_key);
|
|
336
|
+
`,
|
|
337
|
+
},
|
|
258
338
|
];
|