Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/quiet-documents-stay-quiet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@agent-native/core": patch
---

Allow collaboration persistence to enforce the source document's live lifecycle within the same transaction, and discard cached mutations when a write fails.

Quarantine client connections after terminal document lifecycle rejections so retries and remounts fetch authoritative state without replaying rejected edits.
7 changes: 7 additions & 0 deletions .changeset/quiet-share-revocations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@agent-native/core": patch
---

Notify the affected user when an authorized action removes an explicit user share, so their open views can refresh even when they use another organization. The recipient event contains only the generic action name, without resource details.

`unshare-resource` preserves `ok: true` for an acknowledged revoke and adds `recipientInvalidation.status`: `recorded` confirms the refresh marker was written (not that a browser received it), `unconfirmed` reports a notification error without treating the committed revoke as failed, and `not_applicable` means no explicit user grant was removed. Unconfirmed delivery is logged and has no automatic durable retry. Group, organization, public-access, and general authorization behavior are unchanged.
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/ar-SA/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";

أخبر الوكيل "بمشاركة هذا التصميم مع فريق التسويق كمحررين" وسيقوم باستدعاء `share-resource` مقابل نفس نقطة النهاية التي يستخدمها UI. تظهر النتيجة في مربع حوار المشاركة في العرض التالي.

يعيد `unshare-resource` القيمة `ok: true` بعد نجاح إلغاء الوصول. عند إزالة إذن مباشر لمستخدم، تكون `recipientInvalidation.status` هي `recorded` إذا سُجّلت علامة التحديث العامة للمستلم، أو `unconfirmed` إذا تعذّر تأكيد التسجيل؛ ولا تضمن أي منهما التسليم. تعني `not_applicable` أنه لم يُزل إذن مباشر لمستخدم. عدم تأكيد الإشعار لا يتراجع عن إلغاء الوصول. لا تتضمن العلامة معرّف المورد أو عنوانه أو محتواه.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/de-DE/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ Das Framework mountet diese actions automatisch in jeder Vorlage – der Agent n

Sagen Sie dem Agenten: „Teilen Sie dieses Design mit dem Marketingteam als Redakteuren“, und er ruft `share-resource` für denselben Endpunkt auf, den UI verwendet. Das Ergebnis wird beim nächsten Rendern im Freigabedialog angezeigt.

`unshare-resource` gibt nach erfolgreichem Widerruf `ok: true` zurück. Bei einer entfernten direkten Benutzerfreigabe ist `recipientInvalidation.status` gleich `recorded`, wenn das allgemeine Aktualisierungssignal für den Empfänger gespeichert wurde, oder `unconfirmed`, wenn dies nicht bestätigt werden kann; beides garantiert keine Zustellung. `not_applicable` bedeutet, dass keine direkte Benutzerfreigabe entfernt wurde. Eine unbestätigte Benachrichtigung macht den Widerruf nicht rückgängig. Das Signal enthält weder Ressourcen-ID noch Titel oder Inhalt.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/es-ES/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ El marco monta automáticamente estos actions en cada plantilla: el agente los l

Dígale al agente "comparta este diseño con el equipo de marketing como editores" y llamará a `share-resource` contra el mismo punto final que utiliza UI. El resultado aparece en el cuadro de diálogo para compartir en el siguiente renderizado.

`unshare-resource` devuelve `ok: true` tras una revocación correcta. Para un permiso directo de usuario eliminado, `recipientInvalidation.status` es `recorded` si se registra la señal genérica de actualización del destinatario, o `unconfirmed` si no puede confirmarse el registro; ninguno garantiza la entrega. `not_applicable` significa que no se eliminó ningún permiso directo de usuario. La incertidumbre de la notificación no deshace la revocación. La señal no contiene el ID, el título ni el contenido del recurso.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/fr-FR/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ Le framework monte automatiquement ces actions dans chaque modèle : l'agent le

Dites à l'agent "Partagez cette conception avec l'équipe marketing en tant qu'éditeurs" et il appellera `share-resource` sur le même point de terminaison que celui utilisé par UI. Le résultat apparaît dans la boîte de dialogue de partage lors du prochain rendu.

`unshare-resource` renvoie `ok: true` après une révocation réussie. Pour une autorisation directe d’un utilisateur supprimée, `recipientInvalidation.status` vaut `recorded` si le signal générique d’actualisation du destinataire est enregistré, ou `unconfirmed` si cet enregistrement ne peut pas être confirmé ; aucun ne garantit la réception. `not_applicable` signifie qu’aucune autorisation directe d’utilisateur n’a été supprimée. L’incertitude de notification n’annule pas la révocation. Le signal ne contient ni identifiant, ni titre, ni contenu de ressource.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/hi-IN/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";

एजेंट को बताएं "इस डिज़ाइन को संपादकों के रूप में मार्केटिंग टीम के साथ साझा करें" और यह UI द्वारा उपयोग किए जाने वाले उसी एंडपॉइंट के विरुद्ध `share-resource` को कॉल करता है। परिणाम अगले रेंडर पर शेयर डायलॉग में दिखाई देता है।

सफल निरस्तीकरण के बाद `unshare-resource`, `ok: true` लौटाता है। हटाई गई प्रत्यक्ष उपयोगकर्ता अनुमति के लिए, प्राप्तकर्ता का सामान्य रीफ़्रेश मार्कर दर्ज होने पर `recipientInvalidation.status` का मान `recorded` होता है; रिकॉर्डिंग की पुष्टि न होने पर `unconfirmed` होता है। दोनों में से कोई भी डिलीवरी की गारंटी नहीं देता। `not_applicable` का अर्थ है कि कोई प्रत्यक्ष उपयोगकर्ता अनुमति नहीं हटाई गई। सूचना की अनिश्चितता निरस्तीकरण को पूर्ववत नहीं करती। मार्कर में संसाधन ID, शीर्षक या सामग्री नहीं होती।

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/ja-JP/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";

エージェントに「このデザインを編集者としてマーケティング チームと共有する」ように指示すると、エージェントは UI が使用するのと同じエンドポイントに対して `share-resource` を呼び出します。結果は、次回のレンダリング時に共有ダイアログに表示されます。

`unshare-resource` は取り消しが成功すると `ok: true` を返します。直接のユーザー権限が削除された場合、受信者向けの汎用更新マーカーが記録されると `recipientInvalidation.status` は `recorded`、記録を確認できない場合は `unconfirmed` になります。どちらも配信を保証しません。`not_applicable` は直接のユーザー権限が削除されなかったことを示します。通知の不確実性によって取り消しが元に戻ることはありません。マーカーにリソース ID、タイトル、内容は含まれません。

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/ko-KR/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";

에이전트에게 "이 디자인을 편집자로서 마케팅 팀과 공유"하라고 말하면 에이전트는 UI가 사용하는 동일한 엔드포인트에 대해 `share-resource`를 호출합니다. 결과는 다음 렌더링 시 공유 대화상자에 표시됩니다.

`unshare-resource`는 권한 취소에 성공하면 `ok: true`를 반환합니다. 직접 사용자 권한이 제거된 경우 수신자의 일반 새로 고침 마커가 기록되면 `recipientInvalidation.status`는 `recorded`, 기록을 확인할 수 없으면 `unconfirmed`입니다. 어느 값도 전달을 보장하지 않습니다. `not_applicable`은 직접 사용자 권한이 제거되지 않았음을 뜻합니다. 알림 상태가 불확실해도 권한 취소는 되돌려지지 않습니다. 마커에는 리소스 ID, 제목 또는 내용이 포함되지 않습니다.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/pt-BR/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ A estrutura monta automaticamente esses actions em cada modelo — o agente os c

Diga ao agente "compartilhe este design com a equipe de marketing como editores" e ele chamará `share-resource` no mesmo endpoint que UI usa. O resultado aparece na caixa de diálogo de compartilhamento na próxima renderização.

`unshare-resource` retorna `ok: true` após uma revogação bem-sucedida. Para uma permissão direta de usuário removida, `recipientInvalidation.status` é `recorded` quando o sinal genérico de atualização do destinatário é registrado, ou `unconfirmed` quando o registro não pode ser confirmado; nenhum garante a entrega. `not_applicable` significa que nenhuma permissão direta de usuário foi removida. A incerteza da notificação não desfaz a revogação. O sinal não contém ID, título ou conteúdo do recurso.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/zh-CN/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";

告诉代理“与作为编辑的营销团队共享此设计”,它会针对 UI 使用的同一端点调用 `share-resource`。结果将显示在下一次渲染的共享对话框中。

`unshare-resource` 在成功撤销后返回 `ok: true`。对于已移除的直接用户授权,若接收者的通用刷新标记已记录,`recipientInvalidation.status` 为 `recorded`;若无法确认记录,则为 `unconfirmed`。两者均不保证送达。`not_applicable` 表示未移除直接用户授权。通知状态不确定不会撤销已完成的权限撤销。标记不包含资源 ID、标题或内容。

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/locales/zh-TW/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ import { ShareButton } from "@agent-native/core/client/sharing";

告訴代理“與作為編輯的行銷團隊共用此設計”,它會針對 UI 使用的同一端點呼叫 `share-resource`。結果將顯示在下一次渲染的共用對話框中。

`unshare-resource` 在成功撤銷後傳回 `ok: true`。對於已移除的直接使用者授權,若接收者的通用重新整理標記已記錄,`recipientInvalidation.status` 為 `recorded`;若無法確認記錄,則為 `unconfirmed`。兩者均不保證送達。`not_applicable` 表示未移除直接使用者授權。通知狀態不確定不會復原已完成的權限撤銷。標記不包含資源 ID、標題或內容。

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
2 changes: 2 additions & 0 deletions packages/core/docs/content/sharing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ The framework auto-mounts these actions in every template — the agent calls th

Tell the agent "share this design with the marketing team as editors" and it calls `share-resource` against the same endpoint the UI uses. The result shows up in the share dialog the next render.

`unshare-resource` returns `ok: true` after a successful revocation. For a removed direct-user grant, `recipientInvalidation.status` is `recorded` when the recipient's generic refresh marker is recorded, or `unconfirmed` when recording cannot be confirmed; neither guarantees delivery. `not_applicable` means no direct-user grant was removed. Notification uncertainty does not undo revocation. The marker contains no resource ID, title, or content.

## Agent-readable share links {#agent-readable-links}

Human share links should also work for agents when the resource is a document-like artifact: plans, documents, decks, designs, analytics dashboards, saved analyses, clips, and similar "things you would send to a person." Public links expose a small SSR discovery script that points at structured JSON. Private resources use a short-lived `agent_access` token scoped to exactly one resource.
Expand Down
Loading
Loading