@agent-native/core 0.130.2 → 0.131.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +51 -0
- package/corpus/core/docs/content/agent-surfaces.mdx +4 -4
- package/corpus/core/docs/content/automations.mdx +61 -12
- package/corpus/core/docs/content/deployment.mdx +11 -4
- package/corpus/core/docs/content/extensions.mdx +39 -33
- package/corpus/core/docs/content/recurring-jobs.mdx +41 -19
- package/corpus/core/docs/content/template-dispatch-operations.mdx +19 -7
- package/corpus/core/package.json +3 -1
- package/corpus/core/src/action.ts +55 -0
- package/corpus/core/src/agent/engine/builder-engine.ts +8 -4
- package/corpus/core/src/agent/production-agent.ts +175 -100
- package/corpus/core/src/agent/tool-search.ts +36 -0
- package/corpus/core/src/automations/service.ts +506 -0
- package/corpus/core/src/browser-context/index.ts +392 -0
- package/corpus/core/src/client/AgentPanel.tsx +2 -1
- package/corpus/core/src/client/FeedbackButton.tsx +37 -4
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +21 -0
- package/corpus/core/src/client/agent-chat.ts +31 -3
- package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +438 -310
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +4 -4
- package/corpus/core/src/client/agent-page/use-jobs.ts +7 -0
- package/corpus/core/src/client/analytics-session.ts +13 -0
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +67 -0
- package/corpus/core/src/client/settings/AutomationsSection.tsx +27 -499
- package/corpus/core/src/client/settings/SettingsPanel.tsx +32 -11
- package/corpus/core/src/client/settings/index.ts +2 -0
- package/corpus/core/src/client/use-agent-chat.ts +35 -3
- package/corpus/core/src/client/use-chat-threads.ts +8 -25
- package/corpus/core/src/deploy/build.ts +2 -0
- package/corpus/core/src/deploy/workspace-deploy.ts +2 -0
- package/corpus/core/src/extensions/actions.ts +115 -3
- package/corpus/core/src/extensions/fetch-tool.ts +11 -0
- package/corpus/core/src/extensions/routes.ts +16 -1
- package/corpus/core/src/extensions/web-content.ts +96 -1
- package/corpus/core/src/integrations/computer-supervision.ts +33 -1
- package/corpus/core/src/integrations/index.ts +6 -0
- package/corpus/core/src/integrations/integration-durable-dispatch-config.ts +10 -0
- package/corpus/core/src/integrations/integration-durable-dispatch.ts +4 -0
- package/corpus/core/src/integrations/plugin.ts +94 -41
- package/corpus/core/src/integrations/remote-browser-actions.ts +621 -0
- package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +5 -7
- package/corpus/core/src/jobs/actions/manage-recurring-job.ts +3 -7
- package/corpus/core/src/jobs/background-automation-runner.ts +437 -0
- package/corpus/core/src/jobs/frontmatter.ts +308 -0
- package/corpus/core/src/jobs/scheduler.ts +89 -598
- package/corpus/core/src/jobs/tools.ts +22 -3
- package/corpus/core/src/localization/default-messages.ts +45 -45
- package/corpus/core/src/mcp-client/index.ts +6 -0
- package/corpus/core/src/notifications/actions.ts +5 -0
- package/corpus/core/src/progress/actions.ts +5 -0
- package/corpus/core/src/provider-api/actions/github-repo-files.ts +11 -0
- package/corpus/core/src/provider-api/actions/provider-api.ts +13 -0
- package/corpus/core/src/server/action-discovery.ts +7 -0
- package/corpus/core/src/server/agent-chat/browser-team-tools.ts +126 -3
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +7 -11
- package/corpus/core/src/server/agent-chat/plugin-options.ts +3 -3
- package/corpus/core/src/server/agent-chat/script-entries.ts +52 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +25 -5
- package/corpus/core/src/server/attribution.ts +22 -0
- package/corpus/core/src/server/auth.ts +20 -6
- package/corpus/core/src/server/better-auth-instance.ts +10 -2
- package/corpus/core/src/server/core-routes-plugin.ts +10 -1
- package/corpus/core/src/server/csrf.ts +25 -0
- package/corpus/core/src/server/google-oauth.ts +21 -1
- package/corpus/core/src/server/onboarding-html.ts +18 -0
- package/corpus/core/src/server/prompts/framework-core-compact.ts +3 -3
- package/corpus/core/src/server/prompts/framework-core.ts +3 -3
- package/corpus/core/src/server/prompts/shared-rules.ts +3 -3
- package/corpus/core/src/settings/index.ts +1 -0
- package/corpus/core/src/shared/analytics-anonymous-id.ts +35 -0
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +26 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +28 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +27 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +28 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +28 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +25 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +27 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +27 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +27 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +24 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +24 -0
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
- package/corpus/core/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
- package/corpus/core/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
- package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
- package/corpus/core/src/tracking/providers.ts +1 -0
- package/corpus/core/src/tracking/registry.ts +2 -1
- package/corpus/core/src/tracking/types.ts +1 -0
- package/corpus/core/src/triggers/actions/list-automations.ts +43 -44
- package/corpus/core/src/triggers/actions/manage-automation.ts +17 -48
- package/corpus/core/src/triggers/actions.ts +218 -127
- package/corpus/core/src/triggers/dispatcher.ts +181 -367
- package/corpus/core/src/triggers/routes.ts +84 -27
- package/corpus/core/src/triggers/types.ts +9 -23
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/analytics/actions/install-dashboard-template.ts +13 -4
- package/corpus/templates/analytics/actions/rename-dashboard.ts +8 -3
- package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +8 -3
- package/corpus/templates/analytics/actions/update-dashboard.ts +22 -5
- package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +7 -1
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -82
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +4 -4
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +23 -13
- package/corpus/templates/analytics/app/global.css +21 -0
- package/corpus/templates/analytics/app/i18n-data.ts +165 -101
- package/corpus/templates/analytics/app/lib/custom-block-promotion.ts +62 -0
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +17 -2
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +3 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +77 -12
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-save-queue.ts +34 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +42 -26
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +15 -0
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -1
- package/corpus/templates/analytics/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-dashboard.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-custom-dashboard-blocks-now-identify-one-off-agent-patches-a.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-deletions-now-save-in-order-so-removed-rows-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-loaders-are-easier-to-see-and-animate-more-s.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-now-query-connected-analytics-sources-while-ke.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-use-clips-as-read-only-prompt-context.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-29-signup-entry-pages-now-show-the-first-page-viewed-before-eac.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +26 -1
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +0 -33
- package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +13 -3
- package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +9 -1
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +44 -1
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +96 -16
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +18 -27
- package/corpus/templates/analytics/server/plugins/core-routes.ts +1 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -8
- package/corpus/templates/assets/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-workspace.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +3 -7
- package/corpus/templates/brain/app/root.tsx +0 -3
- package/corpus/templates/brain/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-brain.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-29-extensions-are-no-longer-shown-as-a-default-command-menu-des.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +25 -5
- package/corpus/templates/calendar/AGENTS.md +5 -0
- package/corpus/templates/calendar/actions/create-event.ts +43 -13
- package/corpus/templates/calendar/actions/event-action-helpers.ts +131 -1
- package/corpus/templates/calendar/actions/manage-event-draft.ts +65 -2
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +437 -258
- package/corpus/templates/calendar/app/components/calendar/DayView.tsx +19 -3
- package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +24 -0
- package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +15 -2
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -5
- package/corpus/templates/calendar/app/hooks/use-events.ts +44 -5
- package/corpus/templates/calendar/app/i18n-data.ts +50 -0
- package/corpus/templates/calendar/app/lib/all-day-layout.ts +9 -2
- package/corpus/templates/calendar/app/lib/event-form-initialization.ts +4 -8
- package/corpus/templates/calendar/app/lib/event-form-utils.ts +30 -8
- package/corpus/templates/calendar/app/lib/location-suggestions.ts +36 -0
- package/corpus/templates/calendar/app/lib/out-of-office.ts +87 -1
- package/corpus/templates/calendar/app/pages/CalendarView.tsx +68 -13
- package/corpus/templates/calendar/changelog/2026-07-26-out-of-office-events-now-default-to-full-days-with-a-ready.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-29-recent-calendar-locations-now-appear-as-address-suggestions-.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/calendar/server/lib/find-time.ts +29 -5
- package/corpus/templates/calendar/shared/api.ts +2 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +1 -5
- package/corpus/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -5
- package/corpus/templates/clips/changelog/2026-07-29-fixed-system-audio-recordings-picking-up-your-microphone-in-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-the-desktop-camera-preview-now-closes-after-a-recording-fin.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +14 -15
- package/corpus/templates/clips/desktop/src/lib/bubble-session.ts +11 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +9 -4
- package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +11 -0
- package/corpus/templates/clips/server/jobs/transactional-emails.ts +47 -23
- package/corpus/templates/clips/server/lib/transactional-email-store.ts +16 -6
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/content/.agents/skills/content-product-development/SKILL.md +103 -0
- package/corpus/templates/content/.agents/skills/content-product-development/references/verification.md +57 -0
- package/corpus/templates/content/AGENTS.md +2 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -6
- package/corpus/templates/content/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/content/docs/product/README.md +115 -0
- package/corpus/templates/content/docs/product/architecture.md +98 -0
- package/corpus/templates/content/docs/product/capabilities/content.access.page-database.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.access.row-private.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.access.safe-aggregate.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.access.visibility-closure.md +79 -0
- package/corpus/templates/content/docs/product/capabilities/content.action.button.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.action-parity.md +73 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.audience-safe.md +91 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.automation.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.expression-authoring.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.presence.md +103 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.resource-consent.md +90 -0
- package/corpus/templates/content/docs/product/capabilities/content.agent.skill-catalog.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.api.cms.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.author.code.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.author.document-editor.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.author.footnotes.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.author.math.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.author.media.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.author.mermaid.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.automation.scheduled.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.capture.enrich.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.command.fabric.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.comment.page-owned.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.diff.ai-assist.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.diff.filtered-review.md +79 -0
- package/corpus/templates/content/docs/product/capabilities/content.diff.in-place.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.discussion.page.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.embed.host-grant.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.embed.mcp-app.md +69 -0
- package/corpus/templates/content/docs/product/capabilities/content.embed.surface.md +74 -0
- package/corpus/templates/content/docs/product/capabilities/content.event.committed.md +85 -0
- package/corpus/templates/content/docs/product/capabilities/content.expression.cached-result.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.expression.catalog.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.expression.language.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.feedback.signal.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.form.shared-engine.md +72 -0
- package/corpus/templates/content/docs/product/capabilities/content.history.queryable.md +79 -0
- package/corpus/templates/content/docs/product/capabilities/content.home.global.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.job.durable.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.knowledge.graph.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.knowledge.links.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.knowledge.search.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.layout.responsive.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.navigation.sidebar.md +86 -0
- package/corpus/templates/content/docs/product/capabilities/content.notification.source.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.block.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.blocks-field.md +79 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.database.md +92 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.multi-membership.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.page.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.reference.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.object.transclusion.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.organization.teams.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.portability.pdf-export.md +78 -0
- package/corpus/templates/content/docs/product/capabilities/content.portability.roundtrip.md +154 -0
- package/corpus/templates/content/docs/product/capabilities/content.portability.source-representation.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.portability.vault-export.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.presentation.mode.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.preset.catalog.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.property.actor.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.property.catalog.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.property.constraints.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.property.guarded-change.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.property.location.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.property.typed.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.publish.public.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.publish.reading.md +74 -0
- package/corpus/templates/content/docs/product/capabilities/content.query.object.md +114 -0
- package/corpus/templates/content/docs/product/capabilities/content.reader.documents.md +69 -0
- package/corpus/templates/content/docs/product/capabilities/content.reader.surface.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.relationship.edge.md +183 -0
- package/corpus/templates/content/docs/product/capabilities/content.renderer.artifact-block.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.renderer.custom-block.md +81 -0
- package/corpus/templates/content/docs/product/capabilities/content.renderer.graph.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.renderer.typed.md +92 -0
- package/corpus/templates/content/docs/product/capabilities/content.research.annotation.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.research.citation.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.review.code.md +67 -0
- package/corpus/templates/content/docs/product/capabilities/content.revision.suggestions.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.rule.deterministic.md +79 -0
- package/corpus/templates/content/docs/product/capabilities/content.schedule.constraints.md +81 -0
- package/corpus/templates/content/docs/product/capabilities/content.security.private-vault.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.share.views.md +140 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.adapters.md +154 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.builder-codec.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.catalog.md +149 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.file-folder.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.local-bridge.md +156 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.local-project.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.page-link.md +70 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.row-union.md +69 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.spaces-files.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.source.sync-policy.md +161 -0
- package/corpus/templates/content/docs/product/capabilities/content.system.dependencies.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.system.my-tasks.md +75 -0
- package/corpus/templates/content/docs/product/capabilities/content.system.project-status.md +77 -0
- package/corpus/templates/content/docs/product/capabilities/content.system.research-workspace.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.system.task-project.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.template.governance.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.template.graph.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.template.item-body.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.template.update.md +71 -0
- package/corpus/templates/content/docs/product/capabilities/content.time.types.md +85 -0
- package/corpus/templates/content/docs/product/capabilities/content.version.branching.md +151 -0
- package/corpus/templates/content/docs/product/capabilities/content.version.field-history.md +103 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.canvas.md +94 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.chart.md +91 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.dynamic-create.md +137 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.fast-capture.md +82 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.graph.md +95 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.grouping-aggregation.md +83 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.map.md +77 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.personal-state.md +99 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.pivot.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.query.md +106 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.renderer-conformance.md +77 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.scale.md +77 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.source-query.md +159 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.timeline.md +86 -0
- package/corpus/templates/content/docs/product/capabilities/content.view.tree.md +77 -0
- package/corpus/templates/content/docs/product/capabilities/content.workspace.multi-scope.md +80 -0
- package/corpus/templates/content/docs/product/capabilities/content.workspace.session-restore.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.workspace.view-instance.md +76 -0
- package/corpus/templates/content/docs/product/capabilities/content.workspace.working-set.md +77 -0
- package/corpus/templates/content/docs/product/chapters/content.chapter.capture-research.md +20 -0
- package/corpus/templates/content/docs/product/chapters/content.chapter.connected-sources.md +20 -0
- package/corpus/templates/content/docs/product/chapters/content.chapter.consensus.md +19 -0
- package/corpus/templates/content/docs/product/chapters/content.chapter.durable-home.md +21 -0
- package/corpus/templates/content/docs/product/chapters/content.chapter.publishing-portability.md +21 -0
- package/corpus/templates/content/docs/product/chapters/content.chapter.working-systems.md +27 -0
- package/corpus/templates/content/docs/product/encyclopedia.md +559 -0
- package/corpus/templates/content/docs/product/features/content.feature.bring-your-local-work.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.build-living-dashboards.md +34 -0
- package/corpus/templates/content/docs/product/features/content.feature.build-new-surfaces.md +33 -0
- package/corpus/templates/content/docs/product/features/content.feature.capture-into-action.md +34 -0
- package/corpus/templates/content/docs/product/features/content.feature.cite-what-you-found.md +34 -0
- package/corpus/templates/content/docs/product/features/content.feature.collaborate-in-context.md +59 -0
- package/corpus/templates/content/docs/product/features/content.feature.collect-structured-input.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.connect-your-sources.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.data-that-keeps-itself-right.md +45 -0
- package/corpus/templates/content/docs/product/features/content.feature.durable-foundations.md +48 -0
- package/corpus/templates/content/docs/product/features/content.feature.evolve-systems-safely.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.explore-alternatives-safely.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.find-your-place-again.md +40 -0
- package/corpus/templates/content/docs/product/features/content.feature.keep-your-private-vault-private.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.living-references.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.make-the-workspace-yours.md +40 -0
- package/corpus/templates/content/docs/product/features/content.feature.move-without-starting-over.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.plan-work-across-time.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.publish-with-confidence.md +43 -0
- package/corpus/templates/content/docs/product/features/content.feature.put-your-organizations-know-how-to-work.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.read-and-annotate-anything.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.review-changes-in-place.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.run-projects-your-way.md +44 -0
- package/corpus/templates/content/docs/product/features/content.feature.see-your-information-your-way.md +44 -0
- package/corpus/templates/content/docs/product/features/content.feature.share-how-your-organization-works.md +38 -0
- package/corpus/templates/content/docs/product/features/content.feature.sketch-connections-keep-whats-true.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.take-the-whole-vault-with-you.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.trust-your-connected-sources.md +40 -0
- package/corpus/templates/content/docs/product/features/content.feature.understand-what-your-data-says.md +39 -0
- package/corpus/templates/content/docs/product/features/content.feature.when-this-happens-that-follows.md +43 -0
- package/corpus/templates/content/docs/product/features/content.feature.work-across-every-workspace.md +37 -0
- package/corpus/templates/content/docs/product/features/content.feature.work-on-content-inside-another-application.md +37 -0
- package/corpus/templates/content/docs/product/roadmap.md +878 -0
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +1 -7
- package/corpus/templates/crm/app/i18n/en-US.ts +4 -0
- package/corpus/templates/crm/app/routes/settings.tsx +33 -8
- package/corpus/templates/crm/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +133 -63
- package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +19 -2
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +51 -14
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +41 -26
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +22 -4
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +216 -116
- package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +21 -2
- package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +5 -1
- package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbenchLoader.tsx +10 -2
- package/corpus/templates/design/app/components/design/code-workbench/code-workbench-shell.ts +2 -0
- package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +60 -55
- package/corpus/templates/design/app/components/design/design-canvas/content-size-report.ts +88 -2
- package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +3 -2
- package/corpus/templates/design/app/components/design/types.ts +4 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -5
- package/corpus/templates/design/app/pages/design-editor/clipboard-layer-source.ts +28 -0
- package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +117 -0
- package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +3 -1
- package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +120 -74
- package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +11 -0
- package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +2 -0
- package/corpus/templates/design/app/pages/design-editor/source-location.ts +1 -1
- package/corpus/templates/design/changelog/2026-07-29-copy-rendered-ui-between-live-local-apps-and-design-files-wh.md +6 -0
- package/corpus/templates/design/changelog/2026-07-29-design-boards-stay-dark-and-viewport-height-content-keeps-it.md +6 -0
- package/corpus/templates/design/changelog/2026-07-29-design-frames-no-longer-grow-continuously-when-their-content.md +6 -0
- package/corpus/templates/design/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/design/changelog/2026-07-29-the-code-panel-and-apply-design-update-control-now-use-clear.md +6 -0
- package/corpus/templates/design/changelog/2026-07-29-the-tools-panel-now-keeps-extension-creation-and-discovery-h.md +6 -0
- package/corpus/templates/design/shared/source-mode.ts +7 -1
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +171 -0
- package/corpus/templates/dispatch/app/routes/browser-chat.tsx +4 -0
- package/corpus/templates/dispatch/app/routes/browser-connect.tsx +4 -0
- package/corpus/templates/dispatch/changelog/2026-07-29-browser-chat-can-securely-connect-the-agent-native-chrome-ex.md +6 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -6
- package/corpus/templates/forms/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -5
- package/corpus/templates/macros/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -9
- package/corpus/templates/mail/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +3 -7
- package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
- package/corpus/templates/plan/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-plan.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-29-fixed-plan-pages-crashing-when-recent-activity-is-unavailabl.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +60 -4
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +20 -0
- package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +30 -1
- package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +3 -1
- package/corpus/templates/slides/AGENTS.md +22 -24
- package/corpus/templates/slides/actions/check-image-gen.ts +8 -2
- package/corpus/templates/slides/actions/create-deck.ts +4 -12
- package/corpus/templates/slides/actions/export-pptx.ts +25 -3
- package/corpus/templates/slides/actions/generate-image-api.ts +4 -2
- package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
- package/corpus/templates/slides/actions/get-deck-reference-context.ts +136 -0
- package/corpus/templates/slides/actions/get-workspace-defaults.ts +55 -0
- package/corpus/templates/slides/actions/image-gen-status.ts +10 -1
- package/corpus/templates/slides/actions/import-file.ts +53 -38
- package/corpus/templates/slides/actions/list-decks.ts +2 -0
- package/corpus/templates/slides/actions/patch-deck.ts +2 -0
- package/corpus/templates/slides/actions/set-workspace-defaults.ts +50 -0
- package/corpus/templates/slides/actions/view-screen.ts +6 -0
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +1 -1
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +67 -3
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +40 -8
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +33 -8
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -2
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +114 -128
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +2 -1
- package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1193 -267
- package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +302 -102
- package/corpus/templates/slides/app/components/editor/rich-text-selection.ts +270 -0
- package/corpus/templates/slides/app/components/editor/slide-escape-arbiter.ts +34 -0
- package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +368 -0
- package/corpus/templates/slides/app/components/editor/slide-presence.ts +13 -0
- package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +23 -3
- package/corpus/templates/slides/app/components/layout/Layout.tsx +39 -6
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -6
- package/corpus/templates/slides/app/components/layout/layout-route-policy.ts +23 -0
- package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +0 -2
- package/corpus/templates/slides/app/context/DeckContext.tsx +2 -0
- package/corpus/templates/slides/app/global.css +60 -0
- package/corpus/templates/slides/app/hooks/use-agent-generating.ts +76 -5
- package/corpus/templates/slides/app/hooks/use-workspace-defaults.ts +26 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +38 -3
- package/corpus/templates/slides/app/lib/generation-state.ts +13 -3
- package/corpus/templates/slides/app/lib/slide-image-replacement.ts +27 -6
- package/corpus/templates/slides/app/lib/text-tool-shortcut.ts +62 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +197 -83
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +95 -0
- package/corpus/templates/slides/app/pages/Index.tsx +348 -53
- package/corpus/templates/slides/changelog/2026-07-28-pick-an-existing-deck-as-a-style-reference-when-creating-a-n.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-ai-editing-status-is-now-quieter-and-only-shows-slide-presen.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-design-systems-and-reference-decks-are-easier-to-choose-toge.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-generated-decks-now-receive-a-concise-relevant-title-before-.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-new-deck-prompts-reuse-empty-chats.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-new-deck-setup-now-stays-in-the-editor-with-closable-style-a.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-selected-words-and-text-runs-can-now-be-styled-independently.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-slide-annotation-tools-are-clearer-and-escape-now-exits-anno.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-slide-editing-now-opens-with-the-app-navigation-collapsed-fo.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-slide-editing-stays-visually-clean-on-hover-without-a-canvas.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-slides-now-appear-one-by-one-while-ai-builds-a-deck-with-ste.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-text-boxes-now-select-move-duplicate-resize-and-style-like-a.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-29-untitled-decks-now-use-a-clearer-this-deck-label-in-the-agen.md +6 -0
- package/corpus/templates/slides/server/handlers/image-providers/builder.ts +305 -0
- package/corpus/templates/slides/server/handlers/image-providers/index.ts +6 -3
- package/corpus/templates/slides/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/slides/server/workspace-defaults.ts +169 -0
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +31 -8
- package/corpus/templates/tasks/app/i18n/en-US.ts +7 -0
- package/corpus/templates/tasks/app/routes/settings.tsx +25 -2
- package/corpus/templates/tasks/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/corpus/toolkit/CHANGELOG.md +15 -0
- package/corpus/toolkit/README.md +2 -2
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/app-shell/sidebar-footer-actions.tsx +0 -3
- package/corpus/toolkit/src/chat-history.css +1 -0
- package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +35 -14
- package/corpus/toolkit/src/composer/PromptComposer.tsx +6 -0
- package/corpus/toolkit/src/composer/TiptapComposer.tsx +11 -3
- package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +64 -11
- package/dist/action.d.ts +44 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +9 -0
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/builder-engine.js +6 -4
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/production-agent.d.ts +11 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +131 -90
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/tool-search.d.ts +4 -0
- package/dist/agent/tool-search.d.ts.map +1 -1
- package/dist/agent/tool-search.js +30 -0
- package/dist/agent/tool-search.js.map +1 -1
- package/dist/automations/service.d.ts +85 -0
- package/dist/automations/service.d.ts.map +1 -0
- package/dist/automations/service.js +332 -0
- package/dist/automations/service.js.map +1 -0
- package/dist/browser-context/index.d.ts +579 -0
- package/dist/browser-context/index.d.ts.map +1 -0
- package/dist/browser-context/index.js +331 -0
- package/dist/browser-context/index.js.map +1 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +1 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts +6 -2
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +20 -3
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +19 -2
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat.d.ts +15 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +13 -3
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/agent-page/AgentJobsTab.d.ts +1 -0
- package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
- package/dist/client/agent-page/AgentJobsTab.js +186 -98
- package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +4 -4
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/agent-page/use-jobs.d.ts +7 -0
- package/dist/client/agent-page/use-jobs.d.ts.map +1 -1
- package/dist/client/agent-page/use-jobs.js.map +1 -1
- package/dist/client/analytics-session.d.ts.map +1 -1
- package/dist/client/analytics-session.js +13 -0
- package/dist/client/analytics-session.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +29 -6
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts +0 -9
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
- package/dist/client/settings/AutomationsSection.js +9 -168
- package/dist/client/settings/AutomationsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts +9 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +19 -11
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/index.d.ts +1 -1
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -1
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/use-agent-chat.d.ts.map +1 -1
- package/dist/client/use-agent-chat.js +20 -3
- package/dist/client/use-agent-chat.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +4 -17
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +2 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/workspace-deploy.d.ts.map +1 -1
- package/dist/deploy/workspace-deploy.js +2 -1
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +82 -6
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/fetch-tool.d.ts.map +1 -1
- package/dist/extensions/fetch-tool.js +11 -0
- package/dist/extensions/fetch-tool.js.map +1 -1
- package/dist/extensions/routes.d.ts +5 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +7 -1
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/web-content.d.ts +1 -0
- package/dist/extensions/web-content.d.ts.map +1 -1
- package/dist/extensions/web-content.js +82 -1
- package/dist/extensions/web-content.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/integrations/computer-supervision.d.ts.map +1 -1
- package/dist/integrations/computer-supervision.js +22 -1
- package/dist/integrations/computer-supervision.js.map +1 -1
- package/dist/integrations/index.d.ts +3 -2
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +3 -2
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/integration-durable-dispatch-config.d.ts +2 -0
- package/dist/integrations/integration-durable-dispatch-config.d.ts.map +1 -1
- package/dist/integrations/integration-durable-dispatch-config.js +4 -0
- package/dist/integrations/integration-durable-dispatch-config.js.map +1 -1
- package/dist/integrations/integration-durable-dispatch.d.ts +2 -2
- package/dist/integrations/integration-durable-dispatch.d.ts.map +1 -1
- package/dist/integrations/integration-durable-dispatch.js +2 -2
- package/dist/integrations/integration-durable-dispatch.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +84 -39
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/remote-browser-actions.d.ts +7 -0
- package/dist/integrations/remote-browser-actions.d.ts.map +1 -0
- package/dist/integrations/remote-browser-actions.js +482 -0
- package/dist/integrations/remote-browser-actions.js.map +1 -0
- package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -1
- package/dist/jobs/actions/list-recurring-jobs.js +4 -6
- package/dist/jobs/actions/list-recurring-jobs.js.map +1 -1
- package/dist/jobs/actions/manage-recurring-job.js +3 -6
- package/dist/jobs/actions/manage-recurring-job.js.map +1 -1
- package/dist/jobs/background-automation-runner.d.ts +76 -0
- package/dist/jobs/background-automation-runner.d.ts.map +1 -0
- package/dist/jobs/background-automation-runner.js +288 -0
- package/dist/jobs/background-automation-runner.js.map +1 -0
- package/dist/jobs/frontmatter.d.ts +63 -0
- package/dist/jobs/frontmatter.d.ts.map +1 -0
- package/dist/jobs/frontmatter.js +216 -0
- package/dist/jobs/frontmatter.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +6 -60
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +67 -484
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/jobs/tools.d.ts.map +1 -1
- package/dist/jobs/tools.js +24 -3
- package/dist/jobs/tools.js.map +1 -1
- package/dist/localization/default-messages.d.ts +28 -33
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +34 -39
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp-client/index.d.ts.map +1 -1
- package/dist/mcp-client/index.js +4 -0
- package/dist/mcp-client/index.js.map +1 -1
- package/dist/notifications/actions.d.ts.map +1 -1
- package/dist/notifications/actions.js +5 -0
- package/dist/notifications/actions.js.map +1 -1
- package/dist/notifications/routes.d.ts +6 -6
- package/dist/observability/routes.d.ts +3 -3
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +5 -0
- package/dist/progress/actions.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
- package/dist/provider-api/actions/github-repo-files.d.ts.map +1 -1
- package/dist/provider-api/actions/github-repo-files.js +9 -0
- package/dist/provider-api/actions/github-repo-files.js.map +1 -1
- package/dist/provider-api/actions/provider-api.d.ts +16 -16
- package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
- package/dist/provider-api/actions/provider-api.js +14 -0
- package/dist/provider-api/actions/provider-api.js.map +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +5 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat/browser-team-tools.d.ts.map +1 -1
- package/dist/server/agent-chat/browser-team-tools.js +90 -3
- package/dist/server/agent-chat/browser-team-tools.js.map +1 -1
- package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
- package/dist/server/agent-chat/framework-prompts.js +7 -11
- package/dist/server/agent-chat/framework-prompts.js.map +1 -1
- package/dist/server/agent-chat/plugin-options.d.ts +3 -3
- package/dist/server/agent-chat/plugin-options.js.map +1 -1
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
- package/dist/server/agent-chat/script-entries.js +43 -1
- package/dist/server/agent-chat/script-entries.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +24 -5
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/attribution.d.ts +6 -0
- package/dist/server/attribution.d.ts.map +1 -1
- package/dist/server/attribution.js +14 -14
- package/dist/server/attribution.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +5 -2
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts +2 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +6 -3
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +7 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +3 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/csrf.js +25 -0
- package/dist/server/csrf.js.map +1 -1
- package/dist/server/google-oauth.d.ts +3 -0
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +12 -1
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +18 -0
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/prompts/framework-core-compact.js +3 -3
- package/dist/server/prompts/framework-core-compact.js.map +1 -1
- package/dist/server/prompts/framework-core.js +3 -3
- package/dist/server/prompts/framework-core.js.map +1 -1
- package/dist/server/prompts/shared-rules.js +3 -3
- package/dist/server/prompts/shared-rules.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.d.ts.map +1 -1
- package/dist/settings/index.js +1 -1
- package/dist/settings/index.js.map +1 -1
- package/dist/shared/analytics-anonymous-id.d.ts +12 -0
- package/dist/shared/analytics-anonymous-id.d.ts.map +1 -0
- package/dist/shared/analytics-anonymous-id.js +29 -0
- package/dist/shared/analytics-anonymous-id.js.map +1 -0
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -5
- package/dist/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +26 -0
- package/dist/templates/default/app/i18n/de-DE.ts +28 -0
- package/dist/templates/default/app/i18n/en-US.ts +27 -0
- package/dist/templates/default/app/i18n/es-ES.ts +28 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +28 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +25 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +27 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +27 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +27 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +24 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +24 -0
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
- package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
- package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
- package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
- package/dist/tracking/providers.d.ts.map +1 -1
- package/dist/tracking/providers.js +1 -0
- package/dist/tracking/providers.js.map +1 -1
- package/dist/tracking/registry.d.ts +1 -0
- package/dist/tracking/registry.d.ts.map +1 -1
- package/dist/tracking/registry.js +1 -0
- package/dist/tracking/registry.js.map +1 -1
- package/dist/tracking/types.d.ts +1 -0
- package/dist/tracking/types.d.ts.map +1 -1
- package/dist/tracking/types.js.map +1 -1
- package/dist/triggers/actions/list-automations.d.ts +7 -0
- package/dist/triggers/actions/list-automations.d.ts.map +1 -1
- package/dist/triggers/actions/list-automations.js +29 -41
- package/dist/triggers/actions/list-automations.js.map +1 -1
- package/dist/triggers/actions/manage-automation.js +15 -33
- package/dist/triggers/actions/manage-automation.js.map +1 -1
- package/dist/triggers/actions.d.ts.map +1 -1
- package/dist/triggers/actions.js +184 -95
- package/dist/triggers/actions.js.map +1 -1
- package/dist/triggers/dispatcher.d.ts +3 -9
- package/dist/triggers/dispatcher.d.ts.map +1 -1
- package/dist/triggers/dispatcher.js +134 -304
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/triggers/routes.d.ts.map +1 -1
- package/dist/triggers/routes.js +76 -17
- package/dist/triggers/routes.js.map +1 -1
- package/dist/triggers/types.d.ts +4 -23
- package/dist/triggers/types.d.ts.map +1 -1
- package/dist/triggers/types.js.map +1 -1
- package/docs/content/agent-surfaces.mdx +4 -4
- package/docs/content/automations.mdx +61 -12
- package/docs/content/deployment.mdx +11 -4
- package/docs/content/extensions.mdx +39 -33
- package/docs/content/recurring-jobs.mdx +41 -19
- package/docs/content/template-dispatch-operations.mdx +19 -7
- package/package.json +4 -2
- package/src/action.ts +55 -0
- package/src/agent/engine/builder-engine.ts +8 -4
- package/src/agent/production-agent.ts +175 -100
- package/src/agent/tool-search.ts +36 -0
- package/src/automations/service.ts +506 -0
- package/src/browser-context/index.ts +392 -0
- package/src/client/AgentPanel.tsx +2 -1
- package/src/client/FeedbackButton.tsx +37 -4
- package/src/client/MultiTabAssistantChat.tsx +21 -0
- package/src/client/agent-chat.ts +31 -3
- package/src/client/agent-page/AgentJobsTab.tsx +438 -310
- package/src/client/agent-page/AgentTabsPage.tsx +4 -4
- package/src/client/agent-page/use-jobs.ts +7 -0
- package/src/client/analytics-session.ts +13 -0
- package/src/client/extensions/ExtensionViewer.tsx +67 -0
- package/src/client/settings/AutomationsSection.tsx +27 -499
- package/src/client/settings/SettingsPanel.tsx +32 -11
- package/src/client/settings/index.ts +2 -0
- package/src/client/use-agent-chat.ts +35 -3
- package/src/client/use-chat-threads.ts +8 -25
- package/src/deploy/build.ts +2 -0
- package/src/deploy/workspace-deploy.ts +2 -0
- package/src/extensions/actions.ts +115 -3
- package/src/extensions/fetch-tool.ts +11 -0
- package/src/extensions/routes.ts +16 -1
- package/src/extensions/web-content.ts +96 -1
- package/src/integrations/computer-supervision.ts +33 -1
- package/src/integrations/index.ts +6 -0
- package/src/integrations/integration-durable-dispatch-config.ts +10 -0
- package/src/integrations/integration-durable-dispatch.ts +4 -0
- package/src/integrations/plugin.ts +94 -41
- package/src/integrations/remote-browser-actions.ts +621 -0
- package/src/jobs/actions/list-recurring-jobs.ts +5 -7
- package/src/jobs/actions/manage-recurring-job.ts +3 -7
- package/src/jobs/background-automation-runner.ts +437 -0
- package/src/jobs/frontmatter.ts +308 -0
- package/src/jobs/scheduler.ts +89 -598
- package/src/jobs/tools.ts +22 -3
- package/src/localization/default-messages.ts +45 -45
- package/src/mcp-client/index.ts +6 -0
- package/src/notifications/actions.ts +5 -0
- package/src/progress/actions.ts +5 -0
- package/src/provider-api/actions/github-repo-files.ts +11 -0
- package/src/provider-api/actions/provider-api.ts +13 -0
- package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +4 -4
- package/src/server/action-discovery.ts +7 -0
- package/src/server/agent-chat/browser-team-tools.ts +126 -3
- package/src/server/agent-chat/framework-prompts.ts +7 -11
- package/src/server/agent-chat/plugin-options.ts +3 -3
- package/src/server/agent-chat/script-entries.ts +52 -1
- package/src/server/agent-chat-plugin.ts +25 -5
- package/src/server/attribution.ts +22 -0
- package/src/server/auth.ts +20 -6
- package/src/server/better-auth-instance.ts +10 -2
- package/src/server/core-routes-plugin.ts +10 -1
- package/src/server/csrf.ts +25 -0
- package/src/server/google-oauth.ts +21 -1
- package/src/server/onboarding-html.ts +18 -0
- package/src/server/prompts/framework-core-compact.ts +3 -3
- package/src/server/prompts/framework-core.ts +3 -3
- package/src/server/prompts/shared-rules.ts +3 -3
- package/src/settings/index.ts +1 -0
- package/src/shared/analytics-anonymous-id.ts +35 -0
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -5
- package/src/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/default/app/i18n/ar-SA.ts +26 -0
- package/src/templates/default/app/i18n/de-DE.ts +28 -0
- package/src/templates/default/app/i18n/en-US.ts +27 -0
- package/src/templates/default/app/i18n/es-ES.ts +28 -0
- package/src/templates/default/app/i18n/fr-FR.ts +28 -0
- package/src/templates/default/app/i18n/hi-IN.ts +25 -0
- package/src/templates/default/app/i18n/ja-JP.ts +27 -0
- package/src/templates/default/app/i18n/ko-KR.ts +27 -0
- package/src/templates/default/app/i18n/pt-BR.ts +27 -0
- package/src/templates/default/app/i18n/zh-CN.ts +24 -0
- package/src/templates/default/app/i18n/zh-TW.ts +24 -0
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
- package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
- package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
- package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
- package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
- package/src/tracking/providers.ts +1 -0
- package/src/tracking/registry.ts +2 -1
- package/src/tracking/types.ts +1 -0
- package/src/triggers/actions/list-automations.ts +43 -44
- package/src/triggers/actions/manage-automation.ts +17 -48
- package/src/triggers/actions.ts +218 -127
- package/src/triggers/dispatcher.ts +181 -367
- package/src/triggers/routes.ts +84 -27
- package/src/triggers/types.ts +9 -23
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.dynamic-create"
|
|
5
|
+
name: "View-derived creation defaults"
|
|
6
|
+
user_promise: "Creating through a View starts new records with safe contextual values without turning that View's filters into hidden validation."
|
|
7
|
+
primary_user_job: "Capture a new record where I am working and have it start in the right context without losing the ability to make a valid exception."
|
|
8
|
+
kind: "surface"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies: ["content.view.query", "content.property.constraints"]
|
|
13
|
+
related_features: ["content.feature.data-that-keeps-itself-right"]
|
|
14
|
+
roadmap_boundary: "feature"
|
|
15
|
+
acceptance_summary: "Creation through an effective View seeds only deterministic positive equality, membership, contextual, and renderer-placement values; Database validation remains the sole hard gate, and valid edits may move records into or out of results with truthful feedback."
|
|
16
|
+
proof_requirements:
|
|
17
|
+
[
|
|
18
|
+
"Typed effective-View analysis for positive seeds and refusal of ambiguous inference",
|
|
19
|
+
"Shared UI and Action creation with Database permissions, validation, defaults, Events, revisions, and Undo",
|
|
20
|
+
"Real-interface workflows for conflicting seeds, post-create exclusion, and valid edits that leave or re-enter results",
|
|
21
|
+
]
|
|
22
|
+
evidence: []
|
|
23
|
+
superseded_by: null
|
|
24
|
+
last_reviewed: "2026-07-29"
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# View-derived creation defaults
|
|
28
|
+
|
|
29
|
+
## Why this exists
|
|
30
|
+
|
|
31
|
+
People often create work from a focused list, Board lane, or Calendar date.
|
|
32
|
+
That surface should provide a useful starting context, but a filter only says
|
|
33
|
+
which records are included in a result. Treating it as a hidden mutation rule
|
|
34
|
+
would make a View unexpectedly own data validity and block legitimate work.
|
|
35
|
+
|
|
36
|
+
## Example workflow
|
|
37
|
+
|
|
38
|
+
An editor opens an `Active` Board filtered to `Active = true` and chooses a
|
|
39
|
+
lane for `Status = Planned`. New work begins with both values. The editor then
|
|
40
|
+
turns `Active` off because that is the correct valid state. Content commits the
|
|
41
|
+
change through the Database, removes the record from the active View, and shows
|
|
42
|
+
**Moved out of this View · Undo**; it does not reject the change or delete the
|
|
43
|
+
record.
|
|
44
|
+
|
|
45
|
+
## Product contract
|
|
46
|
+
|
|
47
|
+
### Seed only what is deterministic
|
|
48
|
+
|
|
49
|
+
- Creation uses the effective View: its saved definition, applicable personal
|
|
50
|
+
arrangement, and renderer placement. Human and agent creation receive the
|
|
51
|
+
same analysis and shared Action behavior.
|
|
52
|
+
- Exact positive equality, positive membership, contextual equality, and an
|
|
53
|
+
explicit renderer placement may seed stored values when they have an
|
|
54
|
+
unambiguous writable route. Examples include `Active = true`, `Tags contains
|
|
55
|
+
Urgent`, `Assignee = current actor`, a Board lane, or a Calendar date.
|
|
56
|
+
- `OR`, negation, ranges, full-text search, aggregate conditions, arbitrary
|
|
57
|
+
formulas, and other non-deterministic expressions never manufacture a stored
|
|
58
|
+
value merely because a record might satisfy them.
|
|
59
|
+
- Seeds are starting values, not locked fields. Explicit user intent may change
|
|
60
|
+
them before or after creation whenever the owning Database permits the
|
|
61
|
+
resulting mutation.
|
|
62
|
+
|
|
63
|
+
### Inclusion is not validation
|
|
64
|
+
|
|
65
|
+
- Query and View filters control result inclusion. The owning Database owns
|
|
66
|
+
membership, Properties, defaults, constraints, permissions, Rules, and the
|
|
67
|
+
canonical create/write path; only those rules decide whether a value is
|
|
68
|
+
valid.
|
|
69
|
+
- A View over a Query cannot seed or validate outside the Query's declared
|
|
70
|
+
creation routes. A composed Query with no applicable route is truthfully
|
|
71
|
+
read-only, and a View cannot invent a target.
|
|
72
|
+
- If valid creation or a later valid edit no longer matches the effective
|
|
73
|
+
result, Content preserves the record, refreshes the result, and gives light
|
|
74
|
+
feedback such as **Created, but not shown in this View** or **Moved out of
|
|
75
|
+
this View**, with an appropriate Open or Undo route.
|
|
76
|
+
- Conflicting automatic seeds never cause a guess. Quick capture expands to the
|
|
77
|
+
normal creation editor, explains the conflict, and lets Database validation
|
|
78
|
+
and explicit intent resolve it.
|
|
79
|
+
|
|
80
|
+
## Boundaries and non-goals
|
|
81
|
+
|
|
82
|
+
- Database and Query Views own presentation, downstream filters, and the
|
|
83
|
+
effective View; Database constraints and Rules own validity.
|
|
84
|
+
- Reusable Queries own intrinsic filters and creation routes. This Capability
|
|
85
|
+
applies those routes in a View; it does not define cross-source write routing.
|
|
86
|
+
- This is not a bulk-update, schema-default, task-template, permission, or
|
|
87
|
+
second Action system.
|
|
88
|
+
|
|
89
|
+
## Acceptance stories
|
|
90
|
+
|
|
91
|
+
### Seed a Board capture without locking it
|
|
92
|
+
|
|
93
|
+
Given an authorized Board View filtered to `Active = true` with a `Planned`
|
|
94
|
+
lane, when a person creates a record in that lane, then the record starts with
|
|
95
|
+
`Active = true` and `Status = Planned`. When they validly set `Active = false`,
|
|
96
|
+
then the Database commits it and the record leaves the View with Undo feedback.
|
|
97
|
+
|
|
98
|
+
### Refuse to infer an ambiguous filter
|
|
99
|
+
|
|
100
|
+
Given a View filtered by `Priority = High OR Priority = Urgent` and a date
|
|
101
|
+
range, when a person starts quick capture, then Content does not choose a
|
|
102
|
+
priority or fabricate a date from those expressions; it opens the normal editor
|
|
103
|
+
with only independently deterministic defaults.
|
|
104
|
+
|
|
105
|
+
### Resolve conflicting seeds visibly
|
|
106
|
+
|
|
107
|
+
Given a View's positive filter and renderer placement propose incompatible
|
|
108
|
+
writable values, when an authorized person creates a record, then no arbitrary
|
|
109
|
+
value is committed and the normal editor identifies the mismatch. If the person
|
|
110
|
+
chooses a valid value outside the View, the record is created and truthfully
|
|
111
|
+
reported as not shown.
|
|
112
|
+
|
|
113
|
+
## Current evidence
|
|
114
|
+
|
|
115
|
+
Existing filters, saved Views, Board/Calendar rendering, and creation paths are
|
|
116
|
+
useful donor substrate. They do not yet prove typed seed analysis, identical
|
|
117
|
+
human/agent behavior, conflict expansion, result-transition feedback, or the
|
|
118
|
+
complete Database-validation boundary. This Capability remains `approved_shape`.
|
|
119
|
+
|
|
120
|
+
## Proof plan
|
|
121
|
+
|
|
122
|
+
1. Test equality, membership, contextual, Board, and Calendar seeds through UI
|
|
123
|
+
and Actions, including permissions, defaults, constraints, Rules, Events,
|
|
124
|
+
revisions, reload, and Undo.
|
|
125
|
+
2. Assert that OR, negation, ranges, search, aggregates, formulas, unavailable
|
|
126
|
+
fields, ambiguous routes, and inaccessible values produce no invented seed.
|
|
127
|
+
3. Exercise post-create exclusion, editing records out of and back into Database
|
|
128
|
+
and Query Views, conflicting seeds, and composed Query zero/one/many routes.
|
|
129
|
+
4. Verify accessible feedback and keyboard capture without turning View
|
|
130
|
+
inclusion into a hidden mutation failure.
|
|
131
|
+
|
|
132
|
+
## Open questions
|
|
133
|
+
|
|
134
|
+
- The exact precedence and presentation for multiple compatible defaults,
|
|
135
|
+
Database defaults, and renderer placement need implementation design.
|
|
136
|
+
- The compact creation editor for conflicting seeds and the exact Undo scope
|
|
137
|
+
need interaction design, while preserving the settled ownership boundary.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.fast-capture"
|
|
5
|
+
name: "Fast keyboard capture"
|
|
6
|
+
user_promise: "Keyboard-fluent List and Table capture"
|
|
7
|
+
primary_user_job: "Capture and revise a record at keyboard speed without leaving the current authorized View."
|
|
8
|
+
kind: "surface"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies: ["content.view.query", "content.agent.action-parity"]
|
|
13
|
+
related_features:
|
|
14
|
+
[
|
|
15
|
+
"content.feature.see-your-information-your-way",
|
|
16
|
+
"content.feature.run-projects-your-way",
|
|
17
|
+
]
|
|
18
|
+
roadmap_boundary: "feature"
|
|
19
|
+
acceptance_summary: "List and Table capture create and edit canonical records through the shared Action surface, preserve keyboard focus, and roll back an unsuccessful optimistic update visibly."
|
|
20
|
+
proof_requirements:
|
|
21
|
+
[
|
|
22
|
+
"Keyboard-only create, edit, Enter, Tab, escape, navigation, and focus-return coverage",
|
|
23
|
+
"Shared Action authorization, validation, history, error, and optimistic rollback coverage",
|
|
24
|
+
"Real-interface assistive-technology and concurrent-refresh workflow",
|
|
25
|
+
]
|
|
26
|
+
evidence: []
|
|
27
|
+
superseded_by: null
|
|
28
|
+
last_reviewed: "2026-07-29"
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# Fast keyboard capture
|
|
32
|
+
|
|
33
|
+
## Why this exists
|
|
34
|
+
|
|
35
|
+
Quick capture keeps a small thought from becoming a ceremony while retaining the
|
|
36
|
+
Database's rules and the record's canonical identity.
|
|
37
|
+
|
|
38
|
+
## Example workflow
|
|
39
|
+
|
|
40
|
+
An editor tabs to the last row of a filtered List, presses Enter, types a title,
|
|
41
|
+
and moves through editable cells with Tab. A rejected change returns focus and
|
|
42
|
+
an explanation; it does not leave a convincing but unsaved row behind.
|
|
43
|
+
|
|
44
|
+
## Product contract
|
|
45
|
+
|
|
46
|
+
- List and Table are keyboard editors of canonical Database records, not local drafts.
|
|
47
|
+
- Enter, Tab, arrow navigation, escape, selection, and focus restoration are predictable and accessible.
|
|
48
|
+
- Creation and edits use the same authorized Action, validation, Events, history, and failure behavior as an agent.
|
|
49
|
+
- Optimistic UI is reversible; denied, invalid, stale, or unavailable work is visibly distinct from success.
|
|
50
|
+
|
|
51
|
+
## Boundaries and non-goals
|
|
52
|
+
|
|
53
|
+
View-derived creation defaults own contextual seeds. This Capability does not define
|
|
54
|
+
bulk editing, a new inline data store, or a permission bypass.
|
|
55
|
+
|
|
56
|
+
## Acceptance stories
|
|
57
|
+
|
|
58
|
+
### Capture a record without a mouse
|
|
59
|
+
|
|
60
|
+
Given an editable List, when a person enters a title and tabs through a writable field,
|
|
61
|
+
then one valid canonical record is created and focus advances predictably.
|
|
62
|
+
|
|
63
|
+
### Recover from a rejected edit
|
|
64
|
+
|
|
65
|
+
Given an optimistic inline edit that fails validation, when the Action rejects it, then
|
|
66
|
+
the rendered value rolls back, focus remains useful, and the failure is announced.
|
|
67
|
+
|
|
68
|
+
## Current evidence
|
|
69
|
+
|
|
70
|
+
Existing Database editing and View machinery are donor substrate. No complete proof yet
|
|
71
|
+
covers keyboard semantics, Action parity, rollback, accessibility, and recovery; this
|
|
72
|
+
Capability remains `approved_shape`.
|
|
73
|
+
|
|
74
|
+
## Proof plan
|
|
75
|
+
|
|
76
|
+
1. Test keyboard creation and editing across List and Table with validation and permissions.
|
|
77
|
+
2. Verify Action/UI parity, Events, history, stale writes, rollback, and reload.
|
|
78
|
+
3. Exercise screen-reader announcements, focus order, and concurrent result refreshes.
|
|
79
|
+
|
|
80
|
+
## Open questions
|
|
81
|
+
|
|
82
|
+
The compact editor's exact escape and multi-cell paste semantics need interaction design.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.graph"
|
|
5
|
+
name: "Graph View"
|
|
6
|
+
user_promise: "Graph lays out query-selected canonical objects and typed Relationships for access-safe exploration and editing."
|
|
7
|
+
primary_user_job: "Explore a meaningful neighborhood of connected records, understand why they relate, and make an authorized semantic change without treating a visual line as the source of truth."
|
|
8
|
+
kind: "surface"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies:
|
|
13
|
+
[
|
|
14
|
+
"content.knowledge.graph",
|
|
15
|
+
"content.relationship.edge",
|
|
16
|
+
"content.view.renderer-conformance",
|
|
17
|
+
]
|
|
18
|
+
related_features: ["content.feature.sketch-connections-keep-whats-true"]
|
|
19
|
+
roadmap_boundary: "feature"
|
|
20
|
+
acceptance_summary: "Graph renders an access-scoped saved relationship query as canonical nodes and typed edges, supports authorized typed-edge editing, and keeps every layout operation separate from semantic truth."
|
|
21
|
+
proof_requirements:
|
|
22
|
+
[
|
|
23
|
+
"Access-scoped graph-query results, traversal, expansion, filtering, and empty or unavailable states",
|
|
24
|
+
"Typed-edge creation, editing, removal, permission denial, and history through the shared Relationship Action",
|
|
25
|
+
"Manual and physics-assisted layouts, pinning, saved arrangements, reset, and proof that layout never mutates semantic relationships",
|
|
26
|
+
"Keyboard, assistive-technology, dense-neighborhood, and drill-in workflows in the real interface",
|
|
27
|
+
]
|
|
28
|
+
evidence: []
|
|
29
|
+
superseded_by: null
|
|
30
|
+
last_reviewed: "2026-07-29"
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# Graph View
|
|
34
|
+
|
|
35
|
+
## Why this exists
|
|
36
|
+
|
|
37
|
+
A list can show that records are related without making the surrounding structure legible. Graph View lets people explore an access-scoped semantic neighborhood: canonical records are nodes, and each visible line is a real typed Relationship rather than decoration.
|
|
38
|
+
|
|
39
|
+
It is for questions such as “what supports this claim?” or “which work is blocked by this decision?” It is not a drawing board, a statistical chart, or an authored diagram.
|
|
40
|
+
|
|
41
|
+
## Example workflow
|
|
42
|
+
|
|
43
|
+
A project lead opens a saved graph query centered on a decision Page and expands one relationship type at a time. They pin the Pages relevant to a review, use a force-assisted layout to separate a crowded neighborhood, and save that arrangement for later. With the `blocks` type selected in the edge tool, they draw from one authorized Page to another; Content creates the corresponding canonical Relationship and shows it in Connections and other authorized projections. Resetting the layout changes only positions, never the relationship.
|
|
44
|
+
|
|
45
|
+
## Product contract
|
|
46
|
+
|
|
47
|
+
- Graph renders a saved, typed, access-scoped relationship query. Nodes retain their canonical Page, Block, Source, or query-result identity; Graph owns only its View configuration and arrangement.
|
|
48
|
+
- Each semantic edge displays a Relationship type and is a projection of the canonical edge. Editing, removing, or creating an edge uses the shared typed Relationship Action and records normal history.
|
|
49
|
+
- The edge tool requires a Relationship type before it can create an edge. A line never becomes a semantic assertion merely because it was drawn.
|
|
50
|
+
- People may filter, group, and style by relationship type; expand authorized neighbors; open canonical records; pin or unpin nodes; save a useful arrangement; and reset it.
|
|
51
|
+
- Manual, hierarchical, radial, and physics-assisted layouts may change positions only. Layout algorithms never infer, create, rewrite, or delete Relationships.
|
|
52
|
+
- Graph applies access before query evaluation, traversal, counts, labels, previews, export, or agent use. An inaccessible endpoint is not exposed through a visible placeholder, degree, or hidden-edge count.
|
|
53
|
+
- An empty query is an honest empty Graph. A failed, stale, or unavailable query reports that state distinctly and does not masquerade as no relationships.
|
|
54
|
+
|
|
55
|
+
## Boundaries and non-goals
|
|
56
|
+
|
|
57
|
+
- `content.relationship.edge` owns canonical edge identity, cardinality, authority, mutation, and history; Graph is an authorized editor and projection.
|
|
58
|
+
- `content.knowledge.graph` owns relationship-query semantics and traversal; Graph owns visual exploration and layout.
|
|
59
|
+
- `content.view.canvas` owns intentional spatial composition and view-local freeform connectors. Canvas lines require explicit promotion before they become Relationships.
|
|
60
|
+
- `content.view.chart` owns analytical visualizations over measures and grouped data. Authored Mermaid diagrams belong to code-authoring and Mermaid rendering, not Graph.
|
|
61
|
+
- Graph does not create a parallel graph datastore, access model, permission bypass, task dependency engine, or diagram language.
|
|
62
|
+
|
|
63
|
+
## Acceptance stories
|
|
64
|
+
|
|
65
|
+
### Explore only what the viewer may know
|
|
66
|
+
|
|
67
|
+
Given a saved graph query that includes both accessible and inaccessible relationships, when a viewer opens and expands Graph, then the graph, counts, labels, previews, and exports contain only authorized nodes and edges, while a direct unauthorized request receives an honest denial.
|
|
68
|
+
|
|
69
|
+
### Create a semantic edge deliberately
|
|
70
|
+
|
|
71
|
+
Given an editor authorized to change two Pages and use the `supports` Relationship type, when they select `supports` and draw an edge, then one canonical typed Relationship is created and appears in Connections and other authorized projections. When no type is selected, drawing cannot commit an edge.
|
|
72
|
+
|
|
73
|
+
### Separate arrangement from meaning
|
|
74
|
+
|
|
75
|
+
Given a dense saved Graph, when a viewer pins nodes, runs a force-assisted layout, saves the arrangement, and later resets it, then node positions change as requested but the relationship query and canonical edge history remain unchanged.
|
|
76
|
+
|
|
77
|
+
### Report unavailable work truthfully
|
|
78
|
+
|
|
79
|
+
Given a graph query that cannot complete because its source is unavailable, when Graph opens, then it reports the unavailable state and retry path rather than rendering a plausible empty neighborhood.
|
|
80
|
+
|
|
81
|
+
## Current evidence
|
|
82
|
+
|
|
83
|
+
The repository defines the shared object, query, Relationship, and renderer boundaries that Graph will need. Existing code may offer useful visualization or relation substrate, but no current evidence proves the complete Graph query, edge-editing, access-closure, layout, or recovery contract. This Capability remains `approved_shape`.
|
|
84
|
+
|
|
85
|
+
## Proof plan
|
|
86
|
+
|
|
87
|
+
1. Exercise saved graph queries with filtering, expansion, grouping, pagination or bounds, empty results, stale inputs, and unavailable sources.
|
|
88
|
+
2. Create, edit, and remove typed edges through Graph alongside Connections and another projection; verify one identity, permission decision, and committed history.
|
|
89
|
+
3. Verify manual, hierarchical, radial, and physics-assisted layouts across pin, save, reload, reset, and concurrent semantic edits; assert that no layout path changes an edge.
|
|
90
|
+
4. Run keyboard and assistive-technology workflows for navigation, node inspection, edge-type selection, editing, errors, and dense-graph recovery.
|
|
91
|
+
5. Re-run traversal, labels, counts, previews, export, and agent reads with changing endpoint access to prove access precedes every computation.
|
|
92
|
+
|
|
93
|
+
## Open questions
|
|
94
|
+
|
|
95
|
+
The contract leaves rendering-engine choice, layout implementation, graph-size limits, and exact controls open. Those choices must preserve bounded loading, explicit failure states, and the semantic/layout separation above.
|
package/corpus/templates/content/docs/product/capabilities/content.view.grouping-aggregation.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.grouping-aggregation"
|
|
5
|
+
name: "Grouping and aggregation"
|
|
6
|
+
user_promise: "Views group across several dimensions and compute access-safe totals, subtotals, rollups, and measures."
|
|
7
|
+
primary_user_job: "Understand meaningful totals and their contributing records without learning information I cannot access."
|
|
8
|
+
kind: "primitive"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies: ["content.view.query", "content.access.safe-aggregate"]
|
|
13
|
+
related_features:
|
|
14
|
+
[
|
|
15
|
+
"content.feature.see-your-information-your-way",
|
|
16
|
+
"content.feature.plan-work-across-time",
|
|
17
|
+
"content.feature.understand-what-your-data-says",
|
|
18
|
+
]
|
|
19
|
+
roadmap_boundary: "feature"
|
|
20
|
+
acceptance_summary: "Authorized View results can be grouped by typed dimensions and measured with access-safe totals, subtotals, rollups, and drill-in."
|
|
21
|
+
proof_requirements:
|
|
22
|
+
[
|
|
23
|
+
"Typed multi-dimension grouping, ordering, empty groups, and measure semantics",
|
|
24
|
+
"Access-before-grouping, totals, rollups, drill-in, export, and agent-context tests",
|
|
25
|
+
"Real-interface refresh, unavailable-source, dense-result, and accessible-table workflows",
|
|
26
|
+
]
|
|
27
|
+
evidence: []
|
|
28
|
+
superseded_by: null
|
|
29
|
+
last_reviewed: "2026-07-29"
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
# Grouping and aggregation
|
|
33
|
+
|
|
34
|
+
## Why this exists
|
|
35
|
+
|
|
36
|
+
People need a useful shape for many records, but a subtotal must never reveal a row,
|
|
37
|
+
field, or inference that its viewer may not know.
|
|
38
|
+
|
|
39
|
+
## Example workflow
|
|
40
|
+
|
|
41
|
+
A lead groups authorized work by project and status, reads each subtotal, and opens a
|
|
42
|
+
group to inspect its canonical records. A private task contributes nowhere: not to a
|
|
43
|
+
count, a sum, an empty-group hint, or an export.
|
|
44
|
+
|
|
45
|
+
## Product contract
|
|
46
|
+
|
|
47
|
+
- Views group their canonical Query result by typed dimensions and compute declared measures.
|
|
48
|
+
- Access applies before grouping, aggregation, rollup, count, labels, drill-in, export, or agent context.
|
|
49
|
+
- Groups retain stable query semantics; sorting, collapse, and presentation do not mutate records.
|
|
50
|
+
- Empty, stale, unavailable, and partially loaded inputs are explicitly represented.
|
|
51
|
+
|
|
52
|
+
## Boundaries and non-goals
|
|
53
|
+
|
|
54
|
+
Queries own result semantics and safe aggregates own disclosure rules. This is not a
|
|
55
|
+
spreadsheet engine, a new analytics datastore, or permission-derived guessing.
|
|
56
|
+
|
|
57
|
+
## Acceptance stories
|
|
58
|
+
|
|
59
|
+
### Read an authorized subtotal
|
|
60
|
+
|
|
61
|
+
Given a grouped View with private rows, when a viewer opens it, then every group and
|
|
62
|
+
total is computed only from authorized rows and fields.
|
|
63
|
+
|
|
64
|
+
### Drill into a measure
|
|
65
|
+
|
|
66
|
+
Given a visible aggregate cell, when a viewer drills in, then Content opens the exact
|
|
67
|
+
authorized contributing records rather than an inferred or copied collection.
|
|
68
|
+
|
|
69
|
+
## Current evidence
|
|
70
|
+
|
|
71
|
+
Existing filters and renderer utilities are donor substrate. The repository does not
|
|
72
|
+
yet prove multi-dimensional measure semantics or disclosure closure, so this remains
|
|
73
|
+
`approved_shape`.
|
|
74
|
+
|
|
75
|
+
## Proof plan
|
|
76
|
+
|
|
77
|
+
1. Test typed grouping, measures, ordering, nulls, empty groups, and rollups.
|
|
78
|
+
2. Test access changes through results, counts, drill-in, exports, and agent context.
|
|
79
|
+
3. Exercise reload, source failure, pagination, dense views, keyboard, and assistive technology.
|
|
80
|
+
|
|
81
|
+
## Open questions
|
|
82
|
+
|
|
83
|
+
The initial measure catalog and treatment of mixed-source precision need implementation design.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.map"
|
|
5
|
+
name: "Map View"
|
|
6
|
+
user_promise: "Map renders typed locations with points, clustering, filtering, and record previews before adding richer geographic layers."
|
|
7
|
+
primary_user_job: "See authorized records in their meaningful places and open the underlying record without making map coordinates a second source of truth."
|
|
8
|
+
kind: "surface"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies: ["content.property.location", "content.view.renderer-conformance"]
|
|
13
|
+
related_features: []
|
|
14
|
+
roadmap_boundary: "supporting"
|
|
15
|
+
acceptance_summary: "Map projects access-scoped canonical results with typed locations, filters, clustering, previews, and shared record actions."
|
|
16
|
+
proof_requirements:
|
|
17
|
+
[
|
|
18
|
+
"Typed location selection, invalid or absent location, viewport, filter, and cluster behavior",
|
|
19
|
+
"Access-safe markers, counts, previews, search, export, and shared Action editing",
|
|
20
|
+
"Real-interface keyboard, assistive alternative, provider-unavailable, and reload workflows",
|
|
21
|
+
]
|
|
22
|
+
evidence: []
|
|
23
|
+
superseded_by: null
|
|
24
|
+
last_reviewed: "2026-07-29"
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Map View
|
|
28
|
+
|
|
29
|
+
## Why this exists
|
|
30
|
+
|
|
31
|
+
Place can be the clearest way to find work, provided a pin remains a projection of a
|
|
32
|
+
typed location on a canonical record.
|
|
33
|
+
|
|
34
|
+
## Example workflow
|
|
35
|
+
|
|
36
|
+
A coordinator filters locations to an authorized region, selects a cluster, previews a
|
|
37
|
+
record, and opens it. Changing the record's location uses the ordinary shared Action;
|
|
38
|
+
the pin updates after the canonical change.
|
|
39
|
+
|
|
40
|
+
## Product contract
|
|
41
|
+
|
|
42
|
+
- Map consumes a canonical Database or Query result and a declared typed location field.
|
|
43
|
+
- Markers, clusters, viewport filters, previews, and counts are access-scoped.
|
|
44
|
+
- Selecting a pin opens or edits the canonical record through shared View Actions.
|
|
45
|
+
- Missing, invalid, stale, and provider-unavailable locations report honestly.
|
|
46
|
+
|
|
47
|
+
## Boundaries and non-goals
|
|
48
|
+
|
|
49
|
+
`content.property.location` owns location meaning. Map is not geocoding custody, route
|
|
50
|
+
planning, a geographic layer editor, or a second record store.
|
|
51
|
+
|
|
52
|
+
## Acceptance stories
|
|
53
|
+
|
|
54
|
+
### Explore only authorized places
|
|
55
|
+
|
|
56
|
+
Given a result containing private locations, when a viewer opens Map, then no marker,
|
|
57
|
+
cluster count, preview, or viewport query exposes those records.
|
|
58
|
+
|
|
59
|
+
### Edit a location through its record
|
|
60
|
+
|
|
61
|
+
Given an authorized marker, when an editor changes its typed location, then the shared
|
|
62
|
+
Action updates one canonical record and the Map refreshes without duplicate state.
|
|
63
|
+
|
|
64
|
+
## Current evidence
|
|
65
|
+
|
|
66
|
+
No current implementation evidence proves Map's location, access, interaction, and
|
|
67
|
+
recovery contract. This Capability remains `approved_shape`.
|
|
68
|
+
|
|
69
|
+
## Proof plan
|
|
70
|
+
|
|
71
|
+
1. Test typed locations, invalid values, filters, clusters, and canonical preview/open.
|
|
72
|
+
2. Verify access closure through markers, counts, viewport changes, exports, and agents.
|
|
73
|
+
3. Exercise keyboard alternatives, source/provider failure, reload, and dense geographic results.
|
|
74
|
+
|
|
75
|
+
## Open questions
|
|
76
|
+
|
|
77
|
+
The first provider boundary and offline geographic behavior remain implementation questions.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.personal-state"
|
|
5
|
+
name: "Personal View state"
|
|
6
|
+
user_promise: "A shared View remembers one private arrangement per person and supports named Only-me Views without copying records."
|
|
7
|
+
primary_user_job: "Explore and remember a useful personal arrangement without changing the dependable View everyone else shares."
|
|
8
|
+
kind: "surface"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies: ["content.view.query", "content.share.views"]
|
|
13
|
+
related_features: ["content.feature.make-the-workspace-yours"]
|
|
14
|
+
roadmap_boundary: "feature"
|
|
15
|
+
acceptance_summary: "Each shared View remembers one unnamed personal arrangement per user, supports any number of named Only-me Views, exposes effective state to agents, and never publishes personal exploration accidentally."
|
|
16
|
+
proof_requirements:
|
|
17
|
+
[
|
|
18
|
+
"One automatically persisted personal arrangement per user and shared View",
|
|
19
|
+
"Reset, Save as new View, and permissioned Update shared View behavior",
|
|
20
|
+
"Focused View Instance containing shared, personal, effective, and delta state for UI and agents",
|
|
21
|
+
"Access isolation, link behavior, persistence, multi-device recovery, and no record copying",
|
|
22
|
+
]
|
|
23
|
+
evidence: []
|
|
24
|
+
superseded_by: null
|
|
25
|
+
last_reviewed: "2026-07-29"
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Personal View state
|
|
29
|
+
|
|
30
|
+
## Why this exists
|
|
31
|
+
|
|
32
|
+
Shared Views need dependable defaults, but people also need to sort, filter, group, resize, and collapse data while they work. Requiring a save decision after every exploration creates meta-work; publishing every experiment creates chaos.
|
|
33
|
+
|
|
34
|
+
## Example workflow
|
|
35
|
+
|
|
36
|
+
An editor opens the team's shared Content Calendar, filters to their own recent articles, resizes columns, and groups by status. Content quietly remembers that arrangement and shows **Viewing with personal changes**. The editor can reset, save it as a named **Only me** View, or deliberately update the shared View if they have permission.
|
|
37
|
+
|
|
38
|
+
## Product contract
|
|
39
|
+
|
|
40
|
+
- Every shared saved View may remember at most one unnamed personal arrangement for each user.
|
|
41
|
+
- The arrangement automatically persists filters, sorting, grouping, column order/size, collapsed sections, and other supported presentation state without a recurring **Save for me** action.
|
|
42
|
+
- When personal state differs, the interface quietly shows **Viewing with personal changes**.
|
|
43
|
+
- **Reset to shared View** removes the remembered override.
|
|
44
|
+
- **Save as new View** creates a stable named View over the same owner input with visibility **Only me** or an allowed shared destination. A person may create many named private Views.
|
|
45
|
+
- **Update shared View** deliberately replaces the shared default only with the required Database/Query authority and records an ordinary reversible Revision.
|
|
46
|
+
- The focused View Instance contains the shared definition, remembered personal override, effective state, and delta between them.
|
|
47
|
+
- Agents receive that effective focused state so they understand what the person sees. They may run arbitrary ephemeral Queries behind the scenes without changing the visible arrangement.
|
|
48
|
+
- An agent changes the personal arrangement only when asked to show a result, saves a named View only when asked, and updates the shared default only through the explicit permitted action.
|
|
49
|
+
- Ordinary copied View links resolve to the saved View definition, never the sender's unnamed personal arrangement.
|
|
50
|
+
- Personal state changes presentation and safe creation seeds only. It never copies records, changes source truth, grants access, or creates a private fork of the Database/Query.
|
|
51
|
+
|
|
52
|
+
## Permissions and failure behavior
|
|
53
|
+
|
|
54
|
+
- Personal arrangements and Only-me Views are visible only to their owner and system processes acting within that person's authority.
|
|
55
|
+
- Saving a shared destination or updating a shared View requires the normal owner permissions; personal state cannot bypass them.
|
|
56
|
+
- Effective results still intersect all View, input, row, field, Source, and viewer access.
|
|
57
|
+
- If personal configuration temporarily references an unavailable field, Content preserves it in a degraded state when the absence may be temporary. Intentional field deletion follows the atomic cleanup contract.
|
|
58
|
+
- Persistence failure leaves the shared View unchanged and reports that the personal arrangement was not remembered; it must not silently publish the state instead.
|
|
59
|
+
|
|
60
|
+
## Boundaries and non-goals
|
|
61
|
+
|
|
62
|
+
- This Capability owns personal presentation state, not Query semantics or Database values.
|
|
63
|
+
- It does not make copied links carry hidden sender state.
|
|
64
|
+
- It does not restrict a person to one named private View; the one-item limit applies only to the automatic unnamed arrangement per shared View.
|
|
65
|
+
- Ephemeral agent exploration is not a saved View and does not mutate UI unless requested.
|
|
66
|
+
|
|
67
|
+
## Acceptance stories
|
|
68
|
+
|
|
69
|
+
### Remember without publishing
|
|
70
|
+
|
|
71
|
+
Given two people open the same shared View, when one changes filters, grouping, and column sizing, then only that person's effective arrangement changes and persists across reload while the other person and shared definition remain unchanged.
|
|
72
|
+
|
|
73
|
+
### Save several private alternatives
|
|
74
|
+
|
|
75
|
+
Given one personal arrangement, when its owner chooses **Save as new View** twice with **Only me**, then two stable private Views exist over the same canonical records while the shared View still retains only one unnamed override for that person.
|
|
76
|
+
|
|
77
|
+
### Keep links predictable
|
|
78
|
+
|
|
79
|
+
Given a person copies the URL while viewing personal changes, when another authorized viewer opens it, then they receive the saved View definition plus their own personal state, never the sender's override.
|
|
80
|
+
|
|
81
|
+
### Give agents the real focused surface
|
|
82
|
+
|
|
83
|
+
Given a focused View with temporary personal filters, when an agent is asked about what is visible, then it receives shared, personal, effective, and delta state and may query further without publishing or changing the arrangement unless asked.
|
|
84
|
+
|
|
85
|
+
## Current evidence
|
|
86
|
+
|
|
87
|
+
Existing View controls and application-state patterns are useful substrate, but the complete unnamed persistence model, named Only-me Views, delta indication, scoped save/update actions, multi-device behavior, and agent-effective context are not proven. This Capability remains `approved_shape`.
|
|
88
|
+
|
|
89
|
+
## Proof plan
|
|
90
|
+
|
|
91
|
+
1. Persist and reset each supported personal filter, sort, group, layout, sizing, and collapsed-state override across reload and devices.
|
|
92
|
+
2. Create several Only-me Views, attempt shared saves with and without authority, and verify one reversible shared Revision.
|
|
93
|
+
3. Copy links under personal changes and verify predictable recipient behavior.
|
|
94
|
+
4. Inspect application state and agent actions for shared/personal/effective/delta parity and non-mutating exploration.
|
|
95
|
+
5. Exercise schema deletion, temporary unavailability, access revocation, persistence failure, Undo, accessibility, and recovery.
|
|
96
|
+
|
|
97
|
+
## Open questions
|
|
98
|
+
|
|
99
|
+
Exact cross-device conflict resolution for simultaneous personal arrangements and the retention policy for long-unused unnamed overrides remain open implementation/product details.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
record_type: "capability"
|
|
3
|
+
spec_version: 2
|
|
4
|
+
id: "content.view.pivot"
|
|
5
|
+
name: "Pivot View"
|
|
6
|
+
user_promise: "Pivot places dimensions on rows and columns, typed aggregations in cells, and drills back to canonical records."
|
|
7
|
+
primary_user_job: "Compare an authorized measure across two meaningful dimensions and inspect the records behind any result."
|
|
8
|
+
kind: "surface"
|
|
9
|
+
state: "approved_shape"
|
|
10
|
+
publicness: "public"
|
|
11
|
+
availability: "universal"
|
|
12
|
+
dependencies: ["content.view.grouping-aggregation"]
|
|
13
|
+
related_features: ["content.feature.understand-what-your-data-says"]
|
|
14
|
+
roadmap_boundary: "feature"
|
|
15
|
+
acceptance_summary: "Pivot configures typed row and column dimensions with access-safe measures, totals, and drill-in to canonical contributing records."
|
|
16
|
+
proof_requirements:
|
|
17
|
+
[
|
|
18
|
+
"Typed dimensions, measure selection, totals, nulls, ordering, and configuration persistence",
|
|
19
|
+
"Access-safe cells, totals, drill-in, export, agent context, and empty or unavailable input tests",
|
|
20
|
+
"Real-interface keyboard table navigation, responsive overflow, reload, and dense-data workflow",
|
|
21
|
+
]
|
|
22
|
+
evidence: []
|
|
23
|
+
superseded_by: null
|
|
24
|
+
last_reviewed: "2026-07-29"
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Pivot View
|
|
28
|
+
|
|
29
|
+
## Why this exists
|
|
30
|
+
|
|
31
|
+
One flat group can answer “how much?”; a pivot makes the crossing of two questions
|
|
32
|
+
legible without detaching its cells from the records that made them.
|
|
33
|
+
|
|
34
|
+
## Example workflow
|
|
35
|
+
|
|
36
|
+
A lead puts project on rows, status on columns, and estimate sum in cells. Selecting a
|
|
37
|
+
cell opens its authorized contributing records rather than a copied spreadsheet range.
|
|
38
|
+
|
|
39
|
+
## Product contract
|
|
40
|
+
|
|
41
|
+
- Pivot is a saved View configuration over canonical, access-scoped Query results.
|
|
42
|
+
- Row and column dimensions and typed measures use grouping and aggregation semantics.
|
|
43
|
+
- Cells, totals, labels, drill-in, export, and agent context reveal only authorized input.
|
|
44
|
+
- Configuration persists independently of the canonical records and reports unavailable data honestly.
|
|
45
|
+
|
|
46
|
+
## Boundaries and non-goals
|
|
47
|
+
|
|
48
|
+
Grouping and aggregation own measure semantics. Pivot is not a formula grid, a writable
|
|
49
|
+
cell store, or a replacement for Chart.
|
|
50
|
+
|
|
51
|
+
## Acceptance stories
|
|
52
|
+
|
|
53
|
+
### Compare two dimensions
|
|
54
|
+
|
|
55
|
+
Given an authorized task result, when a viewer pivots project by status, then each cell
|
|
56
|
+
and total reflects only eligible records and preserves the selected typed measure.
|
|
57
|
+
|
|
58
|
+
### Inspect a cell
|
|
59
|
+
|
|
60
|
+
Given a visible cell, when the viewer drills in, then the resulting collection contains
|
|
61
|
+
only its authorized contributors and maintains canonical record identity.
|
|
62
|
+
|
|
63
|
+
## Current evidence
|
|
64
|
+
|
|
65
|
+
The grouping dependency establishes intended substrate; no repository evidence proves a
|
|
66
|
+
complete Pivot renderer. This Capability remains `approved_shape`.
|
|
67
|
+
|
|
68
|
+
## Proof plan
|
|
69
|
+
|
|
70
|
+
1. Test dimensions, measures, totals, nulls, ordering, persistence, and drill-in.
|
|
71
|
+
2. Verify disclosure closure across cells, totals, exports, and agents.
|
|
72
|
+
3. Exercise responsive table navigation, dense data, reload, and unavailable sources.
|
|
73
|
+
|
|
74
|
+
## Open questions
|
|
75
|
+
|
|
76
|
+
The initial dimension-depth limit and display policy for sparse matrices need design.
|