@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 +87 -0
- package/dist/cjs/exp-test-overrides.js +2 -1
- package/dist/cjs/experiments-config.js +11 -1
- package/dist/es2019/exp-test-overrides.js +2 -1
- package/dist/es2019/experiments-config.js +11 -1
- package/dist/esm/exp-test-overrides.js +2 -1
- package/dist/esm/experiments-config.js +11 -1
- package/dist/types/experiments-config.d.ts +7 -0
- package/exp-test-overrides/package.json +7 -0
- package/package.json +1 -1
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
|
-
// `
|
|
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
|
-
// `
|
|
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
|
-
// `
|
|
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