feat(experimental): propose personalized pages through action cards

Personalized pages registers the create_personalized_page card kind with
its create, keep, undo, cancel and restore handlers and drops its own
projection, Remote and status notice. The skill now ends with a
propose_action call. The Client package contributes only the page card
body. The persistence record moves from the page status source to the
shared action-cards source and decision record.
This commit is contained in:
ZiyaZhang committed 2026-10-22 06:36:30 -07:00
1 parent 9980af2d48
commit 9b04d772b9
67 files changed
+1579 -2002

No files matched your search

-3
View File
@@ -60,7 +60,6 @@ export const SERVICE_PAGE: Record<string, string> = {
productAnalytics: 'product-telemetry.md',
connection: 'web-server.md',
pluginManager: 'boot.md',
creationRecommendations: 'boot.md',
actionCards: 'boot.md',
pluginMarket: 'boot.md',
pluginRegistryProbe: 'boot.md',
@@ -906,8 +905,6 @@ export const FOUNDATION_TYPE_NAMES: ReadonlySet<string> = new Set([
/** Project types deliberately documented outside the subsystems catalog. */
export const TYPE_LINK_EXEMPTIONS: Readonly<Record<string, string>> = {
CreationActionResult: 'packages/experimental/creation-recommendations/README.md',
CreationSlot: 'packages/experimental/creation-recommendations/README.md',
ActionCardDecision: 'packages/experimental/action-cards/README.md',
ActionCardKind: 'packages/experimental/action-cards/README.md',
ActionCardResult: 'packages/experimental/action-cards/README.md',
+1 -9
View File
@@ -112,17 +112,9 @@ const SERVICE_ROLES: ServiceRole[] = [
pkg: 'experimental-action-cards',
title: 'Optional action cards',
mode: 'service',
consumers: ['experimental-client-ui-action-cards'],
consumers: ['experimental-creation-recommendations', 'experimental-client-ui-action-cards'],
note: 'Owns the card tool, card state, user actions and status notices; card kinds register their actions and handlers.',
},
{
key: 'creationRecommendations',
pkg: 'experimental-creation-recommendations',
title: 'Explicit-need interface creation',
mode: 'service',
consumers: ['experimental-client-ui-creation-recommendations'],
note: 'Starts a Creator after a human choice and owns installation and removal of the new bundle.',
},
{
key: 'headlessStartup',
pkg: 'headless',
@@ -57,7 +57,7 @@ const SENTENCE_MODEL_EXPERIENCE: Readonly<Record<string, SentenceContract>> = {
'packages/experimental/client-ui-voice-input': { kind: 'none', reason: 'Inserts reviewable text into the unsent draft without submitting to the Agent.' },
'packages/experimental/plugin-market-bundle': { kind: 'indirect', reason: 'Mounts the pluginMarket service, which lets the Creator preset register the plugin_market tool documented in packages/boot/plugin-market.' },
'packages/experimental/client-ui-action-cards': { kind: 'indirect', reason: 'Card actions go to the Host card service, which owns the logged tool, decisions and status notice.' },
'packages/experimental/client-ui-creation-recommendations': { kind: 'indirect', reason: 'The card starts a Creator through the Host creation service; the Host owns its logged task and tool schema.' },
'packages/experimental/client-ui-creation-recommendations': { kind: 'indirect', reason: 'The page card body starts a Creator through the Host page kind; the Host owns its logged task.' },
'packages/experimental/voice-input-bundle': { kind: 'none', reason: 'Composes dictation and preparation plugins without adding any model-facing contribution.' },
'packages/telemetry/otel': { kind: 'none', reason: 'The service delivers caller-selected records without changing model context.' },
'packages/host/product-telemetry-otel': { kind: 'none', reason: 'The plugin exports explicit analytics records without contributing model context.' },