@bringg/dashboard-sdk 9.82.0-pre.7 → 9.82.0-pre.8

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 (39) hide show
  1. package/dist/Analyst/Analyst.consts.d.ts +3 -39
  2. package/dist/Analyst/Analyst.consts.js +4 -40
  3. package/dist/Analyst/Analyst.consts.js.map +1 -1
  4. package/dist/Analyst/Analyst.d.ts +12 -6
  5. package/dist/Analyst/Analyst.js +20 -10
  6. package/dist/Analyst/Analyst.js.map +1 -1
  7. package/dist/Analyst/AnalystApi.d.ts +7 -0
  8. package/dist/Analyst/AnalystApi.js +17 -0
  9. package/dist/Analyst/AnalystApi.js.map +1 -0
  10. package/dist/Analyst/Chat/AnalystChat.consts.d.ts +40 -0
  11. package/dist/Analyst/Chat/AnalystChat.consts.js +45 -0
  12. package/dist/Analyst/Chat/AnalystChat.consts.js.map +1 -0
  13. package/dist/Analyst/{Entity/AnalystEntity.d.ts → Chat/AnalystChatEntity.d.ts} +2 -2
  14. package/dist/Analyst/{Entity/AnalystEntity.js → Chat/AnalystChatEntity.js} +14 -14
  15. package/dist/Analyst/Chat/AnalystChatEntity.js.map +1 -0
  16. package/dist/Analyst/Findings/AnalystFindingsService.d.ts +10 -0
  17. package/dist/Analyst/Findings/AnalystFindingsService.js +80 -0
  18. package/dist/Analyst/Findings/AnalystFindingsService.js.map +1 -0
  19. package/dist/Analyst/Services/AnalystFindingsService.d.ts +10 -0
  20. package/dist/Analyst/Services/AnalystFindingsService.js +80 -0
  21. package/dist/Analyst/Services/AnalystFindingsService.js.map +1 -0
  22. package/dist/Analyst/constants.d.ts +1 -0
  23. package/dist/Analyst/constants.js +5 -0
  24. package/dist/Analyst/constants.js.map +1 -0
  25. package/dist/BringgDashboardSDK.d.ts +2 -2
  26. package/dist/BringgDashboardSDK.js +2 -2
  27. package/dist/BringgDashboardSDK.js.map +1 -1
  28. package/dist/CapacityPlanningInsights/CapacityInsightsApi.js +3 -1
  29. package/dist/CapacityPlanningInsights/CapacityInsightsApi.js.map +1 -1
  30. package/dist/MerchantConfiguration/MerchantConfiguration.consts.js +0 -1
  31. package/dist/MerchantConfiguration/MerchantConfiguration.consts.js.map +1 -1
  32. package/dist/bringg-dashboard-sdk-cjs2.js +9023 -8712
  33. package/dist/bringg-dashboard-sdk-cjs2.js.map +1 -1
  34. package/dist/bringg-dashboard-sdk.js +135 -47
  35. package/dist/bringg-dashboard-sdk.min.js +1 -1
  36. package/dist/bringg-dashboard-sdk.min.js.LICENSE.txt +1 -1
  37. package/dist/bringg-dashboard-sdk.min.js.map +1 -1
  38. package/package.json +3 -2
  39. package/dist/Analyst/Entity/AnalystEntity.js.map +0 -1
@@ -8,44 +8,8 @@
8
8
  * - path: /analyst-service
9
9
  * stripPath: true
10
10
  *
11
- * `stripPath: true` means the gateway strips the prefix before forwarding, so the service receives
12
- * `/api/agent-chat/threads` rather than `/analyst-service/api/agent-chat/threads`.
11
+ * Chat routes hang off this prefix (`/analyst-service/api/agent-chat/...`). Findings currently use
12
+ * a different shape (`/api/analyst-service/findings/...`) and keep their own root until those
13
+ * gateway registrations are confirmed to be the same.
13
14
  */
14
15
  export declare const GATEWAY_PATH = "/analyst-service";
15
- /**
16
- * Where the chat platform is mounted inside the service.
17
- *
18
- * A chat URL has three parts, and only the last is the platform's to choose:
19
- *
20
- * /analyst-service /api/agent-chat /chat
21
- * service name mount path endpoint
22
- *
23
- * The mount path is picked by the service developer and is an arbitrary fixed string - it is not
24
- * derived from anything, and the graph's name appears nowhere in the URL. So the service name and
25
- * the mount together are one base that has to be asked for rather than inferred, which is why it is
26
- * one constant here rather than pieces spread across the routes.
27
- *
28
- * The `/api` segment arrives with analyst-service#39, which moves both of its controllers under one
29
- * namespace. That PR aliases nothing, so the old unprefixed paths stop answering the moment it
30
- * deploys - this constant and that deploy have to move together.
31
- */
32
- export declare const MOUNT_PATH = "/api/agent-chat";
33
- /** Service name plus mount. Every route below is relative to this. */
34
- export declare const BASE_PATH: string;
35
- /**
36
- * Routes from the agent-chat platform protocol
37
- * (`service-shared-agent-platform`, `docs/agent_chat/protocol.md`).
38
- *
39
- * `CHAT` is declared here for completeness but is **not** called from this package: it is the ag-ui
40
- * protocol endpoint, opened by the consumer's `HttpAgent` as a streaming POST. It is exposed through
41
- * {@link AnalystClientConfig.chatUrl} instead, so the URL is still built in one place.
42
- *
43
- * Note that cancel hangs off the *thread*, not off chat, and takes the thread id in the path rather
44
- * than in a body. Its earlier shape - `POST /chat/cancel` with `{ threadId }` - does not exist.
45
- */
46
- export declare const Routes: {
47
- CHAT: string;
48
- THREADS: string;
49
- THREAD: string;
50
- CANCEL_RUN: string;
51
- };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Routes = exports.BASE_PATH = exports.MOUNT_PATH = exports.GATEWAY_PATH = void 0;
3
+ exports.GATEWAY_PATH = void 0;
4
4
  /**
5
5
  * api-gateway path prefix the analyst service is registered under.
6
6
  *
@@ -11,45 +11,9 @@ exports.Routes = exports.BASE_PATH = exports.MOUNT_PATH = exports.GATEWAY_PATH =
11
11
  * - path: /analyst-service
12
12
  * stripPath: true
13
13
  *
14
- * `stripPath: true` means the gateway strips the prefix before forwarding, so the service receives
15
- * `/api/agent-chat/threads` rather than `/analyst-service/api/agent-chat/threads`.
14
+ * Chat routes hang off this prefix (`/analyst-service/api/agent-chat/...`). Findings currently use
15
+ * a different shape (`/api/analyst-service/findings/...`) and keep their own root until those
16
+ * gateway registrations are confirmed to be the same.
16
17
  */
17
18
  exports.GATEWAY_PATH = '/analyst-service';
18
- /**
19
- * Where the chat platform is mounted inside the service.
20
- *
21
- * A chat URL has three parts, and only the last is the platform's to choose:
22
- *
23
- * /analyst-service /api/agent-chat /chat
24
- * service name mount path endpoint
25
- *
26
- * The mount path is picked by the service developer and is an arbitrary fixed string - it is not
27
- * derived from anything, and the graph's name appears nowhere in the URL. So the service name and
28
- * the mount together are one base that has to be asked for rather than inferred, which is why it is
29
- * one constant here rather than pieces spread across the routes.
30
- *
31
- * The `/api` segment arrives with analyst-service#39, which moves both of its controllers under one
32
- * namespace. That PR aliases nothing, so the old unprefixed paths stop answering the moment it
33
- * deploys - this constant and that deploy have to move together.
34
- */
35
- exports.MOUNT_PATH = '/api/agent-chat';
36
- /** Service name plus mount. Every route below is relative to this. */
37
- exports.BASE_PATH = "".concat(exports.GATEWAY_PATH).concat(exports.MOUNT_PATH);
38
- /**
39
- * Routes from the agent-chat platform protocol
40
- * (`service-shared-agent-platform`, `docs/agent_chat/protocol.md`).
41
- *
42
- * `CHAT` is declared here for completeness but is **not** called from this package: it is the ag-ui
43
- * protocol endpoint, opened by the consumer's `HttpAgent` as a streaming POST. It is exposed through
44
- * {@link AnalystClientConfig.chatUrl} instead, so the URL is still built in one place.
45
- *
46
- * Note that cancel hangs off the *thread*, not off chat, and takes the thread id in the path rather
47
- * than in a body. Its earlier shape - `POST /chat/cancel` with `{ threadId }` - does not exist.
48
- */
49
- exports.Routes = {
50
- CHAT: "".concat(exports.BASE_PATH, "/chat"),
51
- THREADS: "".concat(exports.BASE_PATH, "/threads"),
52
- THREAD: "".concat(exports.BASE_PATH, "/threads/{:threadId}"),
53
- CANCEL_RUN: "".concat(exports.BASE_PATH, "/threads/{:threadId}/cancel")
54
- };
55
19
  //# sourceMappingURL=Analyst.consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Analyst.consts.js","sourceRoot":"","sources":["../../src/Analyst/Analyst.consts.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACU,QAAA,YAAY,GAAG,kBAAkB,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,UAAU,GAAG,iBAAiB,CAAC;AAE5C,sEAAsE;AACzD,QAAA,SAAS,GAAG,UAAG,oBAAY,SAAG,kBAAU,CAAE,CAAC;AAExD;;;;;;;;;;GAUG;AACU,QAAA,MAAM,GAAG;IACrB,IAAI,EAAE,UAAG,iBAAS,UAAO;IACzB,OAAO,EAAE,UAAG,iBAAS,aAAU;IAC/B,MAAM,EAAE,UAAG,iBAAS,yBAAsB;IAC1C,UAAU,EAAE,UAAG,iBAAS,gCAA6B;CACrD,CAAC"}
1
+ {"version":3,"file":"Analyst.consts.js","sourceRoot":"","sources":["../../src/Analyst/Analyst.consts.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACU,QAAA,YAAY,GAAG,kBAAkB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AnalystChat } from '@bringg/types';
1
+ import type { AnalystChat, AnalystLatestFindings } from '@bringg/types';
2
2
  import Session from '../Services/Identity/Session';
3
3
  /**
4
4
  * Connection details for the Analyst agent's protocol client.
@@ -15,7 +15,7 @@ export interface AnalystClientConfig {
15
15
  defaultHeaders: Record<string, string>;
16
16
  }
17
17
  /**
18
- * Where the dashboard reaches the Analyst agent, and how it authenticates.
18
+ * Public SDK surface for analyst-service: findings and agent chat.
19
19
  *
20
20
  * The browser never talks to analyst-service directly - it is reached through api-gateway under a
21
21
  * path prefix, exactly like `data-query-service`. The service declares `bringg-jwt`, but no JWT
@@ -34,15 +34,21 @@ export interface AnalystClientConfig {
34
34
  * const agent = new HttpAgent({ url: chatUrl, headers: defaultHeaders });
35
35
  * ```
36
36
  *
37
- * Everything the dashboard requests *itself* - the thread list, one thread, cancelling a run - is an
38
- * ordinary SDK call on this class, typed from the `AnalystChat` contract in `@bringg/types` so the
39
- * shape is enforced by the compiler in both this repo and analyst-service.
37
+ * Everything the dashboard requests *itself* - latest findings, the thread list, one thread,
38
+ * cancelling a run - is an ordinary SDK call on this class.
40
39
  */
41
40
  export declare class Analyst {
42
41
  private readonly session;
43
42
  private cached?;
44
- private readonly entity;
43
+ private readonly chat;
44
+ private readonly findings;
45
45
  constructor(session: Session);
46
+ /**
47
+ * The most recent findings run for the signed-in merchant.
48
+ *
49
+ * @returns The latest findings payload from analyst-service
50
+ */
51
+ getLatest(): Promise<AnalystLatestFindings>;
46
52
  /**
47
53
  * The signed-in user's conversations, most recently active first.
48
54
  *
@@ -41,7 +41,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.Analyst = void 0;
43
43
  var Analyst_consts_1 = require("./Analyst.consts");
44
- var AnalystEntity_1 = __importDefault(require("./Entity/AnalystEntity"));
44
+ var AnalystChat_consts_1 = require("./Chat/AnalystChat.consts");
45
+ var AnalystChatEntity_1 = __importDefault(require("./Chat/AnalystChatEntity"));
46
+ var AnalystFindingsService_1 = __importDefault(require("./Findings/AnalystFindingsService"));
45
47
  var isSameConfig = function (a, b) {
46
48
  if (a.apiUrl !== b.apiUrl || a.chatUrl !== b.chatUrl) {
47
49
  return false;
@@ -51,7 +53,7 @@ var isSameConfig = function (a, b) {
51
53
  keys.every(function (key) { return a.defaultHeaders[key] === b.defaultHeaders[key]; }));
52
54
  };
53
55
  /**
54
- * Where the dashboard reaches the Analyst agent, and how it authenticates.
56
+ * Public SDK surface for analyst-service: findings and agent chat.
55
57
  *
56
58
  * The browser never talks to analyst-service directly - it is reached through api-gateway under a
57
59
  * path prefix, exactly like `data-query-service`. The service declares `bringg-jwt`, but no JWT
@@ -70,15 +72,23 @@ var isSameConfig = function (a, b) {
70
72
  * const agent = new HttpAgent({ url: chatUrl, headers: defaultHeaders });
71
73
  * ```
72
74
  *
73
- * Everything the dashboard requests *itself* - the thread list, one thread, cancelling a run - is an
74
- * ordinary SDK call on this class, typed from the `AnalystChat` contract in `@bringg/types` so the
75
- * shape is enforced by the compiler in both this repo and analyst-service.
75
+ * Everything the dashboard requests *itself* - latest findings, the thread list, one thread,
76
+ * cancelling a run - is an ordinary SDK call on this class.
76
77
  */
77
78
  var Analyst = /** @class */ (function () {
78
79
  function Analyst(session) {
79
80
  this.session = session;
80
- this.entity = new AnalystEntity_1.default(session);
81
+ this.chat = new AnalystChatEntity_1.default(session);
82
+ this.findings = new AnalystFindingsService_1.default(session);
81
83
  }
84
+ /**
85
+ * The most recent findings run for the signed-in merchant.
86
+ *
87
+ * @returns The latest findings payload from analyst-service
88
+ */
89
+ Analyst.prototype.getLatest = function () {
90
+ return this.findings.latest();
91
+ };
82
92
  /**
83
93
  * The signed-in user's conversations, most recently active first.
84
94
  *
@@ -88,7 +98,7 @@ var Analyst = /** @class */ (function () {
88
98
  Analyst.prototype.listThreads = function () {
89
99
  return __awaiter(this, void 0, void 0, function () {
90
100
  return __generator(this, function (_a) {
91
- return [2 /*return*/, this.entity.listThreads()];
101
+ return [2 /*return*/, this.chat.listThreads()];
92
102
  });
93
103
  });
94
104
  };
@@ -106,7 +116,7 @@ var Analyst = /** @class */ (function () {
106
116
  Analyst.prototype.getThread = function (threadId) {
107
117
  return __awaiter(this, void 0, void 0, function () {
108
118
  return __generator(this, function (_a) {
109
- return [2 /*return*/, this.entity.getThread(threadId)];
119
+ return [2 /*return*/, this.chat.getThread(threadId)];
110
120
  });
111
121
  });
112
122
  };
@@ -124,7 +134,7 @@ var Analyst = /** @class */ (function () {
124
134
  Analyst.prototype.cancelRun = function (threadId) {
125
135
  return __awaiter(this, void 0, void 0, function () {
126
136
  return __generator(this, function (_a) {
127
- return [2 /*return*/, this.entity.cancelRun(threadId)];
137
+ return [2 /*return*/, this.chat.cancelRun(threadId)];
128
138
  });
129
139
  });
130
140
  };
@@ -144,7 +154,7 @@ var Analyst = /** @class */ (function () {
144
154
  var apiEndpoint = this.session.config.getApiEndpoint().encode();
145
155
  var next = {
146
156
  apiUrl: "".concat(apiEndpoint).concat(Analyst_consts_1.GATEWAY_PATH),
147
- chatUrl: "".concat(apiEndpoint).concat(Analyst_consts_1.Routes.CHAT),
157
+ chatUrl: "".concat(apiEndpoint).concat(AnalystChat_consts_1.Routes.CHAT),
148
158
  defaultHeaders: this.getDefaultHeaders()
149
159
  };
150
160
  if (this.cached && isSameConfig(this.cached, next)) {
@@ -1 +1 @@
1
- {"version":3,"file":"Analyst.js","sourceRoot":"","sources":["../../src/Analyst/Analyst.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,mDAAwD;AACxD,yEAAmD;AAiBnD,IAAM,YAAY,GAAG,UAAC,CAAsB,EAAE,CAAsB;IACnE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE;QACrD,OAAO,KAAK,CAAC;KACb;IAED,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAE3C,OAAO,CACN,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM;QACpD,IAAI,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAA/C,CAA+C,CAAC,CAClE,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IAKC,iBAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACU,6BAAW,GAAxB;;;gBACC,sBAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAC;;;KACjC;IAED;;;;;;;;;;OAUG;IACU,2BAAS,GAAtB,UAAuB,QAAgB;;;gBACtC,sBAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAC;;;KACvC;IAED;;;;;;;;;;OAUG;IACU,2BAAS,GAAtB,UAAuB,QAAgB;;;gBACtC,sBAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAC;;;KACvC;IAED;;;;;;;;;OASG;IACI,iCAAe,GAAtB;QACC,8FAA8F;QAC9F,sFAAsF;QACtF,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC;QAClE,IAAM,IAAI,GAAwB;YACjC,MAAM,EAAE,UAAG,WAAW,SAAG,6BAAY,CAAE;YACvC,OAAO,EAAE,UAAG,WAAW,SAAG,uBAAM,CAAC,IAAI,CAAE;YACvC,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;SACxC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,MAAM,CAAC;SACnB;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,2EAA2E;IACnE,mCAAiB,GAAzB;;QACC,IAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAM,KAAK,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,IAAI,0CAAE,oBAAoB,CAAC;QAEtD,IAAI,KAAK,EAAE;YACV,OAAO,CAAC,aAAa,GAAG,sBAAe,KAAK,CAAE,CAAC;SAC/C;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC1B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC/C;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IACF,cAAC;AAAD,CAAC,AA7FD,IA6FC;AA7FY,0BAAO;AA+FpB,kBAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Analyst.js","sourceRoot":"","sources":["../../src/Analyst/Analyst.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { AnalystLatestFindings } from '@bringg/types';
2
+ import type Session from '../Services/Identity/Session';
3
+ export default class AnalystApi {
4
+ private analystFindingsService;
5
+ constructor(session: Session);
6
+ getLatest(): Promise<AnalystLatestFindings>;
7
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var AnalystFindingsService_1 = __importDefault(require("./Services/AnalystFindingsService"));
7
+ var AnalystApi = /** @class */ (function () {
8
+ function AnalystApi(session) {
9
+ this.analystFindingsService = new AnalystFindingsService_1.default(session);
10
+ }
11
+ AnalystApi.prototype.getLatest = function () {
12
+ return this.analystFindingsService.latest();
13
+ };
14
+ return AnalystApi;
15
+ }());
16
+ exports.default = AnalystApi;
17
+ //# sourceMappingURL=AnalystApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalystApi.js","sourceRoot":"","sources":["../../src/Analyst/AnalystApi.ts"],"names":[],"mappings":";;;;;AAGA,6FAAuE;AAEvE;IAGC,oBAAY,OAAgB;QAC3B,IAAI,CAAC,sBAAsB,GAAG,IAAI,gCAAsB,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,8BAAS,GAAT;QACC,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC;IAC7C,CAAC;IACF,iBAAC;AAAD,CAAC,AAVD,IAUC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Where the chat platform is mounted inside the service.
3
+ *
4
+ * A chat URL has three parts, and only the last is the platform's to choose:
5
+ *
6
+ * /analyst-service /api/agent-chat /chat
7
+ * service name mount path endpoint
8
+ *
9
+ * The mount path is picked by the service developer and is an arbitrary fixed string - it is not
10
+ * derived from anything, and the graph's name appears nowhere in the URL. So the service name and
11
+ * the mount together are one base that has to be asked for rather than inferred, which is why it is
12
+ * one constant here rather than pieces spread across the routes.
13
+ *
14
+ * The `/api` segment arrives with analyst-service#39, which moves both of its controllers under one
15
+ * namespace. That PR aliases nothing, so the old unprefixed paths stop answering the moment it
16
+ * deploys - this constant and that deploy have to move together.
17
+ *
18
+ * `stripPath: true` on the gateway means the service receives `/api/agent-chat/threads` rather than
19
+ * `/analyst-service/api/agent-chat/threads`.
20
+ */
21
+ export declare const MOUNT_PATH = "/api/agent-chat";
22
+ /** Service name plus mount. Every route below is relative to this. */
23
+ export declare const BASE_PATH: string;
24
+ /**
25
+ * Routes from the agent-chat platform protocol
26
+ * (`service-shared-agent-platform`, `docs/agent_chat/protocol.md`).
27
+ *
28
+ * `CHAT` is declared here for completeness but is **not** called from this package: it is the ag-ui
29
+ * protocol endpoint, opened by the consumer's `HttpAgent` as a streaming POST. It is exposed through
30
+ * {@link AnalystClientConfig.chatUrl} instead, so the URL is still built in one place.
31
+ *
32
+ * Note that cancel hangs off the *thread*, not off chat, and takes the thread id in the path rather
33
+ * than in a body. Its earlier shape - `POST /chat/cancel` with `{ threadId }` - does not exist.
34
+ */
35
+ export declare const Routes: {
36
+ CHAT: string;
37
+ THREADS: string;
38
+ THREAD: string;
39
+ CANCEL_RUN: string;
40
+ };
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Routes = exports.BASE_PATH = exports.MOUNT_PATH = void 0;
4
+ var Analyst_consts_1 = require("../Analyst.consts");
5
+ /**
6
+ * Where the chat platform is mounted inside the service.
7
+ *
8
+ * A chat URL has three parts, and only the last is the platform's to choose:
9
+ *
10
+ * /analyst-service /api/agent-chat /chat
11
+ * service name mount path endpoint
12
+ *
13
+ * The mount path is picked by the service developer and is an arbitrary fixed string - it is not
14
+ * derived from anything, and the graph's name appears nowhere in the URL. So the service name and
15
+ * the mount together are one base that has to be asked for rather than inferred, which is why it is
16
+ * one constant here rather than pieces spread across the routes.
17
+ *
18
+ * The `/api` segment arrives with analyst-service#39, which moves both of its controllers under one
19
+ * namespace. That PR aliases nothing, so the old unprefixed paths stop answering the moment it
20
+ * deploys - this constant and that deploy have to move together.
21
+ *
22
+ * `stripPath: true` on the gateway means the service receives `/api/agent-chat/threads` rather than
23
+ * `/analyst-service/api/agent-chat/threads`.
24
+ */
25
+ exports.MOUNT_PATH = '/api/agent-chat';
26
+ /** Service name plus mount. Every route below is relative to this. */
27
+ exports.BASE_PATH = "".concat(Analyst_consts_1.GATEWAY_PATH).concat(exports.MOUNT_PATH);
28
+ /**
29
+ * Routes from the agent-chat platform protocol
30
+ * (`service-shared-agent-platform`, `docs/agent_chat/protocol.md`).
31
+ *
32
+ * `CHAT` is declared here for completeness but is **not** called from this package: it is the ag-ui
33
+ * protocol endpoint, opened by the consumer's `HttpAgent` as a streaming POST. It is exposed through
34
+ * {@link AnalystClientConfig.chatUrl} instead, so the URL is still built in one place.
35
+ *
36
+ * Note that cancel hangs off the *thread*, not off chat, and takes the thread id in the path rather
37
+ * than in a body. Its earlier shape - `POST /chat/cancel` with `{ threadId }` - does not exist.
38
+ */
39
+ exports.Routes = {
40
+ CHAT: "".concat(exports.BASE_PATH, "/chat"),
41
+ THREADS: "".concat(exports.BASE_PATH, "/threads"),
42
+ THREAD: "".concat(exports.BASE_PATH, "/threads/{:threadId}"),
43
+ CANCEL_RUN: "".concat(exports.BASE_PATH, "/threads/{:threadId}/cancel")
44
+ };
45
+ //# sourceMappingURL=AnalystChat.consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalystChat.consts.js","sourceRoot":"","sources":["../../../src/Analyst/Chat/AnalystChat.consts.ts"],"names":[],"mappings":";;;AAAA,oDAAiD;AAEjD;;;;;;;;;;;;;;;;;;;GAmBG;AACU,QAAA,UAAU,GAAG,iBAAiB,CAAC;AAE5C,sEAAsE;AACzD,QAAA,SAAS,GAAG,UAAG,6BAAY,SAAG,kBAAU,CAAE,CAAC;AAExD;;;;;;;;;;GAUG;AACU,QAAA,MAAM,GAAG;IACrB,IAAI,EAAE,UAAG,iBAAS,UAAO;IACzB,OAAO,EAAE,UAAG,iBAAS,aAAU;IAC/B,MAAM,EAAE,UAAG,iBAAS,yBAAsB;IAC1C,UAAU,EAAE,UAAG,iBAAS,gCAA6B;CACrD,CAAC"}
@@ -2,7 +2,7 @@ import type { AnalystChat } from '@bringg/types';
2
2
  import Entity from '../../Core/Entity';
3
3
  import type Session from '../../Services/Identity/Session';
4
4
  /**
5
- * The Analyst REST surface.
5
+ * The Analyst agent-chat REST surface.
6
6
  *
7
7
  * **Why the chat endpoint is not here.** The ag-ui contract has four endpoints, and exactly one of
8
8
  * them is the protocol: `POST /analyst/chat` is a streaming POST that answers with `text/event-stream`
@@ -16,7 +16,7 @@ import type Session from '../../Services/Identity/Session';
16
16
  * list, opening a conversation asks for one thread, and pressing Stop cancels the run. That makes
17
17
  * them ours.
18
18
  */
19
- export default class AnalystEntity extends Entity<AnalystChat.ThreadSummary> {
19
+ export default class AnalystChatEntity extends Entity<AnalystChat.ThreadSummary> {
20
20
  constructor(session: Session);
21
21
  /** The signed-in user's threads, most recently active first. A bare array, no envelope. */
22
22
  listThreads(): Promise<AnalystChat.ThreadSummary[]>;
@@ -55,9 +55,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
55
55
  };
56
56
  Object.defineProperty(exports, "__esModule", { value: true });
57
57
  var Entity_1 = __importDefault(require("../../Core/Entity"));
58
- var Analyst_consts_1 = require("../Analyst.consts");
58
+ var AnalystChat_consts_1 = require("./AnalystChat.consts");
59
59
  /**
60
- * The Analyst REST surface.
60
+ * The Analyst agent-chat REST surface.
61
61
  *
62
62
  * **Why the chat endpoint is not here.** The ag-ui contract has four endpoints, and exactly one of
63
63
  * them is the protocol: `POST /analyst/chat` is a streaming POST that answers with `text/event-stream`
@@ -71,9 +71,9 @@ var Analyst_consts_1 = require("../Analyst.consts");
71
71
  * list, opening a conversation asks for one thread, and pressing Stop cancels the run. That makes
72
72
  * them ours.
73
73
  */
74
- var AnalystEntity = /** @class */ (function (_super) {
75
- __extends(AnalystEntity, _super);
76
- function AnalystEntity(session) {
74
+ var AnalystChatEntity = /** @class */ (function (_super) {
75
+ __extends(AnalystChatEntity, _super);
76
+ function AnalystChatEntity(session) {
77
77
  return _super.call(this, {
78
78
  session: session,
79
79
  entityName: 'threads',
@@ -81,13 +81,13 @@ var AnalystEntity = /** @class */ (function (_super) {
81
81
  }) || this;
82
82
  }
83
83
  /** The signed-in user's threads, most recently active first. A bare array, no envelope. */
84
- AnalystEntity.prototype.listThreads = function () {
84
+ AnalystChatEntity.prototype.listThreads = function () {
85
85
  return __awaiter(this, void 0, void 0, function () {
86
86
  var threads;
87
87
  return __generator(this, function (_a) {
88
88
  switch (_a.label) {
89
89
  case 0: return [4 /*yield*/, this.service.routeGenerator
90
- .get(Analyst_consts_1.Routes.THREADS)
90
+ .get(AnalystChat_consts_1.Routes.THREADS)
91
91
  .setException('Failed to fetch analyst chat threads')
92
92
  .invoke()];
93
93
  case 1:
@@ -103,11 +103,11 @@ var AnalystEntity = /** @class */ (function (_super) {
103
103
  * A thread belonging to another user answers **404**, never 403 - so a rejected id is
104
104
  * indistinguishable from a missing one, by design.
105
105
  */
106
- AnalystEntity.prototype.getThread = function (threadId) {
106
+ AnalystChatEntity.prototype.getThread = function (threadId) {
107
107
  return __awaiter(this, void 0, void 0, function () {
108
108
  return __generator(this, function (_a) {
109
109
  return [2 /*return*/, this.service.routeGenerator
110
- .get(Analyst_consts_1.Routes.THREAD)
110
+ .get(AnalystChat_consts_1.Routes.THREAD)
111
111
  .withRouteParams({ threadId: threadId })
112
112
  .setException('Failed to fetch analyst chat thread')
113
113
  .invoke()];
@@ -125,18 +125,18 @@ var AnalystEntity = /** @class */ (function (_super) {
125
125
  * was idle **or** that this caller may not touch it - the platform answers both the same way, so
126
126
  * that the existence of a thread does not leak.
127
127
  */
128
- AnalystEntity.prototype.cancelRun = function (threadId) {
128
+ AnalystChatEntity.prototype.cancelRun = function (threadId) {
129
129
  return __awaiter(this, void 0, void 0, function () {
130
130
  return __generator(this, function (_a) {
131
131
  return [2 /*return*/, this.service.routeGenerator
132
- .post(Analyst_consts_1.Routes.CANCEL_RUN)
132
+ .post(AnalystChat_consts_1.Routes.CANCEL_RUN)
133
133
  .withRouteParams({ threadId: threadId })
134
134
  .setException('Failed to cancel the analyst chat run')
135
135
  .invoke()];
136
136
  });
137
137
  });
138
138
  };
139
- return AnalystEntity;
139
+ return AnalystChatEntity;
140
140
  }(Entity_1.default));
141
- exports.default = AnalystEntity;
142
- //# sourceMappingURL=AnalystEntity.js.map
141
+ exports.default = AnalystChatEntity;
142
+ //# sourceMappingURL=AnalystChatEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalystChatEntity.js","sourceRoot":"","sources":["../../../src/Analyst/Chat/AnalystChatEntity.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6DAAuC;AAEvC,2DAA8C;AAE9C;;;;;;;;;;;;;;GAcG;AACH;IAA+C,qCAAiC;IAC/E,2BAAY,OAAgB;eAC3B,kBAAM;YACL,OAAO,SAAA;YACP,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,iBAAiB;SAC9B,CAAC;IACH,CAAC;IAED,2FAA2F;IACrF,uCAAW,GAAjB;;;;;4BACiB,qBAAM,IAAI,CAAC,OAAO,CAAC,cAAc;6BAC/C,GAAG,CAAC,2BAAM,CAAC,OAAO,CAAC;6BACnB,YAAY,CAAC,sCAAsC,CAAC;6BACpD,MAAM,EAA4D,EAAA;;wBAH9D,OAAO,GAAG,SAGoD;wBAEpE,sBAAO,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,EAAC;;;;KACrB;IAED;;;;;OAKG;IACG,qCAAS,GAAf,UAAgB,QAAgB;;;gBAC/B,sBAAO,IAAI,CAAC,OAAO,CAAC,cAAc;yBAChC,GAAG,CAAC,2BAAM,CAAC,MAAM,CAAC;yBAClB,eAAe,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC;yBAC7B,YAAY,CAAC,qCAAqC,CAAC;yBACnD,MAAM,EAAsD,EAAC;;;KAC/D;IAED;;;;;;;;;;OAUG;IACG,qCAAS,GAAf,UAAgB,QAAgB;;;gBAC/B,sBAAO,IAAI,CAAC,OAAO,CAAC,cAAc;yBAChC,IAAI,CAAC,2BAAM,CAAC,UAAU,CAAC;yBACvB,eAAe,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC;yBAC7B,YAAY,CAAC,uCAAuC,CAAC;yBACrD,MAAM,EAAgE,EAAC;;;KACzE;IACF,wBAAC;AAAD,CAAC,AAnDD,CAA+C,gBAAM,GAmDpD"}
@@ -0,0 +1,10 @@
1
+ import type { AnalystFinding, AnalystLatestFindings } from '@bringg/types';
2
+ import BaseService from '../../Core/BaseService';
3
+ import type Session from '../../Services/Identity/Session';
4
+ export declare const Routes: {
5
+ LATEST: string;
6
+ };
7
+ export default class AnalystFindingsService extends BaseService<AnalystFinding> {
8
+ constructor(session: Session);
9
+ latest(): Promise<AnalystLatestFindings>;
10
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.Routes = void 0;
58
+ var BaseService_1 = __importDefault(require("../../Core/BaseService"));
59
+ var API_PREFIX = '/api';
60
+ var SERVICE_NAME = 'analyst-service';
61
+ var ROOT = "".concat(API_PREFIX, "/").concat(SERVICE_NAME);
62
+ exports.Routes = {
63
+ LATEST: "".concat(ROOT, "/findings/latest")
64
+ };
65
+ var AnalystFindingsService = /** @class */ (function (_super) {
66
+ __extends(AnalystFindingsService, _super);
67
+ function AnalystFindingsService(session) {
68
+ return _super.call(this, session, 'analyst_findings') || this;
69
+ }
70
+ AnalystFindingsService.prototype.latest = function () {
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ return __generator(this, function (_a) {
73
+ return [2 /*return*/, this.routeGenerator.get(exports.Routes.LATEST).invoke()];
74
+ });
75
+ });
76
+ };
77
+ return AnalystFindingsService;
78
+ }(BaseService_1.default));
79
+ exports.default = AnalystFindingsService;
80
+ //# sourceMappingURL=AnalystFindingsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalystFindingsService.js","sourceRoot":"","sources":["../../../src/Analyst/Findings/AnalystFindingsService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uEAAiD;AAGjD,IAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,IAAM,YAAY,GAAG,iBAAiB,CAAC;AACvC,IAAM,IAAI,GAAG,UAAG,UAAU,cAAI,YAAY,CAAE,CAAC;AAEhC,QAAA,MAAM,GAAG;IACrB,MAAM,EAAE,UAAG,IAAI,qBAAkB;CACjC,CAAC;AAEF;IAAoD,0CAA2B;IAC9E,gCAAY,OAAgB;eAC3B,kBAAM,OAAO,EAAE,kBAAkB,CAAC;IACnC,CAAC;IAEK,uCAAM,GAAZ;;;gBACC,sBAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAC;;;KACvD;IACF,6BAAC;AAAD,CAAC,AARD,CAAoD,qBAAW,GAQ9D"}
@@ -0,0 +1,10 @@
1
+ import { AnalystFinding, AnalystLatestFindings } from '@bringg/types';
2
+ import BaseService from '../../Core/BaseService';
3
+ import type Session from '../../Services/Identity/Session';
4
+ export declare const Routes: {
5
+ LATEST: string;
6
+ };
7
+ export default class AnalystFindingsService extends BaseService<AnalystFinding> {
8
+ constructor(session: Session);
9
+ latest(): Promise<AnalystLatestFindings>;
10
+ }