@burdenoff/microfe-buildmyiq 2026.1024.1 → 2026.1025.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buildmyiq/BuildmyiqRoot.d.ts.map +1 -1
- package/dist/buildmyiq/BuildmyiqRoot.js +67 -59
- package/dist/buildmyiq/BuildmyiqRoot.js.map +1 -1
- package/dist/buildmyiq/BuildmyiqRoutes.d.ts.map +1 -1
- package/dist/buildmyiq/BuildmyiqRoutes.js +31 -27
- package/dist/buildmyiq/BuildmyiqRoutes.js.map +1 -1
- package/dist/buildmyiq/components/StatusBadge.d.ts.map +1 -1
- package/dist/buildmyiq/components/StatusBadge.js +5 -0
- package/dist/buildmyiq/components/StatusBadge.js.map +1 -1
- package/dist/buildmyiq/hooks/index.d.ts +3 -0
- package/dist/buildmyiq/hooks/index.d.ts.map +1 -1
- package/dist/buildmyiq/hooks/index.js +3 -0
- package/dist/buildmyiq/hooks/proctoringState.d.ts +7 -0
- package/dist/buildmyiq/hooks/proctoringState.d.ts.map +1 -0
- package/dist/buildmyiq/hooks/proctoringState.js +19 -0
- package/dist/buildmyiq/hooks/proctoringState.js.map +1 -0
- package/dist/buildmyiq/hooks/useBuiCredentials.d.ts +16 -0
- package/dist/buildmyiq/hooks/useBuiCredentials.d.ts.map +1 -0
- package/dist/buildmyiq/hooks/useBuiCredentials.js +28 -0
- package/dist/buildmyiq/hooks/useBuiCredentials.js.map +1 -0
- package/dist/buildmyiq/hooks/useBuiPermissions.d.ts +1 -1
- package/dist/buildmyiq/hooks/useBuiPermissions.d.ts.map +1 -1
- package/dist/buildmyiq/hooks/useBuiProctoring.d.ts +25 -0
- package/dist/buildmyiq/hooks/useBuiProctoring.d.ts.map +1 -0
- package/dist/buildmyiq/hooks/useBuiProctoring.js +99 -0
- package/dist/buildmyiq/hooks/useBuiProctoring.js.map +1 -0
- package/dist/buildmyiq/hooks/useBuildmyiqApi.d.ts +11 -1
- package/dist/buildmyiq/hooks/useBuildmyiqApi.d.ts.map +1 -1
- package/dist/buildmyiq/hooks/useBuildmyiqApi.js +77 -50
- package/dist/buildmyiq/hooks/useBuildmyiqApi.js.map +1 -1
- package/dist/buildmyiq/pages/assessments/AiAssessmentDraftDialog.d.ts +11 -0
- package/dist/buildmyiq/pages/assessments/AiAssessmentDraftDialog.d.ts.map +1 -0
- package/dist/buildmyiq/pages/assessments/AiAssessmentDraftDialog.js +342 -0
- package/dist/buildmyiq/pages/assessments/AiAssessmentDraftDialog.js.map +1 -0
- package/dist/buildmyiq/pages/assessments/AssessmentDetailPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/assessments/AssessmentDetailPage.js +236 -232
- package/dist/buildmyiq/pages/assessments/AssessmentDetailPage.js.map +1 -1
- package/dist/buildmyiq/pages/assessments/AssessmentsPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/assessments/AssessmentsPage.js +248 -204
- package/dist/buildmyiq/pages/assessments/AssessmentsPage.js.map +1 -1
- package/dist/buildmyiq/pages/assessments/ProctoringGate.d.ts +10 -0
- package/dist/buildmyiq/pages/assessments/ProctoringGate.d.ts.map +1 -0
- package/dist/buildmyiq/pages/assessments/ProctoringGate.js +204 -0
- package/dist/buildmyiq/pages/assessments/ProctoringGate.js.map +1 -0
- package/dist/buildmyiq/pages/assessments/TakeAssessmentPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/assessments/TakeAssessmentPage.js +252 -242
- package/dist/buildmyiq/pages/assessments/TakeAssessmentPage.js.map +1 -1
- package/dist/buildmyiq/pages/assessments/useLockdownMonitor.d.ts +33 -0
- package/dist/buildmyiq/pages/assessments/useLockdownMonitor.d.ts.map +1 -0
- package/dist/buildmyiq/pages/assessments/useLockdownMonitor.js +42 -0
- package/dist/buildmyiq/pages/assessments/useLockdownMonitor.js.map +1 -0
- package/dist/buildmyiq/pages/authoring/AuthoringPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/authoring/AuthoringPage.js +162 -144
- package/dist/buildmyiq/pages/authoring/AuthoringPage.js.map +1 -1
- package/dist/buildmyiq/pages/certificates/CertificatesPage.d.ts.map +1 -1
- package/dist/buildmyiq/pages/certificates/CertificatesPage.js +148 -109
- package/dist/buildmyiq/pages/certificates/CertificatesPage.js.map +1 -1
- package/dist/buildmyiq/pages/certificates/CredentialShareDialog.d.ts +10 -0
- package/dist/buildmyiq/pages/certificates/CredentialShareDialog.d.ts.map +1 -0
- package/dist/buildmyiq/pages/certificates/CredentialShareDialog.js +126 -0
- package/dist/buildmyiq/pages/certificates/CredentialShareDialog.js.map +1 -0
- package/dist/buildmyiq/pages/proctoring/ProctoringReviewPage.d.ts +3 -0
- package/dist/buildmyiq/pages/proctoring/ProctoringReviewPage.d.ts.map +1 -0
- package/dist/buildmyiq/pages/proctoring/ProctoringReviewPage.js +242 -0
- package/dist/buildmyiq/pages/proctoring/ProctoringReviewPage.js.map +1 -0
- package/dist/buildmyiq/types/index.d.ts +103 -0
- package/dist/buildmyiq/types/index.d.ts.map +1 -1
- package/dist/buildmyiq/types/index.js.map +1 -1
- package/dist/buildmyiq/utils/blockedTerms.d.ts +9 -0
- package/dist/buildmyiq/utils/blockedTerms.d.ts.map +1 -0
- package/dist/buildmyiq/utils/blockedTerms.js +13 -0
- package/dist/buildmyiq/utils/blockedTerms.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BuiCertificate } from '../types';
|
|
2
|
+
export interface CredentialLinks {
|
|
3
|
+
/** Human-readable verification page; the link a learner shares. */
|
|
4
|
+
verifyUrl: string;
|
|
5
|
+
/** Machine-readable verification result. */
|
|
6
|
+
verifyJsonUrl: string;
|
|
7
|
+
/** Open Badges 2.0 assertion for wallets and other LMSs. */
|
|
8
|
+
badgeUrl: string;
|
|
9
|
+
/** LinkedIn "Add to profile" link prefilled with the credential. */
|
|
10
|
+
linkedInUrl: string;
|
|
11
|
+
}
|
|
12
|
+
/** Strip any trailing slash (and an accidental GraphQL path) from the gateway URL. */
|
|
13
|
+
export declare function gatewayOrigin(apiGatewayUrl: string | undefined): string | null;
|
|
14
|
+
/** Build the public share links for a certificate, or null when it has no code. */
|
|
15
|
+
export declare function buildCredentialLinks(certificate: Pick<BuiCertificate, 'verificationCode' | 'serial' | 'issuedAt' | 'expiresAt'>, courseTitle: string, apiGatewayUrl: string | undefined): CredentialLinks | null;
|
|
16
|
+
//# sourceMappingURL=useBuiCredentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBuiCredentials.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuiCredentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO9E;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC,EAC3F,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GAAG,SAAS,GAChC,eAAe,GAAG,IAAI,CA+BxB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/buildmyiq/hooks/useBuiCredentials.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
if (!e) return null;
|
|
4
|
+
try {
|
|
5
|
+
return new URL(e).origin;
|
|
6
|
+
} catch {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function t(t, n, r) {
|
|
11
|
+
let i = e(r), a = t.verificationCode;
|
|
12
|
+
if (!i || !a) return null;
|
|
13
|
+
let o = `${i}/verify/buildmyiq/${encodeURIComponent(a)}`, s = new Date(t.issuedAt), c = new URL("https://www.linkedin.com/profile/add");
|
|
14
|
+
if (c.searchParams.set("startTask", "CERTIFICATION_NAME"), c.searchParams.set("name", n), c.searchParams.set("organizationName", "BuildMyIQ"), Number.isNaN(s.getTime()) || (c.searchParams.set("issueYear", String(s.getUTCFullYear())), c.searchParams.set("issueMonth", String(s.getUTCMonth() + 1))), t.expiresAt) {
|
|
15
|
+
let e = new Date(t.expiresAt);
|
|
16
|
+
Number.isNaN(e.getTime()) || (c.searchParams.set("expirationYear", String(e.getUTCFullYear())), c.searchParams.set("expirationMonth", String(e.getUTCMonth() + 1)));
|
|
17
|
+
}
|
|
18
|
+
return c.searchParams.set("certUrl", o), c.searchParams.set("certId", t.serial), {
|
|
19
|
+
verifyUrl: o,
|
|
20
|
+
verifyJsonUrl: `${o}?format=json`,
|
|
21
|
+
badgeUrl: `${o}/badge.json`,
|
|
22
|
+
linkedInUrl: c.toString()
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { t as buildCredentialLinks, e as gatewayOrigin };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=useBuiCredentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBuiCredentials.js","names":[],"sources":["../../../src/buildmyiq/hooks/useBuiCredentials.ts"],"sourcesContent":["/**\n * Buildmyiq — verifiable credential sharing helpers (BOFF-4431).\n * @module buildmyiq/hooks/useBuiCredentials\n *\n * Every certificate issued since verifiable credentials shipped carries an\n * opaque `verificationCode`. Anyone holding the code can check the credential\n * with no BuildMyIQ account at the public endpoint the workspace gateway\n * forwards to `wspace-buildmyiq-svc`:\n *\n * GET {gateway}/verify/buildmyiq/{code} readable page (browser) or JSON\n * GET {gateway}/verify/buildmyiq/{code}/badge.json Open Badges 2.0 assertion\n *\n * The share links are built from the same gateway origin the MFE already talks\n * to, so alpha links point at alpha and production links at production. They\n * are opened as top-level navigations (new tab), never fetched from the app:\n * the public route deliberately carries no CORS grant.\n */\n\nimport type { BuiCertificate } from '../types';\n\nexport interface CredentialLinks {\n /** Human-readable verification page; the link a learner shares. */\n verifyUrl: string;\n /** Machine-readable verification result. */\n verifyJsonUrl: string;\n /** Open Badges 2.0 assertion for wallets and other LMSs. */\n badgeUrl: string;\n /** LinkedIn \"Add to profile\" link prefilled with the credential. */\n linkedInUrl: string;\n}\n\n/** Strip any trailing slash (and an accidental GraphQL path) from the gateway URL. */\nexport function gatewayOrigin(apiGatewayUrl: string | undefined): string | null {\n if (!apiGatewayUrl) return null;\n try {\n return new URL(apiGatewayUrl).origin;\n } catch {\n return null;\n }\n}\n\n/** Build the public share links for a certificate, or null when it has no code. */\nexport function buildCredentialLinks(\n certificate: Pick<BuiCertificate, 'verificationCode' | 'serial' | 'issuedAt' | 'expiresAt'>,\n courseTitle: string,\n apiGatewayUrl: string | undefined\n): CredentialLinks | null {\n const origin = gatewayOrigin(apiGatewayUrl);\n const code = certificate.verificationCode;\n if (!origin || !code) return null;\n\n const verifyUrl = `${origin}/verify/buildmyiq/${encodeURIComponent(code)}`;\n const issued = new Date(certificate.issuedAt);\n const linkedIn = new URL('https://www.linkedin.com/profile/add');\n linkedIn.searchParams.set('startTask', 'CERTIFICATION_NAME');\n linkedIn.searchParams.set('name', courseTitle);\n linkedIn.searchParams.set('organizationName', 'BuildMyIQ');\n if (!Number.isNaN(issued.getTime())) {\n linkedIn.searchParams.set('issueYear', String(issued.getUTCFullYear()));\n linkedIn.searchParams.set('issueMonth', String(issued.getUTCMonth() + 1));\n }\n if (certificate.expiresAt) {\n const expires = new Date(certificate.expiresAt);\n if (!Number.isNaN(expires.getTime())) {\n linkedIn.searchParams.set('expirationYear', String(expires.getUTCFullYear()));\n linkedIn.searchParams.set('expirationMonth', String(expires.getUTCMonth() + 1));\n }\n }\n linkedIn.searchParams.set('certUrl', verifyUrl);\n linkedIn.searchParams.set('certId', certificate.serial);\n\n return {\n verifyUrl,\n verifyJsonUrl: `${verifyUrl}?format=json`,\n badgeUrl: `${verifyUrl}/badge.json`,\n linkedInUrl: linkedIn.toString(),\n };\n}\n"],"mappings":";AAgCA,SAAgB,EAAc,GAAkD;CAC9E,IAAI,CAAC,GAAe,OAAO;CAC3B,IAAI;EACF,OAAO,IAAI,IAAI,CAAa,EAAE;CAChC,QAAQ;EACN,OAAO;CACT;AACF;AAGA,SAAgB,EACd,GACA,GACA,GACwB;CACxB,IAAM,IAAS,EAAc,CAAa,GACpC,IAAO,EAAY;CACzB,IAAI,CAAC,KAAU,CAAC,GAAM,OAAO;CAE7B,IAAM,IAAY,GAAG,EAAO,oBAAoB,mBAAmB,CAAI,KACjE,IAAS,IAAI,KAAK,EAAY,QAAQ,GACtC,IAAW,IAAI,IAAI,sCAAsC;CAQ/D,IAPA,EAAS,aAAa,IAAI,aAAa,oBAAoB,GAC3D,EAAS,aAAa,IAAI,QAAQ,CAAW,GAC7C,EAAS,aAAa,IAAI,oBAAoB,WAAW,GACpD,OAAO,MAAM,EAAO,QAAQ,CAAC,MAChC,EAAS,aAAa,IAAI,aAAa,OAAO,EAAO,eAAe,CAAC,CAAC,GACtE,EAAS,aAAa,IAAI,cAAc,OAAO,EAAO,YAAY,IAAI,CAAC,CAAC,IAEtE,EAAY,WAAW;EACzB,IAAM,IAAU,IAAI,KAAK,EAAY,SAAS;EAC9C,AAAK,OAAO,MAAM,EAAQ,QAAQ,CAAC,MACjC,EAAS,aAAa,IAAI,kBAAkB,OAAO,EAAQ,eAAe,CAAC,CAAC,GAC5E,EAAS,aAAa,IAAI,mBAAmB,OAAO,EAAQ,YAAY,IAAI,CAAC,CAAC;CAElF;CAIA,OAHA,EAAS,aAAa,IAAI,WAAW,CAAS,GAC9C,EAAS,aAAa,IAAI,UAAU,EAAY,MAAM,GAE/C;EACL;EACA,eAAe,GAAG,EAAU;EAC5B,UAAU,GAAG,EAAU;EACvB,aAAa,EAAS,SAAS;CACjC;AACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Every resource the BuildMyIQ subgraph declares an `@rbac` directive for. */
|
|
2
|
-
export type BuiResource = 'buildmyiq-course' | 'buildmyiq-module' | 'buildmyiq-lesson' | 'buildmyiq-skill' | 'buildmyiq-enrollment' | 'buildmyiq-cohort' | 'buildmyiq-certificate' | 'buildmyiq-assessment' | 'buildmyiq-question' | 'buildmyiq-submission' | 'buildmyiq-lti-platform' | 'buildmyiq-lti-grade-sync';
|
|
2
|
+
export type BuiResource = 'buildmyiq-course' | 'buildmyiq-module' | 'buildmyiq-lesson' | 'buildmyiq-skill' | 'buildmyiq-enrollment' | 'buildmyiq-cohort' | 'buildmyiq-certificate' | 'buildmyiq-assessment' | 'buildmyiq-question' | 'buildmyiq-submission' | 'buildmyiq-proctoring' | 'buildmyiq-lti-platform' | 'buildmyiq-lti-grade-sync';
|
|
3
3
|
/** Actions used by the BuildMyIQ `@rbac` directives. */
|
|
4
4
|
export type BuiAction = 'create' | 'read' | 'update' | 'delete' | 'list';
|
|
5
5
|
export interface UseBuiPermissionsResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuiPermissions.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuiPermissions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useBuiPermissions.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuiPermissions.ts"],"names":[],"mappings":"AAgCA,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,sBAAsB,GACtB,kBAAkB,GAClB,uBAAuB,GACvB,sBAAsB,GACtB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,wBAAwB,GACxB,0BAA0B,CAAC;AAE/B,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAWzE,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,GAAG,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC;IAG3D,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IACzB,iGAAiG;IACjG,eAAe,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,cAAc,EAAE,OAAO,CAAC;IAGxB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;IACnB,8FAA8F;IAC9F,mBAAmB,EAAE,OAAO,CAAC;IAC7B,8EAA8E;IAC9E,eAAe,EAAE,OAAO,CAAC;IAGzB,uFAAuF;IACvF,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wFAAwF;IACxF,oBAAoB,EAAE,OAAO,CAAC;IAG9B,sFAAsF;IACtF,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uFAAuF;IACvF,mBAAmB,EAAE,OAAO,CAAC;IAC7B,uFAAuF;IACvF,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kFAAkF;IAClF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sFAAsF;IACtF,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qFAAqF;IACrF,kBAAkB,EAAE,OAAO,CAAC;IAE5B,sDAAsD;IACtD,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,uBAAuB,CAoC3D;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,CAE9E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BuiConnection, BuiProctoringSession, BuiProctoringStatus, BuiReviewProctoringSessionInput, BuiSubmitProctoringIdentityInput } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* The calling learner's most recent proctoring session for an assessment
|
|
4
|
+
* (null when they have never started one). Polls while a reviewer decision
|
|
5
|
+
* is pending so the exam unlocks without a manual refresh.
|
|
6
|
+
*/
|
|
7
|
+
export declare const useBuiMyProctoringSession: (assessmentId: string | undefined, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiProctoringSession | null>, Error>;
|
|
8
|
+
export declare const useBuiStartProctoringSession: () => import('@tanstack/react-query').UseMutationResult<BuiProctoringSession, Error, string, unknown>;
|
|
9
|
+
export declare const useBuiSubmitProctoringIdentity: () => import('@tanstack/react-query').UseMutationResult<BuiProctoringSession, Error, {
|
|
10
|
+
id: string;
|
|
11
|
+
input: BuiSubmitProctoringIdentityInput;
|
|
12
|
+
}, unknown>;
|
|
13
|
+
/** Records one lockdown violation (tab switch, window blur, fullscreen exit, copy/paste). */
|
|
14
|
+
export declare const useBuiReportProctoringViolation: () => import('@tanstack/react-query').UseMutationResult<BuiProctoringSession, Error, string, unknown>;
|
|
15
|
+
/** Reviewer queue: proctoring sessions in the workspace, optionally filtered by status. */
|
|
16
|
+
export declare const useBuiProctoringSessions: (args: {
|
|
17
|
+
status?: BuiProctoringStatus;
|
|
18
|
+
assessmentId?: string;
|
|
19
|
+
limit?: number;
|
|
20
|
+
}, enabled?: boolean) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiConnection<BuiProctoringSession>>, Error>;
|
|
21
|
+
export declare const useBuiReviewProctoringSession: () => import('@tanstack/react-query').UseMutationResult<BuiProctoringSession, Error, {
|
|
22
|
+
id: string;
|
|
23
|
+
input: BuiReviewProctoringSessionInput;
|
|
24
|
+
}, unknown>;
|
|
25
|
+
//# sourceMappingURL=useBuiProctoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBuiProctoring.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuiProctoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAC/B,gCAAgC,EACjC,MAAM,UAAU,CAAC;AAgBlB;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,cAAc,MAAM,GAAG,SAAS,EAAE,iBAAc,gGAwBzF,CAAC;AAEF,eAAO,MAAM,4BAA4B,uGAkBxC,CAAC;AAEF,eAAO,MAAM,8BAA8B;QAIR,MAAM;WAAS,gCAAgC;WAejF,CAAC;AAEF,6FAA6F;AAC7F,eAAO,MAAM,+BAA+B,uGAkB3C,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB,GACnC,MAAM;IAAE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7E,iBAAc,wGAuBf,CAAC;AAEF,eAAO,MAAM,6BAA6B;QAIP,MAAM;WAAS,+BAA+B;WAYhF,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useBuildmyiq as e } from "../context/BuildmyiqContext.js";
|
|
2
|
+
import "../context/index.js";
|
|
3
|
+
import { wspaceFetch as t } from "./useBuiFiles.js";
|
|
4
|
+
import { useMutation as n, useQuery as r, useQueryClient as i } from "@tanstack/react-query";
|
|
5
|
+
//#region src/buildmyiq/hooks/useBuiProctoring.ts
|
|
6
|
+
var a = "\n id workspaceId assessmentId learnerId status lockdownAcknowledgedAt violationCount\n reviewedById reviewedAt reviewNotes expiresAt createdAt updatedAt\n identityFile { id name downloadUrl mimeType }\n", o = {
|
|
7
|
+
mine: (e) => [
|
|
8
|
+
"buildmyiq",
|
|
9
|
+
"proctoring",
|
|
10
|
+
"mine",
|
|
11
|
+
e
|
|
12
|
+
],
|
|
13
|
+
queue: [
|
|
14
|
+
"buildmyiq",
|
|
15
|
+
"proctoring",
|
|
16
|
+
"queue"
|
|
17
|
+
]
|
|
18
|
+
}, s = 15e3, c = (n, i = !0) => {
|
|
19
|
+
let { apiGatewayUrl: c } = e();
|
|
20
|
+
return r({
|
|
21
|
+
queryKey: n ? o.mine(n) : [
|
|
22
|
+
"buildmyiq",
|
|
23
|
+
"proctoring",
|
|
24
|
+
"mine",
|
|
25
|
+
"nil"
|
|
26
|
+
],
|
|
27
|
+
enabled: !!n && i,
|
|
28
|
+
queryFn: async () => (await t(`query BuiMyProctoringSession($assessmentId: ID!) {
|
|
29
|
+
buiMyProctoringSession(assessmentId: $assessmentId) { ${a} }
|
|
30
|
+
}`, { assessmentId: n }, c)).buiMyProctoringSession,
|
|
31
|
+
refetchInterval: (e) => {
|
|
32
|
+
let t = e.state.data?.status;
|
|
33
|
+
return t === "UNDER_REVIEW" || t === "IDENTITY_SUBMITTED" ? s : !1;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}, l = () => {
|
|
37
|
+
let { apiGatewayUrl: r } = e(), s = i();
|
|
38
|
+
return n({
|
|
39
|
+
mutationFn: async (e) => (await t(`mutation BuiStartProctoringSession($assessmentId: ID!) {
|
|
40
|
+
buiStartProctoringSession(assessmentId: $assessmentId) { ${a} }
|
|
41
|
+
}`, { assessmentId: e }, r)).buiStartProctoringSession,
|
|
42
|
+
onSuccess: (e) => {
|
|
43
|
+
s.setQueryData(o.mine(e.assessmentId), e);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}, u = () => {
|
|
47
|
+
let { apiGatewayUrl: r } = e(), s = i();
|
|
48
|
+
return n({
|
|
49
|
+
mutationFn: async (e) => (await t(`mutation BuiSubmitProctoringIdentity($id: ID!, $input: BuiSubmitProctoringIdentityInput!) {
|
|
50
|
+
buiSubmitProctoringIdentity(id: $id, input: $input) { ${a} }
|
|
51
|
+
}`, e, r)).buiSubmitProctoringIdentity,
|
|
52
|
+
onSuccess: (e) => {
|
|
53
|
+
s.setQueryData(o.mine(e.assessmentId), e), s.invalidateQueries({ queryKey: o.queue });
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}, d = () => {
|
|
57
|
+
let { apiGatewayUrl: r } = e(), s = i();
|
|
58
|
+
return n({
|
|
59
|
+
mutationFn: async (e) => (await t(`mutation BuiReportProctoringViolation($id: ID!) {
|
|
60
|
+
buiReportProctoringViolation(id: $id) { ${a} }
|
|
61
|
+
}`, { id: e }, r)).buiReportProctoringViolation,
|
|
62
|
+
onSuccess: (e) => {
|
|
63
|
+
s.setQueryData(o.mine(e.assessmentId), e);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}, f = (n, i = !0) => {
|
|
67
|
+
let { apiGatewayUrl: s } = e(), { status: c, assessmentId: l, limit: u = 50 } = n;
|
|
68
|
+
return r({
|
|
69
|
+
queryKey: [
|
|
70
|
+
...o.queue,
|
|
71
|
+
c ?? "ALL",
|
|
72
|
+
l ?? "ALL",
|
|
73
|
+
u
|
|
74
|
+
],
|
|
75
|
+
enabled: i,
|
|
76
|
+
queryFn: async () => (await t(`query BuiListProctoringSessions($assessmentId: ID, $status: BuiProctoringStatus, $pagination: PaginationInput) {
|
|
77
|
+
buiListProctoringSessions(assessmentId: $assessmentId, status: $status, pagination: $pagination) {
|
|
78
|
+
items { ${a} }
|
|
79
|
+
pageInfo { cursor hasMore }
|
|
80
|
+
}
|
|
81
|
+
}`, {
|
|
82
|
+
assessmentId: l,
|
|
83
|
+
status: c,
|
|
84
|
+
pagination: { limit: u }
|
|
85
|
+
}, s)).buiListProctoringSessions
|
|
86
|
+
});
|
|
87
|
+
}, p = () => {
|
|
88
|
+
let { apiGatewayUrl: r } = e(), s = i();
|
|
89
|
+
return n({
|
|
90
|
+
mutationFn: async (e) => (await t(`mutation BuiReviewProctoringSession($id: ID!, $input: BuiReviewProctoringSessionInput!) {
|
|
91
|
+
buiReviewProctoringSession(id: $id, input: $input) { ${a} }
|
|
92
|
+
}`, e, r)).buiReviewProctoringSession,
|
|
93
|
+
onSuccess: () => s.invalidateQueries({ queryKey: o.queue })
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
//#endregion
|
|
97
|
+
export { c as useBuiMyProctoringSession, f as useBuiProctoringSessions, d as useBuiReportProctoringViolation, p as useBuiReviewProctoringSession, l as useBuiStartProctoringSession, u as useBuiSubmitProctoringIdentity };
|
|
98
|
+
|
|
99
|
+
//# sourceMappingURL=useBuiProctoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBuiProctoring.js","names":[],"sources":["../../../src/buildmyiq/hooks/useBuiProctoring.ts"],"sourcesContent":["/**\n * Buildmyiq — high-stakes exam proctoring hooks (BOFF-4431).\n * @module buildmyiq/hooks/useBuiProctoring\n *\n * Wired to the `wspace-buildmyiq-svc` proctoring contract:\n * - learner (self-scoped): `buiMyProctoringSession`, `buiStartProctoringSession`,\n * `buiSubmitProctoringIdentity`, `buiReportProctoringViolation`\n * - reviewer (workspace-scoped): `buiListProctoringSessions`,\n * `buiReviewProctoringSession`\n *\n * The backend is the gate: `buiSubmitAssessment` refuses a `requiresProctoring`\n * assessment unless the learner's latest session is APPROVED and unexpired.\n * These hooks only drive the UI through that lifecycle.\n */\n\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { useBuildmyiq } from '../context';\nimport { wspaceFetch } from './useBuiFiles';\nimport type {\n BuiConnection,\n BuiProctoringSession,\n BuiProctoringStatus,\n BuiReviewProctoringSessionInput,\n BuiSubmitProctoringIdentityInput,\n} from '../types';\n\nconst PROCTORING_SESSION_FIELDS = `\n id workspaceId assessmentId learnerId status lockdownAcknowledgedAt violationCount\n reviewedById reviewedAt reviewNotes expiresAt createdAt updatedAt\n identityFile { id name downloadUrl mimeType }\n`;\n\nconst PROCTORING_KEY = {\n mine: (assessmentId: string) => ['buildmyiq', 'proctoring', 'mine', assessmentId] as const,\n queue: ['buildmyiq', 'proctoring', 'queue'] as const,\n};\n\n/** How often the learner's waiting screen re-checks for a reviewer decision. */\nconst AWAITING_REVIEW_POLL_MS = 15_000;\n\n/**\n * The calling learner's most recent proctoring session for an assessment\n * (null when they have never started one). Polls while a reviewer decision\n * is pending so the exam unlocks without a manual refresh.\n */\nexport const useBuiMyProctoringSession = (assessmentId: string | undefined, enabled = true) => {\n const { apiGatewayUrl } = useBuildmyiq();\n return useQuery({\n queryKey: assessmentId\n ? PROCTORING_KEY.mine(assessmentId)\n : ['buildmyiq', 'proctoring', 'mine', 'nil'],\n enabled: Boolean(assessmentId) && enabled,\n queryFn: async () => {\n const data = await wspaceFetch<{ buiMyProctoringSession: BuiProctoringSession | null }>(\n `query BuiMyProctoringSession($assessmentId: ID!) {\n buiMyProctoringSession(assessmentId: $assessmentId) { ${PROCTORING_SESSION_FIELDS} }\n }`,\n { assessmentId },\n apiGatewayUrl\n );\n return data.buiMyProctoringSession;\n },\n refetchInterval: (query) => {\n const status = query.state.data?.status;\n return status === 'UNDER_REVIEW' || status === 'IDENTITY_SUBMITTED'\n ? AWAITING_REVIEW_POLL_MS\n : false;\n },\n });\n};\n\nexport const useBuiStartProctoringSession = () => {\n const { apiGatewayUrl } = useBuildmyiq();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (assessmentId: string) => {\n const data = await wspaceFetch<{ buiStartProctoringSession: BuiProctoringSession }>(\n `mutation BuiStartProctoringSession($assessmentId: ID!) {\n buiStartProctoringSession(assessmentId: $assessmentId) { ${PROCTORING_SESSION_FIELDS} }\n }`,\n { assessmentId },\n apiGatewayUrl\n );\n return data.buiStartProctoringSession;\n },\n onSuccess: (session) => {\n qc.setQueryData(PROCTORING_KEY.mine(session.assessmentId), session);\n },\n });\n};\n\nexport const useBuiSubmitProctoringIdentity = () => {\n const { apiGatewayUrl } = useBuildmyiq();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (args: { id: string; input: BuiSubmitProctoringIdentityInput }) => {\n const data = await wspaceFetch<{ buiSubmitProctoringIdentity: BuiProctoringSession }>(\n `mutation BuiSubmitProctoringIdentity($id: ID!, $input: BuiSubmitProctoringIdentityInput!) {\n buiSubmitProctoringIdentity(id: $id, input: $input) { ${PROCTORING_SESSION_FIELDS} }\n }`,\n args,\n apiGatewayUrl\n );\n return data.buiSubmitProctoringIdentity;\n },\n onSuccess: (session) => {\n qc.setQueryData(PROCTORING_KEY.mine(session.assessmentId), session);\n void qc.invalidateQueries({ queryKey: PROCTORING_KEY.queue });\n },\n });\n};\n\n/** Records one lockdown violation (tab switch, window blur, fullscreen exit, copy/paste). */\nexport const useBuiReportProctoringViolation = () => {\n const { apiGatewayUrl } = useBuildmyiq();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const data = await wspaceFetch<{ buiReportProctoringViolation: BuiProctoringSession }>(\n `mutation BuiReportProctoringViolation($id: ID!) {\n buiReportProctoringViolation(id: $id) { ${PROCTORING_SESSION_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return data.buiReportProctoringViolation;\n },\n onSuccess: (session) => {\n qc.setQueryData(PROCTORING_KEY.mine(session.assessmentId), session);\n },\n });\n};\n\n/** Reviewer queue: proctoring sessions in the workspace, optionally filtered by status. */\nexport const useBuiProctoringSessions = (\n args: { status?: BuiProctoringStatus; assessmentId?: string; limit?: number },\n enabled = true\n) => {\n const { apiGatewayUrl } = useBuildmyiq();\n const { status, assessmentId, limit = 50 } = args;\n return useQuery({\n queryKey: [...PROCTORING_KEY.queue, status ?? 'ALL', assessmentId ?? 'ALL', limit],\n enabled,\n queryFn: async () => {\n const data = await wspaceFetch<{\n buiListProctoringSessions: BuiConnection<BuiProctoringSession>;\n }>(\n `query BuiListProctoringSessions($assessmentId: ID, $status: BuiProctoringStatus, $pagination: PaginationInput) {\n buiListProctoringSessions(assessmentId: $assessmentId, status: $status, pagination: $pagination) {\n items { ${PROCTORING_SESSION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n { assessmentId, status, pagination: { limit } },\n apiGatewayUrl\n );\n return data.buiListProctoringSessions;\n },\n });\n};\n\nexport const useBuiReviewProctoringSession = () => {\n const { apiGatewayUrl } = useBuildmyiq();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (args: { id: string; input: BuiReviewProctoringSessionInput }) => {\n const data = await wspaceFetch<{ buiReviewProctoringSession: BuiProctoringSession }>(\n `mutation BuiReviewProctoringSession($id: ID!, $input: BuiReviewProctoringSessionInput!) {\n buiReviewProctoringSession(id: $id, input: $input) { ${PROCTORING_SESSION_FIELDS} }\n }`,\n args,\n apiGatewayUrl\n );\n return data.buiReviewProctoringSession;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: PROCTORING_KEY.queue }),\n });\n};\n"],"mappings":";;;;;AA2BA,IAAM,IAA4B,kNAM5B,IAAiB;CACrB,OAAO,MAAyB;EAAC;EAAa;EAAc;EAAQ;CAAY;CAChF,OAAO;EAAC;EAAa;EAAc;CAAO;AAC5C,GAGM,IAA0B,MAOnB,KAA6B,GAAkC,IAAU,OAAS;CAC7F,IAAM,EAAE,qBAAkB,EAAa;CACvC,OAAO,EAAS;EACd,UAAU,IACN,EAAe,KAAK,CAAY,IAChC;GAAC;GAAa;GAAc;GAAQ;EAAK;EAC7C,SAAS,EAAQ,KAAiB;EAClC,SAAS,aAQA,MAPY,EACjB;kEAC0D,EAA0B;YAEpF,EAAE,gBAAa,GACf,CACF,GACY;EAEd,kBAAkB,MAAU;GAC1B,IAAM,IAAS,EAAM,MAAM,MAAM;GACjC,OAAO,MAAW,kBAAkB,MAAW,uBAC3C,IACA;EACN;CACF,CAAC;AACH,GAEa,UAAqC;CAChD,IAAM,EAAE,qBAAkB,EAAa,GACjC,IAAK,EAAe;CAC1B,OAAO,EAAY;EACjB,YAAY,OAAO,OAQV,MAPY,EACjB;qEAC6D,EAA0B;YAEvF,EAAE,gBAAa,GACf,CACF,GACY;EAEd,YAAY,MAAY;GACtB,EAAG,aAAa,EAAe,KAAK,EAAQ,YAAY,GAAG,CAAO;EACpE;CACF,CAAC;AACH,GAEa,UAAuC;CAClD,IAAM,EAAE,qBAAkB,EAAa,GACjC,IAAK,EAAe;CAC1B,OAAO,EAAY;EACjB,YAAY,OAAO,OAQV,MAPY,EACjB;kEAC0D,EAA0B;YAEpF,GACA,CACF,GACY;EAEd,YAAY,MAAY;GAEtB,AADA,EAAG,aAAa,EAAe,KAAK,EAAQ,YAAY,GAAG,CAAO,GAClE,EAAQ,kBAAkB,EAAE,UAAU,EAAe,MAAM,CAAC;EAC9D;CACF,CAAC;AACH,GAGa,UAAwC;CACnD,IAAM,EAAE,qBAAkB,EAAa,GACjC,IAAK,EAAe;CAC1B,OAAO,EAAY;EACjB,YAAY,OAAO,OAQV,MAPY,EACjB;oDAC4C,EAA0B;YAEtE,EAAE,MAAG,GACL,CACF,GACY;EAEd,YAAY,MAAY;GACtB,EAAG,aAAa,EAAe,KAAK,EAAQ,YAAY,GAAG,CAAO;EACpE;CACF,CAAC;AACH,GAGa,KACX,GACA,IAAU,OACP;CACH,IAAM,EAAE,qBAAkB,EAAa,GACjC,EAAE,WAAQ,iBAAc,WAAQ,OAAO;CAC7C,OAAO,EAAS;EACd,UAAU;GAAC,GAAG,EAAe;GAAO,KAAU;GAAO,KAAgB;GAAO;EAAK;EACjF;EACA,SAAS,aAaA,MAZY,EAGjB;;sBAEc,EAA0B;;;YAIxC;GAAE;GAAc;GAAQ,YAAY,EAAE,SAAM;EAAE,GAC9C,CACF,GACY;CAEhB,CAAC;AACH,GAEa,UAAsC;CACjD,IAAM,EAAE,qBAAkB,EAAa,GACjC,IAAK,EAAe;CAC1B,OAAO,EAAY;EACjB,YAAY,OAAO,OAQV,MAPY,EACjB;iEACyD,EAA0B;YAEnF,GACA,CACF,GACY;EAEd,iBAAiB,EAAG,kBAAkB,EAAE,UAAU,EAAe,MAAM,CAAC;CAC1E,CAAC;AACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CourseTeacherSetupSelection } from './courseTeacherSetup';
|
|
2
|
-
import { BuiConnection, BuiCourse, BuiCourseLevel, BuiCourseStatus, BuiModule, BuiLesson, BuiAssessment, BuiAssessmentStatus, BuiQuestion, BuiSubmission, BuiSubmissionStatus, BuiEnrollment, BuiEnrollmentStatus, BuiCohort, BuiCohortStatus, BuiSkill, BuiSkillCategory, BuiSkillStandard, BuiCertification, BuiSkillMappingSuggestion, BuiCertificate, BuiLessonProgress, BuiCreateCourseInput, BuiUpdateCourseInput, BuiCreateModuleInput, BuiCreateLessonInput, BuiCreateAssessmentInput, BuiCreateQuestionInput, BuiCreateSkillInput, BuiCreateCohortInput, BuiEnrollInput, BuiRecordLessonProgressInput, BuiSubmitAssessmentInput, BuiGradeSubmissionInput, BuiIssueCertificateInput, BuiTutorAskInput, BuiTutorAskPayload, BuiTutorSession, BuiGradeSuggestion, BuiNextLessonSuggestion, BuiCourseOutlineSuggestion, BuiApplyCourseOutlineInput, BuiAdminCopilotAnswer, BuiAdminCopilotTurnInput, BuiAiSuggestionOutcome, BuiLtiPlatform, BuiRegisterLtiPlatformInput } from '../types';
|
|
2
|
+
import { BuiConnection, BuiCourse, BuiCourseLevel, BuiCourseStatus, BuiModule, BuiLesson, BuiAssessment, BuiAssessmentStatus, BuiQuestion, BuiSubmission, BuiSubmissionStatus, BuiEnrollment, BuiEnrollmentStatus, BuiCohort, BuiCohortStatus, BuiSkill, BuiSkillCategory, BuiSkillStandard, BuiCertification, BuiSkillMappingSuggestion, BuiCertificate, BuiLessonProgress, BuiCreateCourseInput, BuiUpdateCourseInput, BuiCreateModuleInput, BuiCreateLessonInput, BuiCreateAssessmentInput, BuiCreateQuestionInput, BuiCreateSkillInput, BuiCreateCohortInput, BuiEnrollInput, BuiRecordLessonProgressInput, BuiSubmitAssessmentInput, BuiGradeSubmissionInput, BuiIssueCertificateInput, BuiTutorAskInput, BuiTutorAskPayload, BuiTutorSession, BuiGradeSuggestion, BuiNextLessonSuggestion, BuiCourseOutlineSuggestion, BuiApplyCourseOutlineInput, BuiApplyAssessmentDraftInput, BuiAssessmentDraftSuggestion, BuiSuggestAssessmentDraftInput, BuiAdminCopilotAnswer, BuiAdminCopilotTurnInput, BuiAiSuggestionOutcome, BuiLtiPlatform, BuiRegisterLtiPlatformInput } from '../types';
|
|
3
3
|
export interface UseBuiCoursesArgs {
|
|
4
4
|
level?: BuiCourseLevel;
|
|
5
5
|
status?: BuiCourseStatus;
|
|
@@ -70,6 +70,7 @@ export declare const useBuiAssessments: (courseId: string | undefined, status?:
|
|
|
70
70
|
maxAttempts: number;
|
|
71
71
|
timeLimitMin: number;
|
|
72
72
|
isGraded: boolean;
|
|
73
|
+
requiresProctoring: boolean;
|
|
73
74
|
}[]>, Error>;
|
|
74
75
|
export declare const useBuiAssessment: (id: string | undefined) => import('@tanstack/react-query').UseQueryResult<NoInfer<BuiAssessment | null>, Error>;
|
|
75
76
|
export declare const useBuiCreateAssessment: () => import('@tanstack/react-query').UseMutationResult<BuiAssessment, Error, BuiCreateAssessmentInput, unknown>;
|
|
@@ -232,9 +233,18 @@ export declare const useBuiSuggestCourseOutline: () => import('@tanstack/react-q
|
|
|
232
233
|
topic: string;
|
|
233
234
|
audienceLevel?: string | null;
|
|
234
235
|
moduleCount?: number | null;
|
|
236
|
+
blockedTerms?: string[] | null;
|
|
235
237
|
}, unknown>;
|
|
236
238
|
/** Creates a real DRAFT course + modules + lessons from a (possibly-edited) AI outline. */
|
|
237
239
|
export declare const useBuiApplyCourseOutline: () => import('@tanstack/react-query').UseMutationResult<BuiCourse, Error, BuiApplyCourseOutlineInput, unknown>;
|
|
240
|
+
/**
|
|
241
|
+
* AI assessment draft (BOFF-4434): questions grounded in the course (or one
|
|
242
|
+
* lesson's) content. Ephemeral — nothing is written until
|
|
243
|
+
* `useBuiApplyAssessmentDraft` runs on the educator-reviewed draft.
|
|
244
|
+
*/
|
|
245
|
+
export declare const useBuiSuggestAssessmentDraft: () => import('@tanstack/react-query').UseMutationResult<BuiAssessmentDraftSuggestion, Error, BuiSuggestAssessmentDraftInput, unknown>;
|
|
246
|
+
/** Creates a DRAFT assessment + questions from a reviewed AI draft (BOFF-4434). */
|
|
247
|
+
export declare const useBuiApplyAssessmentDraft: () => import('@tanstack/react-query').UseMutationResult<BuiAssessment, Error, BuiApplyAssessmentDraftInput, unknown>;
|
|
238
248
|
/**
|
|
239
249
|
* Read-only admin Q&A grounded in real workspace stats — NEVER executes an
|
|
240
250
|
* admin action. Stateless per call; the caller resends prior turns as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildmyiqApi.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuildmyiqApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAA0B,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,eAAe,EACf,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,2BAA2B,EAE5B,MAAM,UAAU,CAAC;AAmPlB,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,GAAI,OAAM,iBAAsB;;iBAoCT,SAAS,EAAE;iBACX,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;UAM3D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,GAAG,SAAS,qFAgBlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,0GAgB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;QAII,MAAM;WAAS,oBAAoB;WAerE,CAAC;AAEF,eAAO,MAAM,mBAAmB,4FAmB/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,0FAiB/B,CAAC;AAMF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,GAAG,SAAS;;;;;;;;;;YAkBzD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,GAAG,SAAS,EAAE,WAAW,MAAM,gFAgB5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,0GAmB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,0GAoB9B,CAAC;AAMF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,GAAG,SAAS,EAAE,SAAS,mBAAmB;eA8BzC,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"useBuildmyiqApi.d.ts","sourceRoot":"","sources":["../../../src/buildmyiq/hooks/useBuildmyiqApi.ts"],"names":[],"mappings":"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"}
|