@atlaskit/tmp-editor-statsig 135.0.0 → 135.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,92 @@
1
1
  # @atlaskit/editor-statsig-tmp
2
2
 
3
+ ## 135.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`5174794d869df`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5174794d869df) -
8
+ Add the third-party (3P) prompt tile to Create-with-Rovo personalized suggestions, gated behind
9
+ the `confluence_cwr_3p_connection_suggested_prompts` experiment (Control / Variant A / Variant B).
10
+
11
+ The frontend owns all experiment logic and passes a plain `enable3pPromptOn3rdCard` boolean to
12
+ `fetchPersonalizedPromptSuggestionsStream`; the backend uses it only to gate 3P tile generation.
13
+ The modal and its preloads share one prompt-suggestions cache, so all of them decide the flag with
14
+ a no-exposure cohort read (only eligible users request the tile). The Statsig exposure fires once,
15
+ when the modal actually opens, so preloads don't dilute the experiment. Variant B renders up to
16
+ two connector icons on the 3P tile via `RovoLogoForAppSource`, falling back to the single tile
17
+ icon (Variant A behaviour) when there are no connectors.
18
+
19
+ A `track` eligibility event is emitted when the modal opens so the "admin allowed no 3P apps → not
20
+ in the experiment" segment (which fires no Statsig exposure) is still counted, alongside
21
+ eligible/cohort and connectors-unavailable outcomes.
22
+
23
+ `useEnsureConnectorsLoaded` gains an optional `enabled` flag (default `true`): the 3P tile loads
24
+ connectors only on the exposure surface or for variants, so control on a preload surface pays no
25
+ connectors fetch — and no extra render — on every create-button mount.
26
+
27
+ Usage:
28
+
29
+ ```ts
30
+ import { fetchPersonalizedPromptSuggestionsStream } from '@atlassian/conversation-assistant-service/services/assistance-service/main';
31
+ import {
32
+ type ThirdPartyConnector,
33
+ THIRD_PARTY_PROMPT_SOURCE_CONTENT_TYPE,
34
+ } from '@atlassian/conversation-assistant-service-api/types/assistance-service';
35
+
36
+ // Opt in to the 3P tile on the 3rd card (variants A/B only); omit the flag otherwise
37
+ // so the request stays byte-identical for everyone else.
38
+ const { generator } = await assistanceService.fetchPersonalizedPromptSuggestionsStream({
39
+ enable3pPromptOn3rdCard: true,
40
+ });
41
+
42
+ // A returned tile is the 3P tile when its source content type matches; it carries the
43
+ // connectors used to render the product icons.
44
+ const is3pTile = tile.source_content_type === THIRD_PARTY_PROMPT_SOURCE_CONTENT_TYPE;
45
+ const connectors: ThirdPartyConnector[] | undefined = tile.third_party_connectors;
46
+ ```
47
+
48
+ ## 135.0.1
49
+
50
+ ### Patch Changes
51
+
52
+ - [`782360c1111dc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/782360c1111dc) -
53
+ Agent-edit shimmer review follow-ups (behind the default-OFF `platform_editor_agent_be_streaming`
54
+ experiment):
55
+ - Add a second shimmer phase: after the skeleton loader clears, the changed range shows a purple
56
+ "just edited" highlight (same colours as the editor AI "improve writing" in-editor highlight)
57
+ that eases in and out over its lifetime. The Rovo telepointer stays through both phases.
58
+ - The two phases are sized by independent experiment params: `shimmerDurationMs` (skeleton,
59
+ renamed from `durationMs`) and `highlightDurationMs` (highlight). `0` on either skips just that
60
+ phase, `0` on both shows nothing.
61
+ - Gate the agent-edit shimmer styles behind the experiment in both the emotion and compiled
62
+ `EditorContentContainer` style entries, using the no-exposure check on the hot render path.
63
+ - Add an `agentEditReceived` collab-provider analytics event, fired once per received transaction
64
+ that contains agent-authored steps, with non-PII attributes (agent ids, count, kinds,
65
+ agent/total step counts).
66
+ - Add an `agentEditShimmerNotShown` COLLAB operational analytics event for agent edits that apply
67
+ without the shimmer (`rebasedConcurrentEdit`, `nothingToShow`, `captureThrew`,
68
+ `tornDownMidAnimation`); neutral action + `reason`, non-PII attributes.
69
+ - Hoist the top-level block/position helpers in `agent-shimmer-ranges` to reusable module scope,
70
+ drop the redundant upper-bound clamp in `agent-shimmer-decorations`, and remove the empty
71
+ `@example` JSDoc tags added in the original PR.
72
+
73
+ `@atlaskit/editor-common` gains a new subpath export,
74
+ `@atlaskit/editor-common/analytics/types/agent-edit-shimmer-events`, exposing the
75
+ `agentEditShimmerNotShown` operational event types. Usage:
76
+
77
+ ```ts
78
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
79
+ import type { AgentEditShimmerNotShownReason } from '@atlaskit/editor-common/analytics/types/agent-edit-shimmer-events';
80
+
81
+ const reason: AgentEditShimmerNotShownReason = 'captureThrew';
82
+ editorAnalyticsApi?.fireAnalyticsEvent({
83
+ action: ACTION.AGENT_EDIT_SHIMMER_NOT_SHOWN,
84
+ actionSubject: ACTION_SUBJECT.COLLAB,
85
+ eventType: EVENT_TYPE.OPERATIONAL,
86
+ attributes: { reason },
87
+ });
88
+ ```
89
+
3
90
  ## 135.0.0
4
91
 
5
92
  ### Major Changes
@@ -17,7 +17,8 @@ var testMultivariateOverrides = exports.testMultivariateOverrides = {
17
17
  platform_editor_paste_actions_menu_v2: 'control',
18
18
  cc_smarts_should_improve_writing_migration: 'control',
19
19
  confluence_quick_insert_embeds: 'control',
20
- cc_cwr_prompt_strength_indicator: 'control'
20
+ cc_cwr_prompt_strength_indicator: 'control',
21
+ confluence_cwr_3p_connection_suggested_prompts: 'control'
21
22
  };
22
23
  var testBooleanOverrides = exports.testBooleanOverrides = {
23
24
  'cc-maui-ai-edit-loading-experiment': true,
@@ -49,7 +49,8 @@ var editorExperimentsConfig = exports.editorExperimentsConfig = {
49
49
  }),
50
50
  // Added 2026-07-21
51
51
  // `isEnabled` is the gating param; the experiment's dynamic config also carries the numeric
52
- // `durationMs` shimmer duration, read at runtime via `expVal`.
52
+ // `shimmerDurationMs` (skeleton) and `highlightDurationMs` (purple highlight) durations, read at
53
+ // runtime via `expVal`.
53
54
  platform_editor_agent_be_streaming: (0, _experimentBuilders.createBooleanExperiment)({
54
55
  productKeys: {
55
56
  confluence: 'platform_editor_agent_be_streaming'
@@ -516,6 +517,15 @@ var editorExperimentsConfig = exports.editorExperimentsConfig = {
516
517
  values: ['control', 'variant1'],
517
518
  defaultValue: 'control'
518
519
  }),
520
+ // Added 2026-07-21
521
+ confluence_cwr_3p_connection_suggested_prompts: (0, _experimentBuilders.createMultivariateExperiment)({
522
+ productKeys: {
523
+ confluence: 'confluence_cwr_3p_connection_suggested_prompts'
524
+ },
525
+ param: 'cohort',
526
+ values: ['control', 'variant_a', 'variant_b'],
527
+ defaultValue: 'control'
528
+ }),
519
529
  // Added 2026-03-02
520
530
  platform_editor_inline_card_dispatch_guard: (0, _experimentBuilders.createBooleanExperiment)({
521
531
  productKeys: {
@@ -11,7 +11,8 @@ export const testMultivariateOverrides = {
11
11
  platform_editor_paste_actions_menu_v2: 'control',
12
12
  cc_smarts_should_improve_writing_migration: 'control',
13
13
  confluence_quick_insert_embeds: 'control',
14
- cc_cwr_prompt_strength_indicator: 'control'
14
+ cc_cwr_prompt_strength_indicator: 'control',
15
+ confluence_cwr_3p_connection_suggested_prompts: 'control'
15
16
  };
16
17
  export const testBooleanOverrides = {
17
18
  'cc-maui-ai-edit-loading-experiment': true,
@@ -43,7 +43,8 @@ export const editorExperimentsConfig = {
43
43
  }),
44
44
  // Added 2026-07-21
45
45
  // `isEnabled` is the gating param; the experiment's dynamic config also carries the numeric
46
- // `durationMs` shimmer duration, read at runtime via `expVal`.
46
+ // `shimmerDurationMs` (skeleton) and `highlightDurationMs` (purple highlight) durations, read at
47
+ // runtime via `expVal`.
47
48
  platform_editor_agent_be_streaming: createBooleanExperiment({
48
49
  productKeys: {
49
50
  confluence: 'platform_editor_agent_be_streaming'
@@ -510,6 +511,15 @@ export const editorExperimentsConfig = {
510
511
  values: ['control', 'variant1'],
511
512
  defaultValue: 'control'
512
513
  }),
514
+ // Added 2026-07-21
515
+ confluence_cwr_3p_connection_suggested_prompts: createMultivariateExperiment({
516
+ productKeys: {
517
+ confluence: 'confluence_cwr_3p_connection_suggested_prompts'
518
+ },
519
+ param: 'cohort',
520
+ values: ['control', 'variant_a', 'variant_b'],
521
+ defaultValue: 'control'
522
+ }),
513
523
  // Added 2026-03-02
514
524
  platform_editor_inline_card_dispatch_guard: createBooleanExperiment({
515
525
  productKeys: {
@@ -11,7 +11,8 @@ export var testMultivariateOverrides = {
11
11
  platform_editor_paste_actions_menu_v2: 'control',
12
12
  cc_smarts_should_improve_writing_migration: 'control',
13
13
  confluence_quick_insert_embeds: 'control',
14
- cc_cwr_prompt_strength_indicator: 'control'
14
+ cc_cwr_prompt_strength_indicator: 'control',
15
+ confluence_cwr_3p_connection_suggested_prompts: 'control'
15
16
  };
16
17
  export var testBooleanOverrides = {
17
18
  'cc-maui-ai-edit-loading-experiment': true,
@@ -43,7 +43,8 @@ export var editorExperimentsConfig = {
43
43
  }),
44
44
  // Added 2026-07-21
45
45
  // `isEnabled` is the gating param; the experiment's dynamic config also carries the numeric
46
- // `durationMs` shimmer duration, read at runtime via `expVal`.
46
+ // `shimmerDurationMs` (skeleton) and `highlightDurationMs` (purple highlight) durations, read at
47
+ // runtime via `expVal`.
47
48
  platform_editor_agent_be_streaming: createBooleanExperiment({
48
49
  productKeys: {
49
50
  confluence: 'platform_editor_agent_be_streaming'
@@ -510,6 +511,15 @@ export var editorExperimentsConfig = {
510
511
  values: ['control', 'variant1'],
511
512
  defaultValue: 'control'
512
513
  }),
514
+ // Added 2026-07-21
515
+ confluence_cwr_3p_connection_suggested_prompts: createMultivariateExperiment({
516
+ productKeys: {
517
+ confluence: 'confluence_cwr_3p_connection_suggested_prompts'
518
+ },
519
+ param: 'cohort',
520
+ values: ['control', 'variant_a', 'variant_b'],
521
+ defaultValue: 'control'
522
+ }),
513
523
  // Added 2026-03-02
514
524
  platform_editor_inline_card_dispatch_guard: createBooleanExperiment({
515
525
  productKeys: {
@@ -1840,5 +1840,12 @@ export declare const editorExperimentsConfig: {
1840
1840
  productKeys?: ProductKeys;
1841
1841
  typeGuard: IsBooleanType;
1842
1842
  };
1843
+ confluence_cwr_3p_connection_suggested_prompts: {
1844
+ defaultValue: 'control' | 'variant_a' | 'variant_b';
1845
+ param: string;
1846
+ productKeys?: ProductKeys;
1847
+ typeGuard: (value: unknown) => value is 'control' | 'variant_a' | 'variant_b';
1848
+ values: ('control' | 'variant_a' | 'variant_b')[];
1849
+ };
1843
1850
  };
1844
1851
  export {};
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@atlaskit/tmp-editor-statsig/exp-test-overrides",
3
+ "main": "../dist/cjs/exp-test-overrides.js",
4
+ "module": "../dist/esm/exp-test-overrides.js",
5
+ "module:es2019": "../dist/es2019/exp-test-overrides.js",
6
+ "types": "../dist/types/exp-test-overrides.d.ts"
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/tmp-editor-statsig",
3
- "version": "135.0.0",
3
+ "version": "135.1.0",
4
4
  "description": "Temp plugin to ease use of statsig feature flags until platform feature flags are available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",