@atlaskit/rovo-agent-analytics 0.17.0 → 0.19.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 (56) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +69 -18
  3. package/actions/add-tools-prompt/package.json +17 -0
  4. package/actions/agent-interactions/package.json +17 -0
  5. package/actions/create-flow/package.json +17 -0
  6. package/actions/debug/package.json +17 -0
  7. package/actions/editing/package.json +17 -0
  8. package/actions/tool-actions/package.json +5 -5
  9. package/dist/cjs/actions/groups/add-tools-prompt.js +32 -0
  10. package/dist/cjs/actions/groups/agent-interactions.js +44 -0
  11. package/dist/cjs/actions/groups/create-flow.js +39 -0
  12. package/dist/cjs/actions/groups/debug.js +31 -0
  13. package/dist/cjs/actions/groups/editing.js +26 -0
  14. package/dist/cjs/actions/{tool-actions/index.js → groups/tools.js} +16 -1
  15. package/dist/cjs/actions/index.js +14 -35
  16. package/dist/cjs/actions/registry.js +53 -0
  17. package/dist/cjs/create/index.js +11 -30
  18. package/dist/es2019/actions/groups/add-tools-prompt.js +26 -0
  19. package/dist/es2019/actions/groups/agent-interactions.js +38 -0
  20. package/dist/es2019/actions/groups/create-flow.js +33 -0
  21. package/dist/es2019/actions/groups/debug.js +25 -0
  22. package/dist/es2019/actions/groups/editing.js +20 -0
  23. package/dist/es2019/actions/{tool-actions/index.js → groups/tools.js} +15 -0
  24. package/dist/es2019/actions/index.js +19 -35
  25. package/dist/es2019/actions/registry.js +52 -0
  26. package/dist/es2019/create/index.js +14 -29
  27. package/dist/esm/actions/groups/add-tools-prompt.js +26 -0
  28. package/dist/esm/actions/groups/agent-interactions.js +38 -0
  29. package/dist/esm/actions/groups/create-flow.js +33 -0
  30. package/dist/esm/actions/groups/debug.js +25 -0
  31. package/dist/esm/actions/groups/editing.js +20 -0
  32. package/dist/esm/actions/{tool-actions/index.js → groups/tools.js} +15 -0
  33. package/dist/esm/actions/index.js +15 -35
  34. package/dist/esm/actions/registry.js +48 -0
  35. package/dist/esm/create/index.js +12 -30
  36. package/dist/types/actions/groups/add-tools-prompt.d.ts +21 -0
  37. package/dist/types/actions/groups/agent-interactions.d.ts +39 -0
  38. package/dist/types/actions/groups/create-flow.d.ts +22 -0
  39. package/dist/types/actions/groups/debug.d.ts +30 -0
  40. package/dist/types/actions/groups/editing.d.ts +24 -0
  41. package/dist/types/actions/groups/tools.d.ts +38 -0
  42. package/dist/types/actions/index.d.ts +17 -47
  43. package/dist/types/actions/registry.d.ts +16 -0
  44. package/dist/types/create/index.d.ts +17 -15
  45. package/dist/types-ts4.5/actions/groups/add-tools-prompt.d.ts +21 -0
  46. package/dist/types-ts4.5/actions/groups/agent-interactions.d.ts +39 -0
  47. package/dist/types-ts4.5/actions/groups/create-flow.d.ts +22 -0
  48. package/dist/types-ts4.5/actions/groups/debug.d.ts +30 -0
  49. package/dist/types-ts4.5/actions/groups/editing.d.ts +24 -0
  50. package/dist/types-ts4.5/actions/groups/tools.d.ts +38 -0
  51. package/dist/types-ts4.5/actions/index.d.ts +17 -47
  52. package/dist/types-ts4.5/actions/registry.d.ts +16 -0
  53. package/dist/types-ts4.5/create/index.d.ts +17 -15
  54. package/package.json +1 -1
  55. package/dist/types/actions/tool-actions/index.d.ts +0 -14
  56. package/dist/types-ts4.5/actions/tool-actions/index.d.ts +0 -14
@@ -5,40 +5,17 @@ import { useCallback, useContext, useRef } from 'react';
5
5
  import { AnalyticsReactContext, useAnalyticsEvents } from '@atlaskit/analytics-next';
6
6
  import { ANALYTICS_CHANNEL } from '../common/constants';
7
7
  import { getAttributesFromContexts, getDefaultTrackEventConfig } from '../common/utils';
8
- export var AgentDebugActions = /*#__PURE__*/function (AgentDebugActions) {
9
- /* View debug modal - https://data-portal.internal.atlassian.com/analytics/registry/97183 */
10
- AgentDebugActions["VIEW"] = "debugView";
11
- /* Copy all debug data - https://data-portal.internal.atlassian.com/analytics/registry/97186 */
12
- AgentDebugActions["COPY_ALL"] = "debugCopyAll";
13
- /* Copy debug data - https://data-portal.internal.atlassian.com/analytics/registry/97184 */
14
- AgentDebugActions["COPY"] = "debugCopy";
15
- /* Toggle skill info - https://data-portal.internal.atlassian.com/analytics/registry/97185 */
16
- AgentDebugActions["TOGGLE_SKILL_INFO"] = "debugToggleSkillInfo";
17
- return AgentDebugActions;
18
- }({});
19
- export var AgentCommonActions = /*#__PURE__*/function (AgentCommonActions) {
20
- /* View agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97125 */
21
- AgentCommonActions["VIEW"] = "view";
22
- /* Edit agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97126 */
23
- AgentCommonActions["EDIT"] = "edit";
24
- /* Agent updated - https://data-portal.internal.atlassian.com/analytics/registry/97122 */
25
- AgentCommonActions["UPDATED"] = "updated";
26
- /* Copy link clicked - https://data-portal.internal.atlassian.com/analytics/registry/97128 */
27
- AgentCommonActions["COPY_LINK"] = "copyLink";
28
- /* Delete agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97129 */
29
- AgentCommonActions["DELETE"] = "delete";
30
- /* Duplicate agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97130 */
31
- AgentCommonActions["DUPLICATE"] = "duplicate";
32
- /* Star agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97133 */
33
- AgentCommonActions["STAR"] = "star";
34
- /* Chat with agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97095 */
35
- AgentCommonActions["CHAT"] = "chat";
36
- /* Verify agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97134 */
37
- AgentCommonActions["VERIFY"] = "verify";
38
- /* Unverify agent clicked - https://data-portal.internal.atlassian.com/analytics/registry/97135 */
39
- AgentCommonActions["UNVERIFY"] = "unverify";
40
- return AgentCommonActions;
41
- }({});
8
+ import { AgentInteractionActions } from './groups/agent-interactions';
9
+ import { AgentDebugActions as AgentDebugActionsEnum } from './groups/debug';
10
+ import { AgentEditingActions } from './groups/editing';
11
+ import { ACTION_TO_GROUP } from './registry';
12
+
13
+ // Backward-compatible aliases
14
+ // TODO: migrate consumers to use group-specific imports, then remove
15
+ export var AgentCommonActions = _objectSpread(_objectSpread({}, AgentInteractionActions), AgentEditingActions);
16
+
17
+ // TODO: Remove the alias, will be breaking change, this is just for backward compatibility
18
+ export var AgentDebugActions = AgentDebugActionsEnum;
42
19
  var globalEventConfig = getDefaultTrackEventConfig();
43
20
  export var useRovoAgentActionAnalytics = function useRovoAgentActionAnalytics(commonAttributes) {
44
21
  var analyticsContext = useContext(AnalyticsReactContext);
@@ -56,7 +33,9 @@ export var useRovoAgentActionAnalytics = function useRovoAgentActionAnalytics(co
56
33
  fireAnalyticsEvent({
57
34
  actionSubject: 'rovoAgent',
58
35
  action: action,
59
- attributes: attributes
36
+ attributes: _objectSpread(_objectSpread({}, attributes), {}, {
37
+ actionGroup: ACTION_TO_GROUP[action]
38
+ })
60
39
  });
61
40
  }, [fireAnalyticsEvent]);
62
41
  var trackAgentActionError = useCallback(function (action, error, attributes) {
@@ -64,6 +43,7 @@ export var useRovoAgentActionAnalytics = function useRovoAgentActionAnalytics(co
64
43
  actionSubject: 'rovoAgentError',
65
44
  action: action,
66
45
  attributes: _objectSpread(_objectSpread({}, attributes), {}, {
46
+ actionGroup: ACTION_TO_GROUP[action],
67
47
  error: {
68
48
  message: error.message
69
49
  }
@@ -0,0 +1,48 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ /**
5
+ * Action Registry
6
+ *
7
+ * Single source of truth for ALL action groups across the library.
8
+ * This file composes all groups into a type-safe registry and builds the
9
+ * runtime mapping from action values to their group names, which gets
10
+ * automatically attached as `attributes.actionGroup` in every fired event.
11
+ *
12
+ * Both `useRovoAgentActionAnalytics` and `useRovoAgentCreateAnalytics` hooks
13
+ * use `ACTION_TO_GROUP` from this registry.
14
+ *
15
+ * ## Adding a new action group
16
+ * 1. Create a new file in ./groups/ following the template of existing group files
17
+ * 2. Import the group's ACTION_GROUP, action enum, and attribute type below
18
+ * 3. If the group is used by the actions hook, add the attribute type to `ActionAttributes`
19
+ * 4. Add the enum + group to `ACTION_TO_GROUP` using `mapActionsToGroup`
20
+ */
21
+ import { AddToolsPromptActions, ACTION_GROUP as ADD_TOOLS_PROMPT_GROUP } from './groups/add-tools-prompt';
22
+ import { AgentInteractionActions, ACTION_GROUP as AGENT_INTERACTIONS_GROUP } from './groups/agent-interactions';
23
+ import { CreateFlowActions, ACTION_GROUP as CREATE_FLOW_GROUP } from './groups/create-flow';
24
+ import { AgentDebugActions, ACTION_GROUP as DEBUG_GROUP } from './groups/debug';
25
+ import { AgentEditingActions, ACTION_GROUP as EDITING_GROUP } from './groups/editing';
26
+ import { AgentToolActions, ACTION_GROUP as TOOLS_GROUP } from './groups/tools';
27
+
28
+ /**
29
+ * Combined attribute map for action-hook groups (type-safe attributes).
30
+ * Create-flow groups are excluded — they use a looser attribute type via the create hook.
31
+ */
32
+
33
+ /**
34
+ * Helper to build a Record mapping each enum value to its group name.
35
+ */
36
+ var mapActionsToGroup = function mapActionsToGroup(actionEnum, group) {
37
+ return Object.fromEntries(Object.values(actionEnum).map(function (action) {
38
+ return [action, group];
39
+ }));
40
+ };
41
+
42
+ /**
43
+ * Runtime lookup: action value → group name.
44
+ * Used by ALL analytics hooks to auto-inject `attributes.actionGroup`.
45
+ *
46
+ * When you add a new group, add it here too.
47
+ */
48
+ export var ACTION_TO_GROUP = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, mapActionsToGroup(AgentInteractionActions, AGENT_INTERACTIONS_GROUP)), mapActionsToGroup(AgentEditingActions, EDITING_GROUP)), mapActionsToGroup(AgentDebugActions, DEBUG_GROUP)), mapActionsToGroup(AgentToolActions, TOOLS_GROUP)), mapActionsToGroup(CreateFlowActions, CREATE_FLOW_GROUP)), mapActionsToGroup(AddToolsPromptActions, ADD_TOOLS_PROMPT_GROUP));
@@ -1,39 +1,19 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
5
  import { useCallback, useContext, useRef } from 'react';
6
6
  import { AnalyticsReactContext, useAnalyticsEvents } from '@atlaskit/analytics-next';
7
+ import { AddToolsPromptActions } from '../actions/groups/add-tools-prompt';
8
+ import { CreateFlowActions } from '../actions/groups/create-flow';
9
+ import { ACTION_TO_GROUP } from '../actions/registry';
7
10
  import { ANALYTICS_CHANNEL } from '../common/constants';
8
11
  import { useRovoAgentCSID } from '../common/csid';
9
12
  import { getAttributesFromContexts, getDefaultTrackEventConfig } from '../common/utils';
10
- export var AgentCreateActions = /*#__PURE__*/function (AgentCreateActions) {
11
- /* Start create flow when user clicks on "Create agent" button - https://data-portal.internal.atlassian.com/analytics/registry/97089 */
12
- AgentCreateActions["START"] = "createFlowStart";
13
- /* Skip natural language - https://data-portal.internal.atlassian.com/analytics/registry/97127 */
14
- AgentCreateActions["SKIP_NL"] = "createFlowSkipNL";
15
- /* Review natural language - https://data-portal.internal.atlassian.com/analytics/registry/97124 */
16
- AgentCreateActions["REVIEW_NL"] = "createFlowReviewNL";
17
- /* Activate agent - https://data-portal.internal.atlassian.com/analytics/registry/97123 */
18
- AgentCreateActions["ACTIVATE"] = "createFlowActivate";
19
- /* Restart create flow - https://data-portal.internal.atlassian.com/analytics/registry/97131 */
20
- AgentCreateActions["RESTART"] = "createFlowRestart";
21
- /* Error occurred - https://data-portal.internal.atlassian.com/analytics/registry/97132 */
22
- AgentCreateActions["ERROR"] = "createFlowError";
23
- /* Land in studio - https://data-portal.internal.atlassian.com/analytics/registry/97136 */
24
- AgentCreateActions["LAND"] = "createLandInStudio";
25
- /* Discard agent - https://data-portal.internal.atlassian.com/analytics/registry/97137 */
26
- AgentCreateActions["DISCARD"] = "createDiscard";
27
- /* Show no skills modal - https://data-portal.internal.atlassian.com/analytics/registry/97435 */
28
- AgentCreateActions["SHOW_NO_SKILLS_MODAL"] = "showNoSkillsModal";
29
- /* Browse click no skills modal - https://data-portal.internal.atlassian.com/analytics/registry/97436 */
30
- AgentCreateActions["BROWSE_CLICK_NO_SKILLS_MODAL"] = "browseClickNoSkillsModal";
31
- /* Discard no skills modal - https://data-portal.internal.atlassian.com/analytics/registry/97437 */
32
- AgentCreateActions["DISCARD_NO_SKILLS_MODAL"] = "discardNoSkillsModal";
33
- /* Draft created from solution architect plan card - https://data-portal.internal.atlassian.com/analytics/registry/97924 */
34
- AgentCreateActions["SA_DRAFT"] = "saDraft";
35
- return AgentCreateActions;
36
- }({});
13
+
14
+ // Backward-compatible alias
15
+ // TODO: migrate consumers to use CreateFlowActions / AddToolsPromptActions directly, then remove
16
+ export var AgentCreateActions = _objectSpread(_objectSpread({}, CreateFlowActions), AddToolsPromptActions);
37
17
  var globalEventConfig = getDefaultTrackEventConfig();
38
18
  export var useRovoAgentCreateAnalytics = function useRovoAgentCreateAnalytics(commonAttributes) {
39
19
  var _useRovoAgentCSID = useRovoAgentCSID(),
@@ -46,7 +26,9 @@ export var useRovoAgentCreateAnalytics = function useRovoAgentCreateAnalytics(co
46
26
  var commonAttributesRef = useRef(commonAttributes);
47
27
  var fireAnalyticsEvent = useCallback(function (event) {
48
28
  var referrer = typeof window !== 'undefined' ? window.document.referrer : 'unknown';
29
+ var action = event.action;
49
30
  var attributes = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, getAttributesFromContexts(analyticsContext.getAtlaskitAnalyticsContext())), commonAttributesRef.current), event.attributes), {}, {
31
+ actionGroup: ACTION_TO_GROUP[action],
50
32
  csid: csid,
51
33
  referrer: referrer
52
34
  });
@@ -74,7 +56,7 @@ export var useRovoAgentCreateAnalytics = function useRovoAgentCreateAnalytics(co
74
56
  var trackCreateSessionStart = useCallback(function (attributes) {
75
57
  fireAnalyticsEvent({
76
58
  actionSubject: 'rovoAgent',
77
- action: AgentCreateActions.START,
59
+ action: CreateFlowActions.START,
78
60
  attributes: attributes
79
61
  });
80
62
  refreshCSID();
@@ -82,7 +64,7 @@ export var useRovoAgentCreateAnalytics = function useRovoAgentCreateAnalytics(co
82
64
  var trackCreateSessionError = useCallback(function (error, attributes) {
83
65
  fireAnalyticsEvent({
84
66
  actionSubject: 'rovoAgent',
85
- action: AgentCreateActions.ERROR,
67
+ action: CreateFlowActions.ERROR,
86
68
  attributes: _objectSpread({
87
69
  error: {
88
70
  message: error.message
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Action Group: addToolsPrompt
3
+ *
4
+ * Add tools prompt modal — shown when a user tries to activate/publish an agent that has no tools.
5
+ * The user can browse tools or dismiss and proceed without them.
6
+ *
7
+ * This group is intentionally flow-agnostic so the action values stay stable
8
+ * regardless of whether the prompt fires from the create flow or a future publish flow.
9
+ *
10
+ * ## Adding a new action
11
+ * 1. Add the action to the `AddToolsPromptActions` enum below with a data-portal link
12
+ * 2. Register this group in ../registry.ts (if this is a new group file)
13
+ *
14
+ */
15
+ /** The group name sent as `attributes.actionGroup` in analytics events */
16
+ export declare const ACTION_GROUP: "addToolsPrompt";
17
+ export declare enum AddToolsPromptActions {
18
+ SHOWN = "addToolsPromptShown",
19
+ BROWSE = "addToolsPromptBrowse",
20
+ DISMISS = "addToolsPromptDismiss"
21
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Action Group: agentInteractions
3
+ *
4
+ * User-initiated interactions with an agent — typically from the overflow menu ("...")
5
+ * or agent profile surfaces (viewing, editing, deleting, duplicating, starring, sharing, verifying).
6
+ *
7
+ * NOTE: This is about UI interactions, not backend "actions" (which are being replaced by "tools").
8
+ *
9
+ * ## Adding a new action
10
+ * 1. Add the action to the `AgentInteractionActions` enum below with a data-portal link
11
+ * 2. Add the corresponding attribute type in `AgentInteractionAttributes`
12
+ * 3. If this action doesn't fit user interactions, create a new group file instead
13
+ * (see other files in this directory for the template)
14
+ */
15
+ import type { BaseAgentAnalyticsAttributes } from '../../common/types';
16
+ /** The group name sent as `attributes.actionGroup` in analytics events */
17
+ export declare const ACTION_GROUP: "agentInteractions";
18
+ export declare enum AgentInteractionActions {
19
+ VIEW = "view",
20
+ EDIT = "edit",
21
+ COPY_LINK = "copyLink",
22
+ DELETE = "delete",
23
+ DUPLICATE = "duplicate",
24
+ STAR = "star",
25
+ CHAT = "chat",
26
+ VERIFY = "verify",
27
+ UNVERIFY = "unverify"
28
+ }
29
+ export type AgentInteractionAttributes = {
30
+ [AgentInteractionActions.VIEW]: BaseAgentAnalyticsAttributes;
31
+ [AgentInteractionActions.EDIT]: BaseAgentAnalyticsAttributes;
32
+ [AgentInteractionActions.COPY_LINK]: BaseAgentAnalyticsAttributes;
33
+ [AgentInteractionActions.DELETE]: BaseAgentAnalyticsAttributes;
34
+ [AgentInteractionActions.DUPLICATE]: BaseAgentAnalyticsAttributes;
35
+ [AgentInteractionActions.STAR]: BaseAgentAnalyticsAttributes;
36
+ [AgentInteractionActions.CHAT]: BaseAgentAnalyticsAttributes;
37
+ [AgentInteractionActions.VERIFY]: BaseAgentAnalyticsAttributes;
38
+ [AgentInteractionActions.UNVERIFY]: BaseAgentAnalyticsAttributes;
39
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Action Group: createFlow
3
+ *
4
+ * Create agent funnel steps — from clicking "Create agent" through to activation or discard,
5
+ *
6
+ * ## Adding a new action
7
+ * 1. Add the action to the `CreateFlowActions` enum below with a data-portal link
8
+ * 2. Register this group in ../registry.ts (if this is a new group file)
9
+ */
10
+ /** The group name sent as `attributes.actionGroup` in analytics events */
11
+ export declare const ACTION_GROUP: "createFlow";
12
+ export declare enum CreateFlowActions {
13
+ START = "createFlowStart",
14
+ SKIP_NL = "createFlowSkipNL",
15
+ REVIEW_NL = "createFlowReviewNL",
16
+ ACTIVATE = "createFlowActivate",
17
+ RESTART = "createFlowRestart",
18
+ ERROR = "createFlowError",
19
+ LAND = "createLandInStudio",
20
+ DISCARD = "createDiscard",
21
+ SA_DRAFT = "saDraft"
22
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Action Group: debug
3
+ *
4
+ * Actions related to the agent debug modal (viewing, copying debug data, toggling skill info).
5
+ *
6
+ * ## Adding a new action
7
+ * 1. Add the action to the `AgentDebugActions` enum below with a data-portal link
8
+ * 2. Add the corresponding attribute type in `DebugActionAttributes`
9
+ * 3. If this action doesn't fit this group, consider creating a new group file instead
10
+ * (see other files in this directory for the template)
11
+ */
12
+ /** The group name sent as `attributes.actionGroup` in analytics events */
13
+ export declare const ACTION_GROUP: "debug";
14
+ export declare enum AgentDebugActions {
15
+ VIEW = "debugView",
16
+ COPY_ALL = "debugCopyAll",
17
+ COPY = "debugCopy",
18
+ TOGGLE_SKILL_INFO = "debugToggleSkillInfo"
19
+ }
20
+ type EmptyAttributes = {};
21
+ export type DebugActionAttributes = {
22
+ [AgentDebugActions.COPY_ALL]: EmptyAttributes;
23
+ [AgentDebugActions.COPY]: EmptyAttributes;
24
+ [AgentDebugActions.TOGGLE_SKILL_INFO]: {
25
+ toolId: string;
26
+ isExpanded: boolean;
27
+ };
28
+ [AgentDebugActions.VIEW]: EmptyAttributes;
29
+ };
30
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Action Group: editing
3
+ *
4
+ * Agent editing/mutation events — fired when an agent's configuration is saved or modified.
5
+ * Unlike agentInteractions (user clicks), these track actual data changes.
6
+ *
7
+ * ## Adding a new action
8
+ * 1. Add the action to the `AgentEditingActions` enum below with a data-portal link
9
+ * 2. Add the corresponding attribute type in `EditingActionAttributes`
10
+ * 3. If this action doesn't fit editing/mutation events, create a new group file instead
11
+ * (see other files in this directory for the template)
12
+ */
13
+ import type { BaseAgentAnalyticsAttributes } from '../../common/types';
14
+ /** The group name sent as `attributes.actionGroup` in analytics events */
15
+ export declare const ACTION_GROUP: "editing";
16
+ export declare enum AgentEditingActions {
17
+ UPDATED = "updated"
18
+ }
19
+ export type EditingActionAttributes = {
20
+ [AgentEditingActions.UPDATED]: BaseAgentAnalyticsAttributes & {
21
+ agentType: string;
22
+ field: string;
23
+ };
24
+ };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Action Group: tools
3
+ *
4
+ * Actions related to agent tool execution during chat
5
+ * (confirming, streaming, viewing results, errors).
6
+ *
7
+ * ## Adding a new action
8
+ * 1. Add the action to the `AgentToolActions` enum below with a data-portal link
9
+ * 2. Add the corresponding attribute type in `ToolsActionAttributes`
10
+ * 3. If this action doesn't fit this group, consider creating a new group file instead
11
+ * (see other files in this directory for the template)
12
+ */
13
+ import type { BaseAgentAnalyticsAttributes } from '../../common/types';
14
+ /** The group name sent as `attributes.actionGroup` in analytics events */
15
+ export declare const ACTION_GROUP: "tools";
16
+ export declare enum AgentToolActions {
17
+ TOOLS_EXECUTION_CONFIRMED = "toolsExecutionConfirmed",
18
+ TOOLS_EXECUTION_STREAM_STOPPED = "toolsExecutionStreamStopped",
19
+ TOOLS_EXECUTION_RESULT_VIEWED = "toolsExecutionResultViewed",
20
+ TOOLS_EXECUTION_RESULT_ERROR = "toolsExecutionResultError"
21
+ }
22
+ export type ToolsExecutionAttributes = BaseAgentAnalyticsAttributes & {
23
+ tools: {
24
+ toolId: string;
25
+ toolSource: string;
26
+ resolutionType: string;
27
+ }[];
28
+ singleInstrumentationId: string | undefined;
29
+ };
30
+ export type ToolsExecutionResultAttributes = ToolsExecutionAttributes & {
31
+ scenarioId: string | null | undefined;
32
+ };
33
+ export type ToolsActionAttributes = {
34
+ [AgentToolActions.TOOLS_EXECUTION_CONFIRMED]: ToolsExecutionAttributes;
35
+ [AgentToolActions.TOOLS_EXECUTION_STREAM_STOPPED]: ToolsExecutionAttributes;
36
+ [AgentToolActions.TOOLS_EXECUTION_RESULT_VIEWED]: ToolsExecutionResultAttributes;
37
+ [AgentToolActions.TOOLS_EXECUTION_RESULT_ERROR]: ToolsExecutionAttributes;
38
+ };
@@ -1,52 +1,22 @@
1
- import type { BaseAgentAnalyticsAttributes, RemainingRequired } from '../common/types';
2
- import type { AgentToolActions, ToolsExecutionAttributes } from './tool-actions';
3
- export declare enum AgentDebugActions {
4
- VIEW = "debugView",
5
- COPY_ALL = "debugCopyAll",
6
- COPY = "debugCopy",
7
- TOGGLE_SKILL_INFO = "debugToggleSkillInfo"
8
- }
9
- export declare enum AgentCommonActions {
10
- VIEW = "view",
11
- EDIT = "edit",
12
- UPDATED = "updated",
13
- COPY_LINK = "copyLink",
14
- DELETE = "delete",
15
- DUPLICATE = "duplicate",
16
- STAR = "star",
17
- CHAT = "chat",
18
- VERIFY = "verify",
19
- UNVERIFY = "unverify"
20
- }
21
- type EmptyAttributes = {};
22
- type ActionAttributes = {
23
- [AgentCommonActions.VIEW]: BaseAgentAnalyticsAttributes;
24
- [AgentCommonActions.EDIT]: BaseAgentAnalyticsAttributes;
25
- [AgentCommonActions.UPDATED]: BaseAgentAnalyticsAttributes & {
26
- agentType: string;
27
- field: string;
28
- };
29
- [AgentCommonActions.COPY_LINK]: BaseAgentAnalyticsAttributes;
30
- [AgentCommonActions.DELETE]: BaseAgentAnalyticsAttributes;
31
- [AgentCommonActions.DUPLICATE]: BaseAgentAnalyticsAttributes;
32
- [AgentCommonActions.STAR]: BaseAgentAnalyticsAttributes;
33
- [AgentCommonActions.CHAT]: BaseAgentAnalyticsAttributes;
34
- [AgentCommonActions.VERIFY]: BaseAgentAnalyticsAttributes;
35
- [AgentCommonActions.UNVERIFY]: BaseAgentAnalyticsAttributes;
36
- [AgentDebugActions.COPY_ALL]: EmptyAttributes;
37
- [AgentDebugActions.COPY]: EmptyAttributes;
38
- [AgentDebugActions.TOGGLE_SKILL_INFO]: {
39
- toolId: string;
40
- isExpanded: boolean;
41
- };
42
- [AgentDebugActions.VIEW]: EmptyAttributes;
43
- [AgentToolActions.TOOLS_EXECUTION_CONFIRMED]: ToolsExecutionAttributes;
44
- [AgentToolActions.TOOLS_EXECUTION_STREAM_STOPPED]: ToolsExecutionAttributes;
45
- [AgentToolActions.TOOLS_EXECUTION_RESULT_VIEWED]: ToolsExecutionAttributes;
46
- [AgentToolActions.TOOLS_EXECUTION_RESULT_ERROR]: ToolsExecutionAttributes;
1
+ import type { RemainingRequired } from '../common/types';
2
+ import { AgentInteractionActions } from './groups/agent-interactions';
3
+ import { AgentDebugActions as AgentDebugActionsEnum } from './groups/debug';
4
+ import { AgentEditingActions } from './groups/editing';
5
+ import type { ActionAttributes } from './registry';
6
+ export declare const AgentCommonActions: {
7
+ readonly UPDATED: AgentEditingActions.UPDATED;
8
+ readonly VIEW: AgentInteractionActions.VIEW;
9
+ readonly EDIT: AgentInteractionActions.EDIT;
10
+ readonly COPY_LINK: AgentInteractionActions.COPY_LINK;
11
+ readonly DELETE: AgentInteractionActions.DELETE;
12
+ readonly DUPLICATE: AgentInteractionActions.DUPLICATE;
13
+ readonly STAR: AgentInteractionActions.STAR;
14
+ readonly CHAT: AgentInteractionActions.CHAT;
15
+ readonly VERIFY: AgentInteractionActions.VERIFY;
16
+ readonly UNVERIFY: AgentInteractionActions.UNVERIFY;
47
17
  };
18
+ export declare const AgentDebugActions: typeof AgentDebugActionsEnum;
48
19
  export declare const useRovoAgentActionAnalytics: <T extends {}>(commonAttributes: T) => {
49
20
  trackAgentAction: <A extends keyof ActionAttributes>(action: A, attributes: RemainingRequired<ActionAttributes[A], T>) => void;
50
21
  trackAgentActionError: <A extends keyof ActionAttributes>(action: A, error: Error, attributes?: RemainingRequired<ActionAttributes[A], T>) => void;
51
22
  };
52
- export {};
@@ -0,0 +1,16 @@
1
+ import { type AgentInteractionAttributes } from './groups/agent-interactions';
2
+ import { type DebugActionAttributes } from './groups/debug';
3
+ import { type EditingActionAttributes } from './groups/editing';
4
+ import { type ToolsActionAttributes } from './groups/tools';
5
+ /**
6
+ * Combined attribute map for action-hook groups (type-safe attributes).
7
+ * Create-flow groups are excluded — they use a looser attribute type via the create hook.
8
+ */
9
+ export type ActionAttributes = AgentInteractionAttributes & EditingActionAttributes & DebugActionAttributes & ToolsActionAttributes;
10
+ /**
11
+ * Runtime lookup: action value → group name.
12
+ * Used by ALL analytics hooks to auto-inject `attributes.actionGroup`.
13
+ *
14
+ * When you add a new group, add it here too.
15
+ */
16
+ export declare const ACTION_TO_GROUP: Record<string, string>;
@@ -1,22 +1,24 @@
1
+ import { AddToolsPromptActions } from '../actions/groups/add-tools-prompt';
2
+ import { CreateFlowActions } from '../actions/groups/create-flow';
3
+ export declare const AgentCreateActions: {
4
+ readonly SHOWN: AddToolsPromptActions.SHOWN;
5
+ readonly BROWSE: AddToolsPromptActions.BROWSE;
6
+ readonly DISMISS: AddToolsPromptActions.DISMISS;
7
+ readonly START: CreateFlowActions.START;
8
+ readonly SKIP_NL: CreateFlowActions.SKIP_NL;
9
+ readonly REVIEW_NL: CreateFlowActions.REVIEW_NL;
10
+ readonly ACTIVATE: CreateFlowActions.ACTIVATE;
11
+ readonly RESTART: CreateFlowActions.RESTART;
12
+ readonly ERROR: CreateFlowActions.ERROR;
13
+ readonly LAND: CreateFlowActions.LAND;
14
+ readonly DISCARD: CreateFlowActions.DISCARD;
15
+ readonly SA_DRAFT: CreateFlowActions.SA_DRAFT;
16
+ };
1
17
  type CommonAnalyticsAttributes = {
2
18
  touchPoint?: string;
3
19
  } & Record<string, any>;
4
- export declare enum AgentCreateActions {
5
- START = "createFlowStart",
6
- SKIP_NL = "createFlowSkipNL",
7
- REVIEW_NL = "createFlowReviewNL",
8
- ACTIVATE = "createFlowActivate",
9
- RESTART = "createFlowRestart",
10
- ERROR = "createFlowError",
11
- LAND = "createLandInStudio",
12
- DISCARD = "createDiscard",
13
- SHOW_NO_SKILLS_MODAL = "showNoSkillsModal",
14
- BROWSE_CLICK_NO_SKILLS_MODAL = "browseClickNoSkillsModal",
15
- DISCARD_NO_SKILLS_MODAL = "discardNoSkillsModal",
16
- SA_DRAFT = "saDraft"
17
- }
18
20
  export declare const useRovoAgentCreateAnalytics: (commonAttributes: CommonAnalyticsAttributes) => readonly [string | null, {
19
- readonly trackCreateSession: (action: Omit<AgentCreateActions, AgentCreateActions.START>, attributes?: CommonAnalyticsAttributes) => void;
21
+ readonly trackCreateSession: (action: (typeof AgentCreateActions)[keyof typeof AgentCreateActions], attributes?: CommonAnalyticsAttributes) => void;
20
22
  readonly trackCreateSessionStart: (attributes?: CommonAnalyticsAttributes) => void;
21
23
  readonly trackCreateSessionError: (error: Error, attributes?: CommonAnalyticsAttributes) => void;
22
24
  readonly refreshCSID: () => `${string}-${string}-${string}-${string}-${string}`;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Action Group: addToolsPrompt
3
+ *
4
+ * Add tools prompt modal — shown when a user tries to activate/publish an agent that has no tools.
5
+ * The user can browse tools or dismiss and proceed without them.
6
+ *
7
+ * This group is intentionally flow-agnostic so the action values stay stable
8
+ * regardless of whether the prompt fires from the create flow or a future publish flow.
9
+ *
10
+ * ## Adding a new action
11
+ * 1. Add the action to the `AddToolsPromptActions` enum below with a data-portal link
12
+ * 2. Register this group in ../registry.ts (if this is a new group file)
13
+ *
14
+ */
15
+ /** The group name sent as `attributes.actionGroup` in analytics events */
16
+ export declare const ACTION_GROUP: "addToolsPrompt";
17
+ export declare enum AddToolsPromptActions {
18
+ SHOWN = "addToolsPromptShown",
19
+ BROWSE = "addToolsPromptBrowse",
20
+ DISMISS = "addToolsPromptDismiss"
21
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Action Group: agentInteractions
3
+ *
4
+ * User-initiated interactions with an agent — typically from the overflow menu ("...")
5
+ * or agent profile surfaces (viewing, editing, deleting, duplicating, starring, sharing, verifying).
6
+ *
7
+ * NOTE: This is about UI interactions, not backend "actions" (which are being replaced by "tools").
8
+ *
9
+ * ## Adding a new action
10
+ * 1. Add the action to the `AgentInteractionActions` enum below with a data-portal link
11
+ * 2. Add the corresponding attribute type in `AgentInteractionAttributes`
12
+ * 3. If this action doesn't fit user interactions, create a new group file instead
13
+ * (see other files in this directory for the template)
14
+ */
15
+ import type { BaseAgentAnalyticsAttributes } from '../../common/types';
16
+ /** The group name sent as `attributes.actionGroup` in analytics events */
17
+ export declare const ACTION_GROUP: "agentInteractions";
18
+ export declare enum AgentInteractionActions {
19
+ VIEW = "view",
20
+ EDIT = "edit",
21
+ COPY_LINK = "copyLink",
22
+ DELETE = "delete",
23
+ DUPLICATE = "duplicate",
24
+ STAR = "star",
25
+ CHAT = "chat",
26
+ VERIFY = "verify",
27
+ UNVERIFY = "unverify"
28
+ }
29
+ export type AgentInteractionAttributes = {
30
+ [AgentInteractionActions.VIEW]: BaseAgentAnalyticsAttributes;
31
+ [AgentInteractionActions.EDIT]: BaseAgentAnalyticsAttributes;
32
+ [AgentInteractionActions.COPY_LINK]: BaseAgentAnalyticsAttributes;
33
+ [AgentInteractionActions.DELETE]: BaseAgentAnalyticsAttributes;
34
+ [AgentInteractionActions.DUPLICATE]: BaseAgentAnalyticsAttributes;
35
+ [AgentInteractionActions.STAR]: BaseAgentAnalyticsAttributes;
36
+ [AgentInteractionActions.CHAT]: BaseAgentAnalyticsAttributes;
37
+ [AgentInteractionActions.VERIFY]: BaseAgentAnalyticsAttributes;
38
+ [AgentInteractionActions.UNVERIFY]: BaseAgentAnalyticsAttributes;
39
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Action Group: createFlow
3
+ *
4
+ * Create agent funnel steps — from clicking "Create agent" through to activation or discard,
5
+ *
6
+ * ## Adding a new action
7
+ * 1. Add the action to the `CreateFlowActions` enum below with a data-portal link
8
+ * 2. Register this group in ../registry.ts (if this is a new group file)
9
+ */
10
+ /** The group name sent as `attributes.actionGroup` in analytics events */
11
+ export declare const ACTION_GROUP: "createFlow";
12
+ export declare enum CreateFlowActions {
13
+ START = "createFlowStart",
14
+ SKIP_NL = "createFlowSkipNL",
15
+ REVIEW_NL = "createFlowReviewNL",
16
+ ACTIVATE = "createFlowActivate",
17
+ RESTART = "createFlowRestart",
18
+ ERROR = "createFlowError",
19
+ LAND = "createLandInStudio",
20
+ DISCARD = "createDiscard",
21
+ SA_DRAFT = "saDraft"
22
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Action Group: debug
3
+ *
4
+ * Actions related to the agent debug modal (viewing, copying debug data, toggling skill info).
5
+ *
6
+ * ## Adding a new action
7
+ * 1. Add the action to the `AgentDebugActions` enum below with a data-portal link
8
+ * 2. Add the corresponding attribute type in `DebugActionAttributes`
9
+ * 3. If this action doesn't fit this group, consider creating a new group file instead
10
+ * (see other files in this directory for the template)
11
+ */
12
+ /** The group name sent as `attributes.actionGroup` in analytics events */
13
+ export declare const ACTION_GROUP: "debug";
14
+ export declare enum AgentDebugActions {
15
+ VIEW = "debugView",
16
+ COPY_ALL = "debugCopyAll",
17
+ COPY = "debugCopy",
18
+ TOGGLE_SKILL_INFO = "debugToggleSkillInfo"
19
+ }
20
+ type EmptyAttributes = {};
21
+ export type DebugActionAttributes = {
22
+ [AgentDebugActions.COPY_ALL]: EmptyAttributes;
23
+ [AgentDebugActions.COPY]: EmptyAttributes;
24
+ [AgentDebugActions.TOGGLE_SKILL_INFO]: {
25
+ toolId: string;
26
+ isExpanded: boolean;
27
+ };
28
+ [AgentDebugActions.VIEW]: EmptyAttributes;
29
+ };
30
+ export {};