@usefidel/contracts 0.7.0 → 0.9.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.
- package/dist/analytics.d.ts +66 -10
- package/dist/analytics.js +5 -2
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
package/dist/analytics.d.ts
CHANGED
|
@@ -112,7 +112,7 @@ export declare function errorPhaseFor(code: string | null | undefined): Validati
|
|
|
112
112
|
/** True when `code` is a member of the current taxonomy. */
|
|
113
113
|
export declare function isKnownErrorCode(code: string | null | undefined): code is RunErrorCode;
|
|
114
114
|
/** Events the GA dashboard is built on. Typed properties, specified triggers. */
|
|
115
|
-
export declare const GA_EVENT_NAMES: readonly ["signup_started", "signup_completed", "onboarding_started", "onboarding_completed", "figma_connected", "environment_connected", "
|
|
115
|
+
export declare const GA_EVENT_NAMES: readonly ["signup_started", "signup_completed", "onboarding_started", "onboarding_completed", "figma_connected", "environment_connected", "web_validation_submitted", "web_validation_completed", "web_validation_failed", "web_validation_cancelled", "report_viewed", "report_share_created", "report_link_copied", "report_share_failed", "report_copy_failed", "diff_mark_resolved", "upgrade_clicked", "checkout_started", "feedback_submitted", "extension_opened", "validation_start", "validation_accepted", "validation_complete", "validation_error", "validation_cancel", "review_saved", "figma_auth_success", "figma_auth_error", "extension_share_copied", "upgrade_modal_viewed", "upgrade_cta_clicked"];
|
|
116
116
|
/**
|
|
117
117
|
* Events that exist but are NOT GA metrics.
|
|
118
118
|
*
|
|
@@ -125,7 +125,7 @@ export declare const GA_EVENT_NAMES: readonly ["signup_started", "signup_complet
|
|
|
125
125
|
*/
|
|
126
126
|
export declare const SECONDARY_EVENT_NAMES: readonly ["checkout_completed", "console_errors", "diff_expanded", "drawer_filter_changed", "review_save_error", "review_verdict", "review_verdict_all", "screenshot_exported", "ui_crash", "validation_resume", "validation_retry", "view_changed", "auth_refresh", "consensus_complete", "consensus_error", "extension_validation_failed", "idempotency_dedup_client", "pipeline_complete", "pipeline_phase", "pipeline_resume", "rate_limit_hit", "upgrade_wall_hit"];
|
|
127
127
|
/** Every event name any Fidel client may emit. */
|
|
128
|
-
export declare const ANALYTICS_EVENT_NAMES: readonly ["signup_started", "signup_completed", "onboarding_started", "onboarding_completed", "figma_connected", "environment_connected", "
|
|
128
|
+
export declare const ANALYTICS_EVENT_NAMES: readonly ["signup_started", "signup_completed", "onboarding_started", "onboarding_completed", "figma_connected", "environment_connected", "web_validation_submitted", "web_validation_completed", "web_validation_failed", "web_validation_cancelled", "report_viewed", "report_share_created", "report_link_copied", "report_share_failed", "report_copy_failed", "diff_mark_resolved", "upgrade_clicked", "checkout_started", "feedback_submitted", "extension_opened", "validation_start", "validation_accepted", "validation_complete", "validation_error", "validation_cancel", "review_saved", "figma_auth_success", "figma_auth_error", "extension_share_copied", "upgrade_modal_viewed", "upgrade_cta_clicked", "checkout_completed", "console_errors", "diff_expanded", "drawer_filter_changed", "review_save_error", "review_verdict", "review_verdict_all", "screenshot_exported", "ui_crash", "validation_resume", "validation_retry", "view_changed", "auth_refresh", "consensus_complete", "consensus_error", "extension_validation_failed", "idempotency_dedup_client", "pipeline_complete", "pipeline_phase", "pipeline_resume", "rate_limit_hit", "upgrade_wall_hit"];
|
|
129
129
|
export type GaEventName = (typeof GA_EVENT_NAMES)[number];
|
|
130
130
|
export type SecondaryEventName = (typeof SECONDARY_EVENT_NAMES)[number];
|
|
131
131
|
export type AnalyticsEventName = GaEventName | SecondaryEventName;
|
|
@@ -170,10 +170,51 @@ export interface ValidationEventProperties {
|
|
|
170
170
|
run_id: string;
|
|
171
171
|
validation_mode: ValidationMode;
|
|
172
172
|
}
|
|
173
|
-
|
|
173
|
+
/**
|
|
174
|
+
* The backend ACCEPTED a validation request and issued a run id.
|
|
175
|
+
*
|
|
176
|
+
* Named `submitted`, not `started`, because the transition it records is the
|
|
177
|
+
* server's acceptance rather than the user's click. The predecessor fired
|
|
178
|
+
* before the request left the browser, which meant a run rejected at the
|
|
179
|
+
* upgrade wall still counted as started and no event could carry a `run_id`.
|
|
180
|
+
* This one cannot be emitted without one.
|
|
181
|
+
*
|
|
182
|
+
* NOT a terminal event: exactly one of completed / failed / cancelled follows.
|
|
183
|
+
*/
|
|
184
|
+
export interface ValidationSubmittedProperties extends ValidationEventProperties {
|
|
185
|
+
/**
|
|
186
|
+
* ABSENT where the surface has no viewport control. Absence is the honest
|
|
187
|
+
* encoding of "not applicable" — a default substituted here would be
|
|
188
|
+
* indistinguishable from a real user selection.
|
|
189
|
+
*/
|
|
174
190
|
viewport?: string;
|
|
175
191
|
is_revalidation?: boolean;
|
|
176
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* A share link was created, or its URL was copied.
|
|
195
|
+
*
|
|
196
|
+
* `report_shared` was retired in 0.9.0 because it could not answer the only
|
|
197
|
+
* question it was asked. It fired on button CLICK, so it counted intents, not
|
|
198
|
+
* shares: a failed token mint and a successful copy were the same event, and a
|
|
199
|
+
* user who clicked three times and never got a URL looked like three shares.
|
|
200
|
+
* Creating a link and copying it are also genuinely different acts — a link
|
|
201
|
+
* created and never copied was never delivered to anyone.
|
|
202
|
+
*/
|
|
203
|
+
export interface ReportShareProperties {
|
|
204
|
+
run_id: string;
|
|
205
|
+
/** Which surface offered the control; the two share entry points differ. */
|
|
206
|
+
share_surface: 'report' | 'project';
|
|
207
|
+
}
|
|
208
|
+
/** Share-token creation failed, or the URL exists but the clipboard refused. */
|
|
209
|
+
export interface ReportShareFailureProperties {
|
|
210
|
+
run_id: string;
|
|
211
|
+
share_surface: 'report' | 'project';
|
|
212
|
+
/**
|
|
213
|
+
* Bounded reason. Never the raw exception: clipboard and network errors
|
|
214
|
+
* carry browser-supplied text and, in the network case, the request URL.
|
|
215
|
+
*/
|
|
216
|
+
error_code: string;
|
|
217
|
+
}
|
|
177
218
|
export interface WebValidationCompletedProperties extends ValidationEventProperties {
|
|
178
219
|
duration_ms: number;
|
|
179
220
|
/**
|
|
@@ -195,13 +236,27 @@ export interface WebValidationCompletedProperties extends ValidationEventPropert
|
|
|
195
236
|
*/
|
|
196
237
|
result_completeness?: ResultCompleteness;
|
|
197
238
|
}
|
|
198
|
-
|
|
239
|
+
/**
|
|
240
|
+
* A run that failed or was cancelled.
|
|
241
|
+
*
|
|
242
|
+
* `run_id` is NULLABLE here and required on the success events, and the
|
|
243
|
+
* asymmetry is the point: a run rejected BEFORE the backend accepted it — the
|
|
244
|
+
* upgrade wall, a rate limit, an invalid URL — never received an id. Requiring
|
|
245
|
+
* one would force those events to be dropped, and they are the failures most
|
|
246
|
+
* worth counting. `null` means "rejected before acceptance"; a string means
|
|
247
|
+
* "accepted, then failed".
|
|
248
|
+
*/
|
|
249
|
+
export interface ValidationFailedProperties {
|
|
250
|
+
run_id: string | null;
|
|
251
|
+
validation_mode: ValidationMode;
|
|
199
252
|
duration_ms: number;
|
|
200
253
|
error_code: string;
|
|
201
254
|
error_phase: ValidationErrorPhase;
|
|
202
255
|
retryable: boolean;
|
|
203
256
|
}
|
|
204
|
-
export interface ValidationCancelledProperties
|
|
257
|
+
export interface ValidationCancelledProperties {
|
|
258
|
+
run_id: string | null;
|
|
259
|
+
validation_mode: ValidationMode;
|
|
205
260
|
duration_ms: number;
|
|
206
261
|
error_phase: ValidationErrorPhase;
|
|
207
262
|
}
|
|
@@ -239,14 +294,15 @@ export interface AnalyticsEventProperties {
|
|
|
239
294
|
environment_connected: {
|
|
240
295
|
connection_type: string;
|
|
241
296
|
};
|
|
242
|
-
|
|
297
|
+
web_validation_submitted: ValidationSubmittedProperties;
|
|
243
298
|
web_validation_completed: WebValidationCompletedProperties;
|
|
244
299
|
web_validation_failed: ValidationFailedProperties;
|
|
245
300
|
web_validation_cancelled: ValidationCancelledProperties;
|
|
246
301
|
report_viewed: ReportViewedProperties;
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
302
|
+
report_share_created: ReportShareProperties;
|
|
303
|
+
report_link_copied: ReportShareProperties;
|
|
304
|
+
report_share_failed: ReportShareFailureProperties;
|
|
305
|
+
report_copy_failed: ReportShareFailureProperties;
|
|
250
306
|
diff_mark_resolved: {
|
|
251
307
|
run_id: string;
|
|
252
308
|
review_action: string;
|
|
@@ -268,7 +324,7 @@ export interface AnalyticsEventProperties {
|
|
|
268
324
|
validation_mode: ValidationMode;
|
|
269
325
|
};
|
|
270
326
|
/** The backend accepted the run and issued a run id. The GA "started" event. */
|
|
271
|
-
validation_accepted:
|
|
327
|
+
validation_accepted: ValidationSubmittedProperties;
|
|
272
328
|
validation_complete: WebValidationCompletedProperties;
|
|
273
329
|
validation_error: ValidationFailedProperties;
|
|
274
330
|
validation_cancel: ValidationCancelledProperties;
|
package/dist/analytics.js
CHANGED
|
@@ -116,12 +116,15 @@ export const GA_EVENT_NAMES = [
|
|
|
116
116
|
'onboarding_completed',
|
|
117
117
|
'figma_connected',
|
|
118
118
|
'environment_connected',
|
|
119
|
-
'
|
|
119
|
+
'web_validation_submitted',
|
|
120
120
|
'web_validation_completed',
|
|
121
121
|
'web_validation_failed',
|
|
122
122
|
'web_validation_cancelled',
|
|
123
123
|
'report_viewed',
|
|
124
|
-
'
|
|
124
|
+
'report_share_created',
|
|
125
|
+
'report_link_copied',
|
|
126
|
+
'report_share_failed',
|
|
127
|
+
'report_copy_failed',
|
|
125
128
|
'diff_mark_resolved',
|
|
126
129
|
'upgrade_clicked',
|
|
127
130
|
'checkout_started',
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ export { RUN_ERROR_CODES, ERROR_CODE_META, mapSnapshotErrorToCode, mapFigmaError
|
|
|
2
2
|
export type { RunErrorCode, RunErrorMeta, ErrorMapping, RunDisplay, } from './run-errors.js';
|
|
3
3
|
export type { IntakeFramework, UnsupportedStack, UnsupportedReason, UnresolvedReferenceSection, UnresolvedReferenceReason, UnresolvedReference, ParsedThemeColor, ParsedThemeTypography, ParsedThemeSize, ShadcnConfig, ParsedTheme, IntakeDetection, TokenSourceKind, TokenSource, PackageRole, PackageInfo, } from './theme-intake.js';
|
|
4
4
|
export { ANALYTICS_SCHEMA_VERSION, ANALYTICS_EVENT_NAMES, GA_EVENT_NAMES, SECONDARY_EVENT_NAMES, ERROR_CODE_PHASE, FORBIDDEN_PROPERTY_KEYS, errorPhaseFor, isKnownErrorCode, sanitizeProperties, } from './analytics.js';
|
|
5
|
-
export type { AnalyticsSurface, AnalyticsEnvironment, AnalyticsContext, AnalyticsPersonProperties, AnalyticsEventName, GaEventName, SecondaryEventName, AnalyticsEventProperties, AnalyticsPayload, ValidationMode, ValidationErrorPhase, ResultCompleteness, ValidationEventProperties,
|
|
5
|
+
export type { AnalyticsSurface, AnalyticsEnvironment, AnalyticsContext, AnalyticsPersonProperties, AnalyticsEventName, GaEventName, SecondaryEventName, AnalyticsEventProperties, AnalyticsPayload, ValidationMode, ValidationErrorPhase, ResultCompleteness, ValidationEventProperties, ValidationSubmittedProperties, ReportShareProperties, ReportShareFailureProperties, WebValidationCompletedProperties, ValidationFailedProperties, ValidationCancelledProperties, ReportViewedProperties, } from './analytics.js';
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"The source of truth still lives in the monorepo at packages/contracts/."
|
|
8
8
|
],
|
|
9
9
|
"name": "@usefidel/contracts",
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.9.0",
|
|
11
11
|
"description": "Shared, code-free contracts between Fidel surfaces. Run-error taxonomy, theme-intake wire types, and the canonical fidel.config.json builders.",
|
|
12
12
|
"license": "UNLICENSED",
|
|
13
13
|
"private": false,
|