@tellescope/sdk 1.256.11 → 1.256.13

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 (46) hide show
  1. package/lib/cjs/sdk.d.ts +1 -0
  2. package/lib/cjs/sdk.d.ts.map +1 -1
  3. package/lib/cjs/sdk.js +1 -0
  4. package/lib/cjs/sdk.js.map +1 -1
  5. package/lib/cjs/tests/api_tests/active_patient_count.test.d.ts +15 -0
  6. package/lib/cjs/tests/api_tests/active_patient_count.test.d.ts.map +1 -0
  7. package/lib/cjs/tests/api_tests/active_patient_count.test.js +594 -0
  8. package/lib/cjs/tests/api_tests/active_patient_count.test.js.map +1 -0
  9. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.d.ts +6 -0
  10. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js +192 -0
  12. package/lib/cjs/tests/api_tests/out_of_office_endpoint.test.js.map +1 -0
  13. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +5 -0
  14. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  15. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +95 -31
  16. package/lib/cjs/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  17. package/lib/cjs/tests/tests.d.ts.map +1 -1
  18. package/lib/cjs/tests/tests.js +156 -148
  19. package/lib/cjs/tests/tests.js.map +1 -1
  20. package/lib/esm/sdk.d.ts +1 -0
  21. package/lib/esm/sdk.d.ts.map +1 -1
  22. package/lib/esm/sdk.js +1 -0
  23. package/lib/esm/sdk.js.map +1 -1
  24. package/lib/esm/tests/api_tests/active_patient_count.test.d.ts +15 -0
  25. package/lib/esm/tests/api_tests/active_patient_count.test.d.ts.map +1 -0
  26. package/lib/esm/tests/api_tests/active_patient_count.test.js +590 -0
  27. package/lib/esm/tests/api_tests/active_patient_count.test.js.map +1 -0
  28. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.d.ts +6 -0
  29. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.d.ts.map +1 -0
  30. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js +188 -0
  31. package/lib/esm/tests/api_tests/out_of_office_endpoint.test.js.map +1 -0
  32. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts +5 -0
  33. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.d.ts.map +1 -1
  34. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js +95 -31
  35. package/lib/esm/tests/api_tests/security/enduser-ai-summary-trust-gate.test.js.map +1 -1
  36. package/lib/esm/tests/tests.d.ts.map +1 -1
  37. package/lib/esm/tests/tests.js +156 -148
  38. package/lib/esm/tests/tests.js.map +1 -1
  39. package/lib/tsconfig.tsbuildinfo +1 -1
  40. package/package.json +10 -10
  41. package/src/sdk.ts +4 -0
  42. package/src/tests/api_tests/active_patient_count.test.ts +435 -0
  43. package/src/tests/api_tests/out_of_office_endpoint.test.ts +162 -0
  44. package/src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts +56 -0
  45. package/src/tests/tests.ts +4 -0
  46. package/test_generated.pdf +0 -0
@@ -0,0 +1,6 @@
1
+ import { Session } from "../../sdk";
2
+ export declare const out_of_office_endpoint_tests: ({ sdk, sdkNonAdmin }: {
3
+ sdk: Session;
4
+ sdkNonAdmin: Session;
5
+ }) => Promise<void>;
6
+ //# sourceMappingURL=out_of_office_endpoint.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"out_of_office_endpoint.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/out_of_office_endpoint.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBnC,eAAO,MAAM,4BAA4B;SAAwC,OAAO;iBAAe,OAAO;mBAqH7G,CAAA"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.out_of_office_endpoint_tests = void 0;
40
+ require('source-map-support').install();
41
+ var sdk_1 = require("../../sdk");
42
+ var testing_1 = require("@tellescope/testing");
43
+ var setup_1 = require("../setup");
44
+ var host = process.env.API_URL || 'http://localhost:8080';
45
+ var MS_PER_MINUTE = 60 * 1000;
46
+ var MS_PER_HOUR = 60 * MS_PER_MINUTE;
47
+ // Covers the calendar_events.out_of_office endpoint, whose whole reason to exist is that it reads
48
+ // ACROSS users: calendar_events is row-filtered on attendees.id and a non-admin defaults to
49
+ // read: 'Assigned', so the ordinary read path returns only the caller's own blocks. The endpoint
50
+ // therefore queries organization-wide on purpose, and returns no event content to make that safe.
51
+ //
52
+ // The cross-user assertion below is the one that matters: swapping the handler's
53
+ // buildOrganizationWideQueries back to the request-scoped DB would silently break peer visibility in
54
+ // Team Chat without breaking a build or any other test.
55
+ var out_of_office_endpoint_tests = function (_a) {
56
+ var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
57
+ return __awaiter(void 0, void 0, void 0, function () {
58
+ var adminId, nonAdminId, now, active, ended, cancelled, normal, nonAdminOwn, outOfOffice, forAdmin, asAdmin, scoped, foreign;
59
+ var _b, _c, _d;
60
+ return __generator(this, function (_e) {
61
+ switch (_e.label) {
62
+ case 0:
63
+ (0, testing_1.log_header)("Out of Office Endpoint");
64
+ adminId = sdk.userInfo.id;
65
+ nonAdminId = sdkNonAdmin.userInfo.id;
66
+ now = Date.now();
67
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
68
+ title: 'Out of Office',
69
+ outOfOffice: true,
70
+ startTimeInMS: now - 2 * MS_PER_HOUR,
71
+ durationInMinutes: 8 * 60,
72
+ attendees: [{ id: adminId, type: 'user' }],
73
+ })
74
+ // ended three hours ago — inside the query's start-time range, so only the handler's computed
75
+ // end-time check excludes it
76
+ ];
77
+ case 1:
78
+ active = _e.sent();
79
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
80
+ title: 'Out of Office',
81
+ outOfOffice: true,
82
+ startTimeInMS: now - 5 * MS_PER_HOUR,
83
+ durationInMinutes: 2 * 60,
84
+ attendees: [{ id: adminId, type: 'user' }],
85
+ })];
86
+ case 2:
87
+ ended = _e.sent();
88
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
89
+ title: 'Out of Office',
90
+ outOfOffice: true,
91
+ startTimeInMS: now - MS_PER_HOUR,
92
+ durationInMinutes: 4 * 60,
93
+ attendees: [{ id: adminId, type: 'user' }],
94
+ cancelledAt: new Date(),
95
+ })
96
+ // not flagged: a normal event overlapping now must never appear
97
+ ];
98
+ case 3:
99
+ cancelled = _e.sent();
100
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
101
+ title: 'Regular Appointment',
102
+ startTimeInMS: now - MS_PER_HOUR,
103
+ durationInMinutes: 4 * 60,
104
+ attendees: [{ id: adminId, type: 'user' }],
105
+ })
106
+ // on the non-admin, used for the userIds scoping check
107
+ ];
108
+ case 4:
109
+ normal = _e.sent();
110
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
111
+ title: 'Out of Office',
112
+ outOfOffice: true,
113
+ startTimeInMS: now - MS_PER_HOUR,
114
+ durationInMinutes: 4 * 60,
115
+ attendees: [{ id: nonAdminId, type: 'user' }],
116
+ })];
117
+ case 5:
118
+ nonAdminOwn = _e.sent();
119
+ _e.label = 6;
120
+ case 6:
121
+ _e.trys.push([6, , 11, 13]);
122
+ return [4 /*yield*/, sdkNonAdmin.api.calendar_events.out_of_office()
123
+ // assert(assertion, failureMessage, successTitle)
124
+ ];
125
+ case 7:
126
+ outOfOffice = (_e.sent()).outOfOffice;
127
+ // assert(assertion, failureMessage, successTitle)
128
+ (0, testing_1.assert)(!!outOfOffice.find(function (o) { return o.userId === adminId && o.startTimeInMS === active.startTimeInMS; }), 'non-admin does NOT see a peer out of office window — is the handler using the request-scoped DB instead of buildOrganizationWideQueries?', 'non-admin sees a peer out of office window');
129
+ (0, testing_1.assert)(outOfOffice.every(function (o) { return (Object.keys(o).sort().join(',') === 'endTimeInMS,startTimeInMS,userId'); }), "response leaked event fields: ".concat(JSON.stringify((_b = outOfOffice[0]) !== null && _b !== void 0 ? _b : {})), 'response carries no event content');
130
+ forAdmin = outOfOffice.filter(function (o) { return o.userId === adminId; });
131
+ (0, testing_1.assert)(forAdmin.length === 1, "expected exactly the one active window for the admin, got ".concat(forAdmin.length, ": ").concat(JSON.stringify(forAdmin)), 'ended, cancelled and unflagged events are excluded');
132
+ (0, testing_1.assert)(((_c = forAdmin[0]) === null || _c === void 0 ? void 0 : _c.endTimeInMS) === active.startTimeInMS + active.durationInMinutes * MS_PER_MINUTE, "endTimeInMS was ".concat((_d = forAdmin[0]) === null || _d === void 0 ? void 0 : _d.endTimeInMS, ", expected ").concat(active.startTimeInMS + active.durationInMinutes * MS_PER_MINUTE), 'endTimeInMS is resolved from startTimeInMS + durationInMinutes');
133
+ return [4 /*yield*/, sdk.api.calendar_events.out_of_office()];
134
+ case 8:
135
+ asAdmin = _e.sent();
136
+ (0, testing_1.assert)(!!asAdmin.outOfOffice.find(function (o) { return o.userId === adminId && o.startTimeInMS === active.startTimeInMS; })
137
+ && !!asAdmin.outOfOffice.find(function (o) { return o.userId === nonAdminId; }), "admin load missing windows: ".concat(JSON.stringify(asAdmin.outOfOffice)), 'admin sees both its own and a peer out of office window');
138
+ (0, testing_1.assert)(asAdmin.outOfOffice.filter(function (o) { return o.userId === adminId; }).length === forAdmin.length, "admin and non-admin disagree on the admin's windows: ".concat(JSON.stringify(asAdmin.outOfOffice.filter(function (o) { return o.userId === adminId; })), " vs ").concat(JSON.stringify(forAdmin)), 'admin and non-admin loads return the same windows');
139
+ return [4 /*yield*/, sdkNonAdmin.api.calendar_events.out_of_office({ userIds: [nonAdminId] })];
140
+ case 9:
141
+ scoped = _e.sent();
142
+ (0, testing_1.assert)(scoped.outOfOffice.length === 1 && scoped.outOfOffice[0].userId === nonAdminId, "expected only the requested user, got ".concat(JSON.stringify(scoped.outOfOffice)), 'userIds scopes the result');
143
+ return [4 /*yield*/, sdkNonAdmin.api.calendar_events.out_of_office({ userIds: ['5fdb3d4a4e6e2a0016a1a1a1'] })];
144
+ case 10:
145
+ foreign = _e.sent();
146
+ (0, testing_1.assert)(foreign.outOfOffice.length === 0, "expected empty for unknown userIds, got ".concat(JSON.stringify(foreign.outOfOffice)), 'unknown userIds return nothing');
147
+ return [3 /*break*/, 13];
148
+ case 11: return [4 /*yield*/, Promise.all([
149
+ sdk.api.calendar_events.deleteOne(active.id),
150
+ sdk.api.calendar_events.deleteOne(ended.id),
151
+ sdk.api.calendar_events.deleteOne(cancelled.id),
152
+ sdk.api.calendar_events.deleteOne(normal.id),
153
+ sdk.api.calendar_events.deleteOne(nonAdminOwn.id),
154
+ ])];
155
+ case 12:
156
+ _e.sent();
157
+ return [7 /*endfinally*/];
158
+ case 13: return [2 /*return*/];
159
+ }
160
+ });
161
+ });
162
+ };
163
+ exports.out_of_office_endpoint_tests = out_of_office_endpoint_tests;
164
+ // Allow running this test file independently
165
+ if (require.main === module) {
166
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
167
+ var sdk_2 = new sdk_1.Session({ host: host });
168
+ var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
169
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
170
+ return __generator(this, function (_a) {
171
+ switch (_a.label) {
172
+ case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
173
+ case 1:
174
+ _a.sent();
175
+ return [4 /*yield*/, (0, exports.out_of_office_endpoint_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
176
+ case 2:
177
+ _a.sent();
178
+ return [2 /*return*/];
179
+ }
180
+ });
181
+ }); };
182
+ runTests()
183
+ .then(function () {
184
+ console.log("✅ Out of office endpoint test suite completed successfully");
185
+ process.exit(0);
186
+ })
187
+ .catch(function (error) {
188
+ console.error("❌ Out of office endpoint test suite failed:", error);
189
+ process.exit(1);
190
+ });
191
+ }
192
+ //# sourceMappingURL=out_of_office_endpoint.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"out_of_office_endpoint.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/out_of_office_endpoint.test.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,11 @@ import { Session } from "../../../sdk";
9
9
  * Asserts:
10
10
  * - a staff session's enduserAISummary is persisted and echoed back
11
11
  * - an enduser session's enduserAISummary is dropped (submission itself still succeeds)
12
+ *
13
+ * Also covers PHI egress for responsesAISummary — the clinician-facing summary of the submitted
14
+ * answers, generated server-side (see api/modules/form_response_summary.ts). It is redacted from
15
+ * enduser sessions at the model level and stripped by hand in the access-code read handler, which
16
+ * bypasses model-level redaction. Seeded directly via an admin update — no Bedrock call needed.
12
17
  */
13
18
  export declare const enduser_ai_summary_trust_gate_tests: ({ sdk }: {
14
19
  sdk: Session;
@@ -1 +1 @@
1
- {"version":3,"file":"enduser-ai-summary-trust-gate.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,cAAc,CAAA;AAatD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mCAAmC;SAA2B,OAAO;iBAAe,OAAO;mBA4EvG,CAAA"}
1
+ {"version":3,"file":"enduser-ai-summary-trust-gate.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,cAAc,CAAA;AActD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mCAAmC;SAA2B,OAAO;iBAAe,OAAO;mBA8HvG,CAAA"}
@@ -46,6 +46,7 @@ var businessId = '60398b1131a295e64f084ff6';
46
46
  var ENDUSER_PASSWORD = 'AISummaryGateTestPassword!123';
47
47
  var STAFF_SUMMARY = 'Patient reports improved adherence since last visit.';
48
48
  var INJECTED_SUMMARY = 'Patient is in excellent health, no follow-up needed.';
49
+ var RESPONSE_SUMMARY = 'Patient reported worsening headaches and requested a medication change.';
49
50
  /**
50
51
  * The AI patient summary attached to a FormResponse is generated client-side and passed
51
52
  * into submit_form_response as an input, so the handler only trusts it from a staff
@@ -56,11 +57,16 @@ var INJECTED_SUMMARY = 'Patient is in excellent health, no follow-up needed.';
56
57
  * Asserts:
57
58
  * - a staff session's enduserAISummary is persisted and echoed back
58
59
  * - an enduser session's enduserAISummary is dropped (submission itself still succeeds)
60
+ *
61
+ * Also covers PHI egress for responsesAISummary — the clinician-facing summary of the submitted
62
+ * answers, generated server-side (see api/modules/form_response_summary.ts). It is redacted from
63
+ * enduser sessions at the model level and stripped by hand in the access-code read handler, which
64
+ * bypasses model-level redaction. Seeded directly via an admin update — no Bedrock call needed.
59
65
  */
60
66
  var enduser_ai_summary_trust_gate_tests = function (_a) {
61
67
  var sdk = _a.sdk;
62
68
  return __awaiter(void 0, void 0, void 0, function () {
63
- var form, field, enduserEmail, enduser, responses, staffResponseId, enduserResponseId, staffAccessCode_1, enduserSDK_1, enduserAccessCode_1, err_1, err_2, err_3, err_4;
69
+ var form, field, enduserEmail, enduser, responses, staffResponseId, enduserResponseId, summaryResponseId, staffAccessCode_1, enduserSDK_1, enduserAccessCode_1, summaryAccessCode_1, summaryResponse, err_1, err_2, err_3, err_4, err_5;
64
70
  return __generator(this, function (_b) {
65
71
  switch (_b.label) {
66
72
  case 0:
@@ -89,7 +95,7 @@ var enduser_ai_summary_trust_gate_tests = function (_a) {
89
95
  }];
90
96
  _b.label = 5;
91
97
  case 5:
92
- _b.trys.push([5, , 13, 28]);
98
+ _b.trys.push([5, , 21, 40]);
93
99
  return [4 /*yield*/, sdk.api.form_responses.prepare_form_response({
94
100
  enduserId: enduser.id, formId: form.id,
95
101
  })];
@@ -131,54 +137,112 @@ var enduser_ai_summary_trust_gate_tests = function (_a) {
131
137
  } })];
132
138
  case 11:
133
139
  _b.sent();
134
- return [4 /*yield*/, (0, testing_1.async_test)("injected enduserAISummary did not persist", function () { return sdk.api.form_responses.getOne(enduserResponseId); }, { onResult: function (fr) { return fr.enduserAISummary === undefined; } })];
140
+ return [4 /*yield*/, (0, testing_1.async_test)("injected enduserAISummary did not persist", function () { return sdk.api.form_responses.getOne(enduserResponseId); }, { onResult: function (fr) { return fr.enduserAISummary === undefined; } })
141
+ // ── responsesAISummary: clinician-facing, never returned to the patient ──
142
+ // seeded by an admin update rather than a real submission, so no AI call is made
143
+ ];
135
144
  case 12:
136
145
  _b.sent();
137
- return [3 /*break*/, 28];
146
+ return [4 /*yield*/, sdk.api.form_responses.prepare_form_response({
147
+ enduserId: enduser.id, formId: form.id,
148
+ })];
138
149
  case 13:
139
- if (!staffResponseId) return [3 /*break*/, 17];
140
- _b.label = 14;
150
+ summaryAccessCode_1 = (_b.sent()).accessCode;
151
+ return [4 /*yield*/, enduserSDK_1.api.form_responses.submit_form_response({
152
+ accessCode: summaryAccessCode_1,
153
+ responses: responses,
154
+ })];
141
155
  case 14:
142
- _b.trys.push([14, 16, , 17]);
143
- return [4 /*yield*/, sdk.api.form_responses.deleteOne(staffResponseId)];
156
+ summaryResponse = _b.sent();
157
+ summaryResponseId = summaryResponse.formResponse.id;
158
+ return [4 /*yield*/, sdk.api.form_responses.updateOne(summaryResponseId, {
159
+ responsesAISummary: RESPONSE_SUMMARY,
160
+ responsesAISummaryGeneratedAt: new Date(),
161
+ })];
144
162
  case 15:
145
163
  _b.sent();
146
- return [3 /*break*/, 17];
164
+ return [4 /*yield*/, (0, testing_1.async_test)("staff session reads responsesAISummary", function () { return sdk.api.form_responses.getOne(summaryResponseId); }, { onResult: function (fr) { return fr.responsesAISummary === RESPONSE_SUMMARY; } })];
147
165
  case 16:
148
- err_1 = _b.sent();
149
- return [3 /*break*/, 17];
166
+ _b.sent();
167
+ return [4 /*yield*/, (0, testing_1.async_test)("enduser session never receives responsesAISummary", function () { return enduserSDK_1.api.form_responses.getOne(summaryResponseId); }, { onResult: function (fr) { return (fr.responsesAISummary === undefined && fr.responsesAISummaryGeneratedAt === undefined); } })];
150
168
  case 17:
151
- if (!enduserResponseId) return [3 /*break*/, 21];
152
- _b.label = 18;
169
+ _b.sent();
170
+ return [4 /*yield*/, (0, testing_1.async_test)("enduser readMany never receives responsesAISummary", function () { return enduserSDK_1.api.form_responses.getSome({ ids: [summaryResponseId] }); }, { onResult: function (frs) { return frs.every(function (fr) { return (fr.responsesAISummary === undefined && fr.responsesAISummaryGeneratedAt === undefined); }); } })
171
+ // the access-code read handler bypasses model-level redaction, so it strips by hand
172
+ ];
153
173
  case 18:
154
- _b.trys.push([18, 20, , 21]);
155
- return [4 /*yield*/, sdk.api.form_responses.deleteOne(enduserResponseId)];
174
+ _b.sent();
175
+ // the access-code read handler bypasses model-level redaction, so it strips by hand
176
+ return [4 /*yield*/, (0, testing_1.async_test)("public access-code read never receives responsesAISummary", function () { return enduserSDK_1.api.form_responses.info_for_access_code({ accessCode: summaryAccessCode_1 }); }, { onResult: function (_a) {
177
+ var response = _a.response;
178
+ return (response.responsesAISummary === undefined && response.responsesAISummaryGeneratedAt === undefined);
179
+ } })];
156
180
  case 19:
181
+ // the access-code read handler bypasses model-level redaction, so it strips by hand
157
182
  _b.sent();
158
- return [3 /*break*/, 21];
183
+ return [4 /*yield*/, (0, testing_1.async_test)("staff access-code read still receives responsesAISummary", function () { return sdk.api.form_responses.info_for_access_code({ accessCode: summaryAccessCode_1 }); }, { onResult: function (_a) {
184
+ var response = _a.response;
185
+ return response.responsesAISummary === RESPONSE_SUMMARY;
186
+ } })];
159
187
  case 20:
160
- err_2 = _b.sent();
161
- return [3 /*break*/, 21];
188
+ _b.sent();
189
+ return [3 /*break*/, 40];
162
190
  case 21:
163
- _b.trys.push([21, 23, , 24]);
164
- return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
191
+ if (!staffResponseId) return [3 /*break*/, 25];
192
+ _b.label = 22;
165
193
  case 22:
166
- _b.sent();
167
- return [3 /*break*/, 24];
194
+ _b.trys.push([22, 24, , 25]);
195
+ return [4 /*yield*/, sdk.api.form_responses.deleteOne(staffResponseId)];
168
196
  case 23:
169
- err_3 = _b.sent();
170
- return [3 /*break*/, 24];
197
+ _b.sent();
198
+ return [3 /*break*/, 25];
171
199
  case 24:
172
- _b.trys.push([24, 26, , 27]);
173
- return [4 /*yield*/, sdk.api.forms.deleteOne(form.id)];
200
+ err_1 = _b.sent();
201
+ return [3 /*break*/, 25];
174
202
  case 25:
175
- _b.sent();
176
- return [3 /*break*/, 27];
203
+ if (!enduserResponseId) return [3 /*break*/, 29];
204
+ _b.label = 26;
177
205
  case 26:
206
+ _b.trys.push([26, 28, , 29]);
207
+ return [4 /*yield*/, sdk.api.form_responses.deleteOne(enduserResponseId)];
208
+ case 27:
209
+ _b.sent();
210
+ return [3 /*break*/, 29];
211
+ case 28:
212
+ err_2 = _b.sent();
213
+ return [3 /*break*/, 29];
214
+ case 29:
215
+ if (!summaryResponseId) return [3 /*break*/, 33];
216
+ _b.label = 30;
217
+ case 30:
218
+ _b.trys.push([30, 32, , 33]);
219
+ return [4 /*yield*/, sdk.api.form_responses.deleteOne(summaryResponseId)];
220
+ case 31:
221
+ _b.sent();
222
+ return [3 /*break*/, 33];
223
+ case 32:
224
+ err_3 = _b.sent();
225
+ return [3 /*break*/, 33];
226
+ case 33:
227
+ _b.trys.push([33, 35, , 36]);
228
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
229
+ case 34:
230
+ _b.sent();
231
+ return [3 /*break*/, 36];
232
+ case 35:
178
233
  err_4 = _b.sent();
179
- return [3 /*break*/, 27];
180
- case 27: return [7 /*endfinally*/];
181
- case 28: return [2 /*return*/];
234
+ return [3 /*break*/, 36];
235
+ case 36:
236
+ _b.trys.push([36, 38, , 39]);
237
+ return [4 /*yield*/, sdk.api.forms.deleteOne(form.id)];
238
+ case 37:
239
+ _b.sent();
240
+ return [3 /*break*/, 39];
241
+ case 38:
242
+ err_5 = _b.sent();
243
+ return [3 /*break*/, 39];
244
+ case 39: return [7 /*endfinally*/];
245
+ case 40: return [2 /*return*/];
182
246
  }
183
247
  });
184
248
  });
@@ -1 +1 @@
1
- {"version":3,"file":"enduser-ai-summary-trust-gate.test.js","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enduser-ai-summary-trust-gate.test.js","sourceRoot":"","sources":["../../../../../src/tests/api_tests/security/enduser-ai-summary-trust-gate.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AA22EA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AAy1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBAiqBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAqlDD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBA+b1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAyD5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}
1
+ {"version":3,"file":"tests.d.ts","sourceRoot":"","sources":["../../../src/tests/tests.ts"],"names":[],"mappings":"AA62EA,eAAO,MAAM,kCAAkC,qBAgJ9C,CAAA;AAED,eAAO,MAAM,mCAAmC,qBA2K/C,CAAA;AAGD,eAAO,MAAM,oBAAoB,qBAoHhC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBAsF3C,CAAA;AAID,eAAO,MAAM,0BAA0B,qBAqCtC,CAAA;AAy1FD,eAAO,MAAM,cAAc,qBAqC1B,CAAA;AAotBD,eAAO,MAAM,0BAA0B,qBAmFtC,CAAA;AAqED,eAAO,MAAM,eAAe,qBAmD3B,CAAA;AAED,eAAO,MAAM,oBAAoB,6BAsBhC,CAAA;AAED,eAAO,MAAM,oCAAoC,qBAiqBhD,CAAA;AAED,eAAO,MAAM,mCAAmC,qBAkE/C,CAAA;AAqlDD,eAAO,MAAM,yBAAyB,qBA0DrC,CAAA;AAED,eAAO,MAAM,kBAAkB,qBAmK9B,CAAA;AAED,eAAO,MAAM,sBAAsB,qBA0BlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,qBAmC/B,CAAA;AAED,eAAO,MAAM,gCAAgC,mCA8C5C,CAAA;AAED,eAAO,MAAM,cAAc,qBA+b1B,CAAA;AAGD,eAAO,MAAM,oBAAoB,uBAuBhC,CAAA;AA4wBD,eAAO,MAAM,4BAA4B,qBAoExC,CAAA;AAED,eAAO,MAAM,+BAA+B,qBA4U3C,CAAA;AAED,eAAO,MAAM,gDAAgD,qBAyD5D,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAwIjC,CAAA"}