|
2 | 2 | "type": "action", |
3 | 3 | "_note": "ActionSchema. Seeded from docs/audits/2026-06-actionschema-property-liveness.md. Renderers live in objectui (evidence cited as prose, not framework paths); framework-side: service-ai action-tools, runtime body-runner/http-dispatcher. Containers (params/resultDialog/ai/aria) classified at top level — no divergent sub-statuses in the audit.", |
4 | 4 | "props": { |
5 | | - "name": { "status": "live", "evidence": "objectui action renderers + runtime dispatcher" }, |
6 | | - "label": { "status": "live", "note": "display." }, |
7 | | - "objectName": { "status": "live", "evidence": "packages/services/service-ai/src/tools/action-tools.ts:535", "note": "action dispatch + AI bridge." }, |
8 | | - "icon": { "status": "live", "note": "objectui renderers." }, |
9 | | - "locations": { "status": "live", "note": "objectui — where the action is surfaced." }, |
10 | | - "component": { "status": "live", "note": "objectui visual component override." }, |
11 | | - "type": { "status": "live", "evidence": "packages/runtime/src/http-dispatcher.ts", "note": "api/script/flow wired; url thinner; modal PARTIAL (maps to serverActionHandler, not a real modal); form DEAD (no consumer)." }, |
12 | | - "target": { "status": "live", "evidence": "packages/runtime/src/http-dispatcher.ts", "note": "URL/script/flow/endpoint + ${param}/${ctx} interpolation." }, |
13 | | - "body": { "status": "live", "evidence": "packages/runtime/src/http-dispatcher.ts", "note": "server script (L1/L2) via engine.executeAction→body-runner." }, |
14 | | - "execute": { "status": "dead", "evidence": "@deprecated — auto-migrated to target" }, |
15 | | - "params": { "status": "live", "evidence": "packages/services/service-ai/src/tools/action-tools.ts", "note": "field/objectOverride/defaultFromRow/options/placeholder/helpText/defaultValue/required all consumed." }, |
16 | | - "variant": { "status": "live", "note": "objectui button styling." }, |
17 | | - "confirmText": { "status": "live", "note": "objectui confirm dialog." }, |
18 | | - "successMessage": { "status": "live", "note": "objectui toast." }, |
19 | | - "refreshAfter": { "status": "live", "note": "objectui post-action refresh." }, |
20 | | - "resultDialog": { "status": "live", "note": "objectui one-shot result reveal {title,description,acknowledge,format,fields}." }, |
21 | | - "visible": { "status": "live", "note": "objectui — CEL, fail-closed." }, |
22 | | - "disabled": { "status": "dead", "evidence": "primary renderers read a non-spec `enabled` (action-button.tsx:56,116) and invert it; CEL-predicate form has zero consumers; only boolean honored in detail/quick-action toolbars", "note": "ADR-0049-style naming drift — wire the CEL form or rename." }, |
23 | | - "shortcut": { "status": "dead", "evidence": "ActionEngine registers it but no keydown listener pumps events — never fires" }, |
24 | | - "bulkEnabled": { "status": "dead", "evidence": "engine has executeBulk but no spec-driven view path calls it" }, |
25 | | - "ai": { "status": "live", "evidence": "packages/services/service-ai/src/tools/action-tools.ts", "note": "full AI bridge (exposed/description/category/paramHints/outputSchema/requiresConfirmation)." }, |
26 | | - "recordIdParam": { "status": "live", "note": "objectui + dispatcher." }, |
27 | | - "recordIdField": { "status": "live", "note": "objectui + dispatcher." }, |
28 | | - "bodyShape": { "status": "live", "evidence": "packages/runtime/src/http-dispatcher.ts", "note": "{wrap} request shaping." }, |
29 | | - "method": { "status": "live", "evidence": "packages/runtime/src/http-dispatcher.ts" }, |
30 | | - "bodyExtra": { "status": "live", "evidence": "packages/runtime/src/http-dispatcher.ts" }, |
31 | | - "mode": { "status": "live", "note": "PARTIAL — read only by the AI HITL heuristic (action-tools.ts), never by the UI." }, |
32 | | - "opensInNewTab": { "status": "live", "note": "objectui." }, |
33 | | - "newTabUrl": { "status": "live", "note": "objectui." }, |
34 | | - "timeout": { "status": "dead", "evidence": "action-level timeout DEAD — server uses body.timeoutMs; no UI consumer" }, |
35 | | - "aria": { "status": "live", "note": "PARTIAL — honored by a few objectui renderers, not the core action buttons/menus." } |
| 5 | + "name": { |
| 6 | + "status": "live", |
| 7 | + "evidence": "objectui action renderers + runtime dispatcher" |
| 8 | + }, |
| 9 | + "label": { |
| 10 | + "status": "live", |
| 11 | + "note": "display." |
| 12 | + }, |
| 13 | + "objectName": { |
| 14 | + "status": "live", |
| 15 | + "evidence": "packages/services/service-ai/src/tools/action-tools.ts:535", |
| 16 | + "note": "action dispatch + AI bridge." |
| 17 | + }, |
| 18 | + "icon": { |
| 19 | + "status": "live", |
| 20 | + "note": "objectui renderers." |
| 21 | + }, |
| 22 | + "locations": { |
| 23 | + "status": "live", |
| 24 | + "note": "objectui — where the action is surfaced." |
| 25 | + }, |
| 26 | + "component": { |
| 27 | + "status": "live", |
| 28 | + "note": "objectui visual component override." |
| 29 | + }, |
| 30 | + "type": { |
| 31 | + "status": "live", |
| 32 | + "evidence": "packages/runtime/src/http-dispatcher.ts", |
| 33 | + "note": "api/script/flow wired; url thinner; modal PARTIAL (maps to serverActionHandler, not a real modal); form DEAD (no consumer)." |
| 34 | + }, |
| 35 | + "target": { |
| 36 | + "status": "live", |
| 37 | + "evidence": "packages/runtime/src/http-dispatcher.ts", |
| 38 | + "note": "URL/script/flow/endpoint + ${param}/${ctx} interpolation." |
| 39 | + }, |
| 40 | + "body": { |
| 41 | + "status": "live", |
| 42 | + "evidence": "packages/runtime/src/http-dispatcher.ts", |
| 43 | + "note": "server script (L1/L2) via engine.executeAction→body-runner." |
| 44 | + }, |
| 45 | + "execute": { |
| 46 | + "status": "live", |
| 47 | + "evidence": "objectui: packages/app-shell/src/views/metadata-admin/previews/ActionPreview.tsx:154", |
| 48 | + "note": "LIVE via objectui metadata-admin authoring UI — the 2026-06 audit missed objectui; verified by reading the file." |
| 49 | + }, |
| 50 | + "params": { |
| 51 | + "status": "live", |
| 52 | + "evidence": "packages/services/service-ai/src/tools/action-tools.ts", |
| 53 | + "note": "field/objectOverride/defaultFromRow/options/placeholder/helpText/defaultValue/required all consumed." |
| 54 | + }, |
| 55 | + "variant": { |
| 56 | + "status": "live", |
| 57 | + "note": "objectui button styling." |
| 58 | + }, |
| 59 | + "confirmText": { |
| 60 | + "status": "live", |
| 61 | + "note": "objectui confirm dialog." |
| 62 | + }, |
| 63 | + "successMessage": { |
| 64 | + "status": "live", |
| 65 | + "note": "objectui toast." |
| 66 | + }, |
| 67 | + "refreshAfter": { |
| 68 | + "status": "live", |
| 69 | + "note": "objectui post-action refresh." |
| 70 | + }, |
| 71 | + "resultDialog": { |
| 72 | + "status": "live", |
| 73 | + "note": "objectui one-shot result reveal {title,description,acknowledge,format,fields}." |
| 74 | + }, |
| 75 | + "visible": { |
| 76 | + "status": "live", |
| 77 | + "note": "objectui — CEL, fail-closed." |
| 78 | + }, |
| 79 | + "disabled": { |
| 80 | + "status": "live", |
| 81 | + "evidence": "objectui: packages/app-shell/src/views/metadata-admin/previews/ActionPreview.tsx:169", |
| 82 | + "note": "LIVE via objectui metadata-admin authoring UI — the 2026-06 audit missed objectui; verified by reading the file." |
| 83 | + }, |
| 84 | + "shortcut": { |
| 85 | + "status": "live", |
| 86 | + "evidence": "objectui: packages/app-shell/src/views/metadata-admin/previews/ActionPreview.tsx:158", |
| 87 | + "note": "LIVE via objectui metadata-admin authoring UI — the 2026-06 audit missed objectui; verified by reading the file." |
| 88 | + }, |
| 89 | + "bulkEnabled": { |
| 90 | + "status": "live", |
| 91 | + "evidence": "objectui: packages/app-shell/src/views/metadata-admin/previews/ActionPreview.tsx:159", |
| 92 | + "note": "LIVE via objectui metadata-admin authoring UI — the 2026-06 audit missed objectui; verified by reading the file." |
| 93 | + }, |
| 94 | + "ai": { |
| 95 | + "status": "live", |
| 96 | + "evidence": "packages/services/service-ai/src/tools/action-tools.ts", |
| 97 | + "note": "full AI bridge (exposed/description/category/paramHints/outputSchema/requiresConfirmation)." |
| 98 | + }, |
| 99 | + "recordIdParam": { |
| 100 | + "status": "live", |
| 101 | + "note": "objectui + dispatcher." |
| 102 | + }, |
| 103 | + "recordIdField": { |
| 104 | + "status": "live", |
| 105 | + "note": "objectui + dispatcher." |
| 106 | + }, |
| 107 | + "bodyShape": { |
| 108 | + "status": "live", |
| 109 | + "evidence": "packages/runtime/src/http-dispatcher.ts", |
| 110 | + "note": "{wrap} request shaping." |
| 111 | + }, |
| 112 | + "method": { |
| 113 | + "status": "live", |
| 114 | + "evidence": "packages/runtime/src/http-dispatcher.ts" |
| 115 | + }, |
| 116 | + "bodyExtra": { |
| 117 | + "status": "live", |
| 118 | + "evidence": "packages/runtime/src/http-dispatcher.ts" |
| 119 | + }, |
| 120 | + "mode": { |
| 121 | + "status": "live", |
| 122 | + "note": "PARTIAL — read only by the AI HITL heuristic (action-tools.ts), never by the UI." |
| 123 | + }, |
| 124 | + "opensInNewTab": { |
| 125 | + "status": "live", |
| 126 | + "note": "objectui." |
| 127 | + }, |
| 128 | + "newTabUrl": { |
| 129 | + "status": "live", |
| 130 | + "note": "objectui." |
| 131 | + }, |
| 132 | + "timeout": { |
| 133 | + "status": "dead", |
| 134 | + "evidence": "action-level timeout DEAD — server uses body.timeoutMs; no UI consumer" |
| 135 | + }, |
| 136 | + "aria": { |
| 137 | + "status": "live", |
| 138 | + "note": "PARTIAL — honored by a few objectui renderers, not the core action buttons/menus." |
| 139 | + } |
36 | 140 | } |
37 | 141 | } |
0 commit comments