@hcgstudio/ogma 0.0.0

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.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +39 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +155 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/defineOgmaReview.d.ts +3 -0
  8. package/dist/defineOgmaReview.d.ts.map +1 -0
  9. package/dist/defineOgmaReview.js +4 -0
  10. package/dist/defineOgmaReview.js.map +1 -0
  11. package/dist/index.d.ts +5 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +4 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/node/project.d.ts +18 -0
  16. package/dist/node/project.d.ts.map +1 -0
  17. package/dist/node/project.js +104 -0
  18. package/dist/node/project.js.map +1 -0
  19. package/dist/node/server.d.ts +21 -0
  20. package/dist/node/server.d.ts.map +1 -0
  21. package/dist/node/server.js +476 -0
  22. package/dist/node/server.js.map +1 -0
  23. package/dist/node/templates.d.ts +5 -0
  24. package/dist/node/templates.d.ts.map +1 -0
  25. package/dist/node/templates.js +145 -0
  26. package/dist/node/templates.js.map +1 -0
  27. package/dist/types.d.ts +100 -0
  28. package/dist/types.d.ts.map +1 -0
  29. package/dist/types.js +2 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/viewer/OgmaReviewApp.d.ts +7 -0
  32. package/dist/viewer/OgmaReviewApp.d.ts.map +1 -0
  33. package/dist/viewer/OgmaReviewApp.js +387 -0
  34. package/dist/viewer/OgmaReviewApp.js.map +1 -0
  35. package/dist/viewer/client.d.ts +2 -0
  36. package/dist/viewer/client.d.ts.map +1 -0
  37. package/dist/viewer/client.js +13 -0
  38. package/dist/viewer/client.js.map +1 -0
  39. package/dist/viewer/defaultReview.d.ts +4 -0
  40. package/dist/viewer/defaultReview.d.ts.map +1 -0
  41. package/dist/viewer/defaultReview.js +55 -0
  42. package/dist/viewer/defaultReview.js.map +1 -0
  43. package/dist/viewer/normalizeReviewModule.d.ts +3 -0
  44. package/dist/viewer/normalizeReviewModule.d.ts.map +1 -0
  45. package/dist/viewer/normalizeReviewModule.js +58 -0
  46. package/dist/viewer/normalizeReviewModule.js.map +1 -0
  47. package/package.json +47 -0
  48. package/src/cli.ts +194 -0
  49. package/src/defineOgmaReview.ts +5 -0
  50. package/src/index.ts +17 -0
  51. package/src/node/project.ts +143 -0
  52. package/src/node/server.ts +598 -0
  53. package/src/node/templates.ts +148 -0
  54. package/src/types.ts +111 -0
  55. package/src/viewer/OgmaReviewApp.tsx +1099 -0
  56. package/src/viewer/client.tsx +18 -0
  57. package/src/viewer/defaultReview.tsx +168 -0
  58. package/src/viewer/normalizeReviewModule.ts +87 -0
  59. package/src/viewer/styles.css +1140 -0
  60. package/src/viewer/virtual.d.ts +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/node/templates.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAC5B,iFAAiF,CAAC;AAEpF,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIpC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;CAWpC,CAAC"}
@@ -0,0 +1,100 @@
1
+ import type { ComponentType } from 'react';
2
+ export type OgmaAnnotationStatus = 'open' | 'queued' | 'addressed';
3
+ export interface OgmaPrototypeScreenProps {
4
+ review: OgmaReviewDefinition;
5
+ screen: OgmaPrototypeScreen;
6
+ }
7
+ export interface OgmaPrototypeScreen {
8
+ id: string;
9
+ title: string;
10
+ description?: string;
11
+ width?: number;
12
+ height?: number;
13
+ component: ComponentType<OgmaPrototypeScreenProps>;
14
+ }
15
+ export interface OgmaReviewMetadata {
16
+ agent?: string;
17
+ iteration?: string;
18
+ source?: string;
19
+ updatedAt?: string;
20
+ [key: string]: unknown;
21
+ }
22
+ export interface OgmaReviewDefinition {
23
+ title: string;
24
+ description?: string;
25
+ screens: OgmaPrototypeScreen[];
26
+ notes?: string;
27
+ metadata?: OgmaReviewMetadata;
28
+ }
29
+ export interface OgmaAnnotation {
30
+ id: string;
31
+ screenId: string;
32
+ x: number;
33
+ y: number;
34
+ title: string;
35
+ detail: string;
36
+ status: OgmaAnnotationStatus;
37
+ action: string;
38
+ createdAt: string;
39
+ updatedAt: string;
40
+ }
41
+ export interface OgmaReviewSession {
42
+ reviewId: string;
43
+ annotations: OgmaAnnotation[];
44
+ updatedAt: string;
45
+ }
46
+ export interface OgmaClientConfig {
47
+ cwd: string;
48
+ dataDir: string;
49
+ defaultDesignDir: string;
50
+ reviewUrl: string;
51
+ skillUrl: string;
52
+ serverStartedAt: string;
53
+ }
54
+ export interface OgmaServerStatus {
55
+ packageName: '@hcgstudio/ogma';
56
+ version: string;
57
+ cwd: string;
58
+ dataDir: string;
59
+ designEntry: string;
60
+ historyPath: string;
61
+ notesPath: string;
62
+ reviewUrl: string;
63
+ skillUrl: string;
64
+ snapshotsDir: string;
65
+ serverStartedAt: string;
66
+ }
67
+ export interface OgmaFeedbackExport {
68
+ reviewId: string;
69
+ generatedAt: string;
70
+ reviewUrl: string;
71
+ annotations: Array<{
72
+ id: string;
73
+ screenId: string;
74
+ title: string;
75
+ detail: string;
76
+ status: OgmaAnnotationStatus;
77
+ action: string;
78
+ location: {
79
+ x: number;
80
+ y: number;
81
+ };
82
+ }>;
83
+ }
84
+ export interface OgmaSessionHistoryEntry {
85
+ id: string;
86
+ annotationCount: number;
87
+ counts: Record<OgmaAnnotationStatus, number>;
88
+ reviewId: string;
89
+ updatedAt: string;
90
+ }
91
+ export interface OgmaViewportSnapshot {
92
+ id: string;
93
+ annotations: OgmaAnnotation[];
94
+ createdAt: string;
95
+ reviewId: string;
96
+ reviewUrl: string;
97
+ screenId: string;
98
+ viewportMode: string;
99
+ }
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { OgmaClientConfig, OgmaReviewDefinition } from '../types.js';
2
+ export interface OgmaReviewAppProps {
3
+ config: OgmaClientConfig;
4
+ review: OgmaReviewDefinition;
5
+ }
6
+ export declare function OgmaReviewApp({ config, review }: OgmaReviewAppProps): import("react").JSX.Element;
7
+ //# sourceMappingURL=OgmaReviewApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OgmaReviewApp.d.ts","sourceRoot":"","sources":["../../src/viewer/OgmaReviewApp.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAGV,gBAAgB,EAEhB,oBAAoB,EAIrB,MAAM,aAAa,CAAC;AAKrB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAyKD,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,kBAAkB,+BA2TnE"}
@@ -0,0 +1,387 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Bot, Camera, CheckCircle2, CircleDot, Clipboard, Code2, Copy, Download, Eye, FileText, Laptop, MessageCirclePlus, MessageSquareText, MousePointer2, RefreshCcw, Send, Server, Settings2, Smartphone, Tablet, TerminalSquare, Upload } from 'lucide-react';
3
+ import { Component, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ const API_ROOT = '/api/ogma';
5
+ const viewItems = [
6
+ { id: 'setup', label: 'Setup', icon: Settings2 },
7
+ { id: 'review', label: 'Review', icon: Eye },
8
+ { id: 'handoff', label: 'Agents', icon: Bot },
9
+ { id: 'feedback', label: 'Feedback', icon: MessageSquareText }
10
+ ];
11
+ const viewportItems = [
12
+ { id: 'desktop', label: 'Desktop', icon: Laptop },
13
+ { id: 'tablet', label: 'Tablet', icon: Tablet },
14
+ { id: 'mobile', label: 'Mobile', icon: Smartphone }
15
+ ];
16
+ function classNames(...names) {
17
+ return names.filter(Boolean).join(' ');
18
+ }
19
+ function reviewIdFor(review) {
20
+ return review.title
21
+ .trim()
22
+ .toLowerCase()
23
+ .replace(/[^a-z0-9]+/g, '-')
24
+ .replace(/^-+|-+$/g, '') || 'ogma-review';
25
+ }
26
+ function nowIso() {
27
+ return new Date().toISOString();
28
+ }
29
+ function nextFeedbackId(annotations) {
30
+ const next = annotations.reduce((highest, annotation) => {
31
+ const match = /^OG-(\d+)$/.exec(annotation.id);
32
+ return match ? Math.max(highest, Number(match[1])) : highest;
33
+ }, 0) + 1;
34
+ return `OG-${next.toString().padStart(3, '0')}`;
35
+ }
36
+ function createFallbackSession(reviewId) {
37
+ return {
38
+ reviewId,
39
+ annotations: [],
40
+ updatedAt: nowIso()
41
+ };
42
+ }
43
+ async function readJson(path) {
44
+ const response = await fetch(`${API_ROOT}${path}`);
45
+ if (!response.ok) {
46
+ throw new Error(`${response.status} ${response.statusText}`);
47
+ }
48
+ return response.json();
49
+ }
50
+ async function writeJson(path, body) {
51
+ const response = await fetch(`${API_ROOT}${path}`, {
52
+ body: JSON.stringify(body),
53
+ headers: {
54
+ 'content-type': 'application/json'
55
+ },
56
+ method: 'PUT'
57
+ });
58
+ if (!response.ok) {
59
+ throw new Error(`${response.status} ${response.statusText}`);
60
+ }
61
+ return response.json();
62
+ }
63
+ async function postJson(path, body) {
64
+ const response = await fetch(`${API_ROOT}${path}`, {
65
+ body: JSON.stringify(body),
66
+ headers: {
67
+ 'content-type': 'application/json'
68
+ },
69
+ method: 'POST'
70
+ });
71
+ if (!response.ok) {
72
+ throw new Error(`${response.status} ${response.statusText}`);
73
+ }
74
+ return response.json();
75
+ }
76
+ function buildFeedbackExport(reviewId, reviewUrl, annotations) {
77
+ return {
78
+ reviewId,
79
+ generatedAt: nowIso(),
80
+ reviewUrl,
81
+ annotations: annotations.map((annotation) => ({
82
+ id: annotation.id,
83
+ screenId: annotation.screenId,
84
+ title: annotation.title,
85
+ detail: annotation.detail,
86
+ status: annotation.status,
87
+ action: annotation.action,
88
+ location: {
89
+ x: annotation.x,
90
+ y: annotation.y
91
+ }
92
+ }))
93
+ };
94
+ }
95
+ function buildAgentPrompt(exportData) {
96
+ const activeItems = exportData.annotations.filter((item) => item.status !== 'addressed');
97
+ const ids = activeItems.map((item) => item.id).join(', ') || 'no open feedback';
98
+ return [
99
+ 'Use the Ogma feedback queue to update the JSX prototype and product notes.',
100
+ `Review URL: ${exportData.reviewUrl}`,
101
+ `Feedback IDs: ${ids}`,
102
+ 'Preserve each feedback ID in your change summary and mark which JSX screen changed.',
103
+ '',
104
+ JSON.stringify({ ...exportData, annotations: activeItems }, null, 2)
105
+ ].join('\n');
106
+ }
107
+ class PrototypeErrorBoundary extends Component {
108
+ state = {
109
+ error: null
110
+ };
111
+ static getDerivedStateFromError(error) {
112
+ return { error };
113
+ }
114
+ componentDidUpdate(previousProps) {
115
+ if (previousProps.boundaryKey !== this.props.boundaryKey && this.state.error) {
116
+ this.setState({ error: null });
117
+ }
118
+ }
119
+ render() {
120
+ if (this.state.error) {
121
+ return (_jsxs("div", { className: "ogma-render-error", children: [_jsx("h2", { children: "Prototype render error" }), _jsx("pre", { children: this.state.error.message })] }));
122
+ }
123
+ return this.props.children;
124
+ }
125
+ }
126
+ export function OgmaReviewApp({ config, review }) {
127
+ const reviewId = useMemo(() => reviewIdFor(review), [review]);
128
+ const [activeView, setActiveView] = useState('review');
129
+ const [activeScreenId, setActiveScreenId] = useState(review.screens[0]?.id ?? '');
130
+ const [viewportMode, setViewportMode] = useState('desktop');
131
+ const [annotationMode, setAnnotationMode] = useState(false);
132
+ const [annotations, setAnnotations] = useState([]);
133
+ const [selectedId, setSelectedId] = useState(null);
134
+ const [sessionLoaded, setSessionLoaded] = useState(false);
135
+ const [serverStatus, setServerStatus] = useState(null);
136
+ const [notice, setNotice] = useState('Ready');
137
+ useEffect(() => {
138
+ const firstScreenId = review.screens[0]?.id ?? '';
139
+ if (!review.screens.some((screen) => screen.id === activeScreenId)) {
140
+ setActiveScreenId(firstScreenId);
141
+ }
142
+ }, [activeScreenId, review.screens]);
143
+ useEffect(() => {
144
+ let mounted = true;
145
+ readJson('/session')
146
+ .then((session) => {
147
+ if (!mounted) {
148
+ return;
149
+ }
150
+ setAnnotations(session.annotations);
151
+ setSelectedId(session.annotations[0]?.id ?? null);
152
+ setSessionLoaded(true);
153
+ })
154
+ .catch(() => {
155
+ if (!mounted) {
156
+ return;
157
+ }
158
+ const fallback = createFallbackSession(reviewId);
159
+ setAnnotations(fallback.annotations);
160
+ setSessionLoaded(true);
161
+ });
162
+ readJson('/status')
163
+ .then((status) => {
164
+ if (mounted) {
165
+ setServerStatus(status);
166
+ }
167
+ })
168
+ .catch(() => {
169
+ if (mounted) {
170
+ setServerStatus(null);
171
+ }
172
+ });
173
+ return () => {
174
+ mounted = false;
175
+ };
176
+ }, [reviewId]);
177
+ const saveSession = useCallback(async (nextAnnotations) => {
178
+ const session = {
179
+ reviewId,
180
+ annotations: nextAnnotations,
181
+ updatedAt: nowIso()
182
+ };
183
+ await writeJson('/session', session);
184
+ }, [reviewId]);
185
+ useEffect(() => {
186
+ if (!sessionLoaded) {
187
+ return undefined;
188
+ }
189
+ const handle = window.setTimeout(() => {
190
+ saveSession(annotations).catch(() => setNotice('Session is local-only until the server API is reachable'));
191
+ }, 250);
192
+ return () => window.clearTimeout(handle);
193
+ }, [annotations, saveSession, sessionLoaded]);
194
+ const activeScreen = review.screens.find((screen) => screen.id === activeScreenId) ?? review.screens[0];
195
+ const activeAnnotations = annotations.filter((annotation) => annotation.screenId === activeScreen?.id);
196
+ const selectedAnnotation = annotations.find((annotation) => annotation.id === selectedId) ?? null;
197
+ const counts = useMemo(() => ({
198
+ addressed: annotations.filter((annotation) => annotation.status === 'addressed').length,
199
+ open: annotations.filter((annotation) => annotation.status === 'open').length,
200
+ queued: annotations.filter((annotation) => annotation.status === 'queued').length
201
+ }), [annotations]);
202
+ function mutateAnnotation(id, patch) {
203
+ setAnnotations((current) => current.map((annotation) => annotation.id === id ? { ...annotation, ...patch, updatedAt: nowIso() } : annotation));
204
+ }
205
+ function addAnnotation(event) {
206
+ if (!annotationMode || !activeScreen) {
207
+ return;
208
+ }
209
+ const target = event.target;
210
+ if (target.closest('[data-ogma-pin]')) {
211
+ return;
212
+ }
213
+ const bounds = event.currentTarget.getBoundingClientRect();
214
+ const x = Number((((event.clientX - bounds.left) / bounds.width) * 100).toFixed(1));
215
+ const y = Number((((event.clientY - bounds.top) / bounds.height) * 100).toFixed(1));
216
+ const id = nextFeedbackId(annotations);
217
+ const timestamp = nowIso();
218
+ const annotation = {
219
+ id,
220
+ screenId: activeScreen.id,
221
+ x: Math.min(98, Math.max(2, x)),
222
+ y: Math.min(98, Math.max(2, y)),
223
+ title: 'New review note',
224
+ detail: 'Captured directly on the prototype.',
225
+ status: 'open',
226
+ action: `Update ${activeScreen.title} JSX and product notes for this feedback.`,
227
+ createdAt: timestamp,
228
+ updatedAt: timestamp
229
+ };
230
+ setAnnotations((current) => [...current, annotation]);
231
+ setSelectedId(id);
232
+ setNotice(`${id} added`);
233
+ }
234
+ async function copyText(value, label) {
235
+ await navigator.clipboard.writeText(value);
236
+ setNotice(`${label} copied`);
237
+ }
238
+ function selectAnnotation(annotation, view = 'review') {
239
+ setSelectedId(annotation.id);
240
+ setActiveScreenId(annotation.screenId);
241
+ setActiveView(view);
242
+ }
243
+ function markSelectedAddressed() {
244
+ if (selectedAnnotation) {
245
+ mutateAnnotation(selectedAnnotation.id, { status: 'addressed' });
246
+ setNotice(`${selectedAnnotation.id} marked addressed`);
247
+ }
248
+ }
249
+ function sendEditsToAgent() {
250
+ const queued = annotations.map((annotation) => annotation.status === 'open'
251
+ ? { ...annotation, status: 'queued', updatedAt: nowIso() }
252
+ : annotation);
253
+ const exportData = buildFeedbackExport(reviewId, config.reviewUrl, queued);
254
+ setAnnotations(queued);
255
+ void copyText(buildAgentPrompt(exportData), 'Agent edit prompt');
256
+ }
257
+ function exportFeedback() {
258
+ const exportData = buildFeedbackExport(reviewId, config.reviewUrl, annotations);
259
+ void copyText(JSON.stringify(exportData, null, 2), 'Feedback JSON');
260
+ }
261
+ function importFeedback(text) {
262
+ const parsed = JSON.parse(text);
263
+ const timestamp = nowIso();
264
+ const imported = parsed.annotations.map((annotation) => ({
265
+ id: annotation.id,
266
+ screenId: annotation.screenId,
267
+ x: annotation.location.x,
268
+ y: annotation.location.y,
269
+ title: annotation.title,
270
+ detail: annotation.detail,
271
+ status: annotation.status,
272
+ action: annotation.action,
273
+ createdAt: timestamp,
274
+ updatedAt: timestamp
275
+ }));
276
+ setAnnotations(imported);
277
+ setSelectedId(imported[0]?.id ?? null);
278
+ setNotice(`${imported.length} feedback items imported`);
279
+ }
280
+ function saveSnapshot() {
281
+ if (!activeScreen) {
282
+ return;
283
+ }
284
+ const snapshot = {
285
+ id: `${Date.now()}`,
286
+ annotations: activeAnnotations,
287
+ createdAt: nowIso(),
288
+ reviewId,
289
+ reviewUrl: config.reviewUrl,
290
+ screenId: activeScreen.id,
291
+ viewportMode
292
+ };
293
+ postJson('/snapshots', snapshot)
294
+ .then(() => setNotice('Viewport snapshot saved'))
295
+ .catch(() => setNotice('Snapshot could not be saved'));
296
+ }
297
+ return (_jsxs("div", { className: "ogma-shell", children: [_jsxs("aside", { className: "ogma-nav", "aria-label": "Ogma workspace", children: [_jsx("div", { className: "ogma-mark", "aria-label": "Ogma", children: _jsx("span", { children: "O" }) }), _jsx("div", { className: "ogma-nav-list", children: viewItems.map((item) => {
298
+ const Icon = item.icon;
299
+ return (_jsxs("button", { className: classNames('ogma-nav-item', activeView === item.id && 'is-active'), onClick: () => setActiveView(item.id), title: item.label, type: "button", children: [_jsx(Icon, { "aria-hidden": "true", size: 20 }), _jsx("span", { children: item.label })] }, item.id));
300
+ }) })] }), _jsxs("main", { className: "ogma-main", children: [_jsxs("header", { className: "ogma-topbar", children: [_jsxs("div", { children: [_jsx("p", { className: "ogma-eyebrow", children: "@hcgstudio/ogma" }), _jsx("h1", { children: review.title })] }), _jsxs("div", { className: "ogma-topbar-actions", children: [_jsxs("div", { className: classNames('ogma-status-pill', serverStatus ? 'is-online' : 'is-offline'), children: [_jsx(CircleDot, { "aria-hidden": "true", size: 15 }), _jsx("span", { children: serverStatus ? 'server active' : 'local preview' })] }), _jsx("button", { className: "ogma-icon-button", onClick: () => void copyText(config.reviewUrl, 'Review URL'), title: "Copy review URL", type: "button", children: _jsx(Copy, { "aria-hidden": "true", size: 18 }) }), _jsxs("button", { className: "ogma-filled-button", onClick: () => window.location.reload(), type: "button", children: [_jsx(RefreshCcw, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Refresh" })] })] })] }), activeView === 'setup' && (_jsx(SetupView, { config: config, notice: notice, onCopy: copyText, serverStatus: serverStatus })), activeView === 'review' && activeScreen && (_jsx(ReviewView, { activeAnnotations: activeAnnotations, activeScreen: activeScreen, annotationMode: annotationMode, counts: counts, onAddAnnotation: addAnnotation, onMarkAddressed: markSelectedAddressed, onMutateAnnotation: mutateAnnotation, onSaveSnapshot: saveSnapshot, onScreenChange: setActiveScreenId, onSelectAnnotation: selectAnnotation, onToggleAnnotationMode: () => setAnnotationMode((value) => !value), onViewportChange: setViewportMode, review: review, selectedAnnotation: selectedAnnotation, viewportMode: viewportMode })), activeView === 'handoff' && (_jsx(HandoffView, { config: config, onCopy: copyText, reviewUrl: config.reviewUrl })), activeView === 'feedback' && (_jsx(FeedbackView, { annotations: annotations, counts: counts, onExportFeedback: exportFeedback, onImportFeedback: importFeedback, onSelectAnnotation: (annotation) => selectAnnotation(annotation, 'review'), onSendEdits: sendEditsToAgent, selectedId: selectedAnnotation?.id ?? null }))] })] }));
301
+ }
302
+ function SetupView({ config, notice, onCopy, serverStatus }) {
303
+ const commands = [
304
+ 'npm install -D @hcgstudio/ogma',
305
+ 'npx ogma start',
306
+ `npx ogma start --review ${config.defaultDesignDir}`
307
+ ];
308
+ return (_jsxs("div", { className: "ogma-workspace-grid ogma-setup-grid", children: [_jsxs("section", { className: "ogma-panel", children: [_jsxs("div", { className: "ogma-section-heading", children: [_jsxs("div", { children: [_jsx("p", { className: "ogma-eyebrow", children: "Local setup" }), _jsx("h2", { children: "Install, start, hand off" })] }), _jsxs("button", { className: "ogma-tonal-button", onClick: () => void onCopy(config.skillUrl, 'Skill URL'), type: "button", children: [_jsx(Clipboard, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Skill URL" })] })] }), _jsx("div", { className: "ogma-command-stack", children: commands.map((command) => (_jsx(CommandLine, { command: command, onCopy: onCopy }, command))) })] }), _jsxs("aside", { className: "ogma-side-panel", children: [_jsxs("div", { className: "ogma-panel-title", children: [_jsx(Server, { "aria-hidden": "true", size: 20 }), _jsx("h3", { children: "Runtime" })] }), _jsxs("dl", { className: "ogma-runtime-list", children: [_jsxs("div", { children: [_jsx("dt", { children: "Review URL" }), _jsx("dd", { children: config.reviewUrl })] }), _jsxs("div", { children: [_jsx("dt", { children: "Design directory" }), _jsx("dd", { children: config.defaultDesignDir })] }), _jsxs("div", { children: [_jsx("dt", { children: "Session store" }), _jsx("dd", { children: config.dataDir })] }), _jsxs("div", { children: [_jsx("dt", { children: "Status" }), _jsx("dd", { children: serverStatus ? 'Dependencies ready' : notice })] })] })] })] }));
309
+ }
310
+ function CommandLine({ command, onCopy }) {
311
+ return (_jsxs("div", { className: "ogma-command-line", children: [_jsx(TerminalSquare, { "aria-hidden": "true", size: 18 }), _jsx("code", { children: command }), _jsx("button", { className: "ogma-icon-button is-compact", onClick: () => void onCopy(command, 'Command'), title: "Copy command", type: "button", children: _jsx(Copy, { "aria-hidden": "true", size: 16 }) })] }));
312
+ }
313
+ function ReviewView({ activeAnnotations, activeScreen, annotationMode, counts, onAddAnnotation, onMarkAddressed, onMutateAnnotation, onSaveSnapshot, onScreenChange, onSelectAnnotation, onToggleAnnotationMode, onViewportChange, review, selectedAnnotation, viewportMode }) {
314
+ const ScreenComponent = activeScreen.component;
315
+ const frameRef = useRef(null);
316
+ const [a11yIssueCount, setA11yIssueCount] = useState(0);
317
+ const screenStyle = {
318
+ '--ogma-screen-width': `${activeScreen.width ?? 1040}px`
319
+ };
320
+ useEffect(() => {
321
+ const frame = frameRef.current;
322
+ if (!frame) {
323
+ return;
324
+ }
325
+ const unlabeledControls = Array.from(frame.querySelectorAll('button, a')).filter((control) => {
326
+ const element = control;
327
+ const hasName = element.textContent?.trim() ||
328
+ element.getAttribute('aria-label') ||
329
+ element.getAttribute('title');
330
+ return !hasName;
331
+ });
332
+ const imagesWithoutAlt = Array.from(frame.querySelectorAll('img')).filter((image) => !image.alt);
333
+ setA11yIssueCount(unlabeledControls.length + imagesWithoutAlt.length);
334
+ }, [activeAnnotations.length, activeScreen.id]);
335
+ return (_jsxs("div", { className: "ogma-workspace-grid ogma-review-grid", children: [_jsxs("section", { className: "ogma-canvas-panel", children: [_jsxs("div", { className: "ogma-review-toolbar", children: [_jsx("div", { className: "ogma-segmented-control", "aria-label": "Prototype screen", children: review.screens.map((screen) => (_jsx("button", { className: classNames(activeScreen.id === screen.id && 'is-active'), onClick: () => onScreenChange(screen.id), type: "button", children: screen.title }, screen.id))) }), _jsxs("div", { className: "ogma-tool-strip", children: [viewportItems.map((item) => {
336
+ const Icon = item.icon;
337
+ return (_jsx("button", { "aria-pressed": viewportMode === item.id, className: classNames('ogma-icon-button', viewportMode === item.id && 'is-active'), onClick: () => onViewportChange(item.id), title: item.label, type: "button", children: _jsx(Icon, { "aria-hidden": "true", size: 18 }) }, item.id));
338
+ }), _jsx("button", { "aria-pressed": !annotationMode, className: classNames('ogma-icon-button', !annotationMode && 'is-active'), onClick: onToggleAnnotationMode, title: "Pointer", type: "button", children: _jsx(MousePointer2, { "aria-hidden": "true", size: 18 }) }), _jsx("button", { "aria-pressed": annotationMode, className: classNames('ogma-icon-button', annotationMode && 'is-active'), onClick: onToggleAnnotationMode, title: "Add annotation", type: "button", children: _jsx(MessageCirclePlus, { "aria-hidden": "true", size: 18 }) }), _jsx("button", { className: "ogma-icon-button", onClick: onSaveSnapshot, title: "Save viewport snapshot", type: "button", children: _jsx(Camera, { "aria-hidden": "true", size: 18 }) }), _jsxs("div", { className: classNames('ogma-a11y-pill', a11yIssueCount === 0 && 'is-clear'), children: [_jsx("span", { children: "A11y" }), _jsx("strong", { children: a11yIssueCount })] })] })] }), _jsx("div", { className: classNames('ogma-prototype-stage', `is-${viewportMode}`, annotationMode && 'is-annotating'), onClick: onAddAnnotation, role: "presentation", style: screenStyle, children: _jsxs("div", { className: "ogma-prototype-frame", ref: frameRef, children: [_jsx(PrototypeErrorBoundary, { boundaryKey: activeScreen.id, children: _jsx(ScreenComponent, { review: review, screen: activeScreen }) }), activeAnnotations.map((annotation) => (_jsx("button", { className: classNames('ogma-annotation-pin', `is-${annotation.status}`, selectedAnnotation?.id === annotation.id && 'is-selected'), "data-ogma-pin": "", onClick: (event) => {
339
+ event.stopPropagation();
340
+ onSelectAnnotation(annotation);
341
+ }, style: { left: `${annotation.x}%`, top: `${annotation.y}%` }, title: annotation.title, type: "button", children: annotation.id.replace('OG-', '') }, annotation.id)))] }) })] }), _jsxs("aside", { className: "ogma-side-panel", children: [_jsxs("div", { className: "ogma-panel-title", children: [_jsx(MessageSquareText, { "aria-hidden": "true", size: 20 }), _jsx("h3", { children: "Annotation queue" })] }), _jsxs("div", { className: "ogma-metric-row", children: [_jsx(Metric, { label: "Open", value: counts.open, tone: "open" }), _jsx(Metric, { label: "Queued", value: counts.queued, tone: "queued" }), _jsx(Metric, { label: "Addressed", value: counts.addressed, tone: "addressed" })] }), selectedAnnotation ? (_jsx(AnnotationEditor, { annotation: selectedAnnotation, onMarkAddressed: onMarkAddressed, onMutateAnnotation: onMutateAnnotation })) : (_jsxs("div", { className: "ogma-empty-state", children: [_jsx(MessageCirclePlus, { "aria-hidden": "true", size: 22 }), _jsx("p", { children: "No annotation selected." })] }))] })] }));
342
+ }
343
+ function Metric({ label, tone, value }) {
344
+ return (_jsxs("div", { className: classNames('ogma-metric', `is-${tone}`), children: [_jsx("strong", { children: value.toString().padStart(2, '0') }), _jsx("span", { children: label })] }));
345
+ }
346
+ function AnnotationEditor({ annotation, onMarkAddressed, onMutateAnnotation }) {
347
+ return (_jsxs("article", { className: "ogma-annotation-editor", children: [_jsxs("div", { className: "ogma-editor-topline", children: [_jsx("span", { className: classNames('ogma-status-dot', `is-${annotation.status}`) }), _jsx("strong", { children: annotation.id }), _jsx("span", { children: annotation.screenId })] }), _jsxs("label", { children: [_jsx("span", { children: "Title" }), _jsx("input", { onChange: (event) => onMutateAnnotation(annotation.id, { title: event.target.value }), value: annotation.title })] }), _jsxs("label", { children: [_jsx("span", { children: "Detail" }), _jsx("textarea", { onChange: (event) => onMutateAnnotation(annotation.id, { detail: event.target.value }), rows: 4, value: annotation.detail })] }), _jsxs("label", { children: [_jsx("span", { children: "Expected agent action" }), _jsx("textarea", { onChange: (event) => onMutateAnnotation(annotation.id, { action: event.target.value }), rows: 3, value: annotation.action })] }), _jsxs("label", { children: [_jsx("span", { children: "Status" }), _jsxs("select", { onChange: (event) => onMutateAnnotation(annotation.id, {
348
+ status: event.target.value
349
+ }), value: annotation.status, children: [_jsx("option", { value: "open", children: "Open" }), _jsx("option", { value: "queued", children: "Queued" }), _jsx("option", { value: "addressed", children: "Addressed" })] })] }), _jsxs("div", { className: "ogma-editor-actions", children: [_jsxs("button", { className: "ogma-tonal-button", onClick: onMarkAddressed, type: "button", children: [_jsx(CheckCircle2, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Addressed" })] }), _jsx("button", { className: "ogma-icon-button", onClick: () => void navigator.clipboard.writeText(annotation.id), title: "Copy feedback ID", type: "button", children: _jsx(Copy, { "aria-hidden": "true", size: 17 }) })] })] }));
350
+ }
351
+ function HandoffView({ config, onCopy, reviewUrl }) {
352
+ const prompts = [
353
+ {
354
+ agent: 'Codex',
355
+ body: `Install/read the Ogma skill from ${config.skillUrl}. Create JSX screens in ${config.defaultDesignDir}, update product notes, install @hcgstudio/ogma if needed, start the review server, and give me the review URL.`
356
+ },
357
+ {
358
+ agent: 'Claude Code',
359
+ body: `Use the Ogma skill at ${config.skillUrl}. Generate the prototype as JSX screens plus product notes, run @hcgstudio/ogma locally, and preserve Ogma feedback IDs when applying reviewer edits.`
360
+ },
361
+ {
362
+ agent: 'Tool-agnostic',
363
+ body: `Follow the Ogma contract: JSX screens, product notes, review metadata, local server, stable feedback IDs, and a final review URL. Current review URL: ${reviewUrl}`
364
+ }
365
+ ];
366
+ return (_jsxs("div", { className: "ogma-workspace-grid ogma-handoff-grid", children: [_jsxs("section", { className: "ogma-panel", children: [_jsxs("div", { className: "ogma-section-heading", children: [_jsxs("div", { children: [_jsx("p", { className: "ogma-eyebrow", children: "Agent handoff" }), _jsx("h2", { children: "Codex and Claude Code prompts" })] }), _jsxs("button", { className: "ogma-filled-button", onClick: () => void onCopy(config.skillUrl, 'Skill URL'), type: "button", children: [_jsx(Copy, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Copy URL" })] })] }), _jsx("div", { className: "ogma-agent-grid", children: prompts.map((prompt) => (_jsxs("article", { className: "ogma-agent-card", children: [_jsxs("div", { className: "ogma-agent-card-top", children: [_jsx(Bot, { "aria-hidden": "true", size: 20 }), _jsx("h3", { children: prompt.agent })] }), _jsx("p", { children: prompt.body }), _jsxs("button", { className: "ogma-tonal-button", onClick: () => void onCopy(prompt.body, `${prompt.agent} prompt`), type: "button", children: [_jsx(Clipboard, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Copy prompt" })] })] }, prompt.agent))) })] }), _jsxs("aside", { className: "ogma-side-panel", children: [_jsxs("div", { className: "ogma-panel-title", children: [_jsx(Code2, { "aria-hidden": "true", size: 20 }), _jsx("h3", { children: "Contract" })] }), _jsx("div", { className: "ogma-contract-list", children: [
367
+ 'JSX prototype screens',
368
+ 'Product design notes',
369
+ 'Review metadata',
370
+ 'Feedback IDs in edits'
371
+ ].map((item, index) => (_jsxs("div", { className: "ogma-contract-item", children: [_jsx("span", { children: index + 1 }), _jsx("p", { children: item })] }, item))) })] })] }));
372
+ }
373
+ function FeedbackView({ annotations, counts, onExportFeedback, onImportFeedback, onSelectAnnotation, onSendEdits, selectedId }) {
374
+ const importInputRef = useRef(null);
375
+ return (_jsxs("div", { className: "ogma-workspace-grid ogma-feedback-grid", children: [_jsxs("section", { className: "ogma-panel", children: [_jsxs("div", { className: "ogma-section-heading", children: [_jsxs("div", { children: [_jsx("p", { className: "ogma-eyebrow", children: "Feedback queue" }), _jsx("h2", { children: "Agent-ready review notes" })] }), _jsxs("div", { className: "ogma-inline-actions", children: [_jsx("input", { accept: "application/json,.json", hidden: true, onChange: (event) => {
376
+ const file = event.currentTarget.files?.[0];
377
+ event.currentTarget.value = '';
378
+ if (!file) {
379
+ return;
380
+ }
381
+ file
382
+ .text()
383
+ .then(onImportFeedback)
384
+ .catch(() => undefined);
385
+ }, ref: importInputRef, type: "file" }), _jsxs("button", { className: "ogma-tonal-button", onClick: () => importInputRef.current?.click(), type: "button", children: [_jsx(Upload, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Import JSON" })] }), _jsxs("button", { className: "ogma-tonal-button", onClick: onExportFeedback, type: "button", children: [_jsx(Download, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Export JSON" })] }), _jsxs("button", { className: "ogma-filled-button", onClick: onSendEdits, type: "button", children: [_jsx(Send, { "aria-hidden": "true", size: 18 }), _jsx("span", { children: "Send edits" })] })] })] }), _jsxs("div", { className: "ogma-feedback-table", role: "table", children: [_jsxs("div", { className: "ogma-feedback-row is-heading", role: "row", children: [_jsx("span", { children: "ID" }), _jsx("span", { children: "Location" }), _jsx("span", { children: "Status" }), _jsx("span", { children: "Expected action" })] }), annotations.map((annotation) => (_jsxs("button", { className: classNames('ogma-feedback-row', selectedId === annotation.id && 'is-selected'), onClick: () => onSelectAnnotation(annotation), role: "row", type: "button", children: [_jsx("span", { children: annotation.id }), _jsx("span", { children: annotation.title }), _jsx("span", { className: classNames('ogma-status-chip', `is-${annotation.status}`), children: annotation.status }), _jsx("span", { children: annotation.action })] }, annotation.id)))] })] }), _jsxs("aside", { className: "ogma-side-panel", children: [_jsxs("div", { className: "ogma-panel-title", children: [_jsx(FileText, { "aria-hidden": "true", size: 20 }), _jsx("h3", { children: "Summary" })] }), _jsxs("div", { className: "ogma-summary-list", children: [_jsx(Metric, { label: "Open notes", value: counts.open, tone: "open" }), _jsx(Metric, { label: "AI edits", value: counts.queued, tone: "queued" }), _jsx(Metric, { label: "Accepted", value: counts.addressed, tone: "addressed" })] })] })] }));
386
+ }
387
+ //# sourceMappingURL=OgmaReviewApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OgmaReviewApp.js","sourceRoot":"","sources":["../../src/viewer/OgmaReviewApp.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import './styles.css';
2
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/viewer/client.tsx"],"names":[],"mappings":"AAKA,OAAO,cAAc,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { StrictMode } from 'react';
3
+ import { createRoot } from 'react-dom/client';
4
+ import { runtimeConfig } from 'virtual:ogma-config';
5
+ import { review } from 'virtual:ogma-design';
6
+ import { OgmaReviewApp } from './OgmaReviewApp.js';
7
+ import './styles.css';
8
+ const root = document.getElementById('ogma-root');
9
+ if (!root) {
10
+ throw new Error('Ogma could not find #ogma-root.');
11
+ }
12
+ createRoot(root).render(_jsx(StrictMode, { children: _jsx(OgmaReviewApp, { config: runtimeConfig, review: review }) }));
13
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/viewer/client.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,cAAc,CAAC;AAEtB,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAElD,IAAI,CAAC,IAAI,EAAE,CAAC;IACV,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC;AAED,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CACrB,KAAC,UAAU,cACT,KAAC,aAAa,IAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAI,GAC7C,CACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { OgmaReviewDefinition, OgmaPrototypeScreenProps } from '../types.js';
2
+ export declare function createDefaultOgmaReview(): OgmaReviewDefinition;
3
+ export declare function MissingScreen({ screen }: OgmaPrototypeScreenProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=defaultReview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultReview.d.ts","sourceRoot":"","sources":["../../src/viewer/defaultReview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAwHlF,wBAAgB,uBAAuB,IAAI,oBAAoB,CAsC9D;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,wBAAwB,+BAOjE"}