@lssm/example.policy-safe-knowledge-assistant 0.0.0-canary-20251220002821 → 0.0.0-canary-20251220015515
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/.turbo/turbo-build$colon$bundle.log +4 -4
- package/.turbo/turbo-build.log +4 -4
- package/CHANGELOG.md +15 -15
- package/dist/orchestrator/buildAnswer.js +2 -2
- package/dist/orchestrator/buildAnswer.js.map +1 -1
- package/package.json +17 -17
- package/src/orchestrator/buildAnswer.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -6,7 +6,7 @@ $ tsdown
|
|
|
6
6
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
7
7
|
[34mℹ[39m Build start
|
|
8
8
|
[34mℹ[39m Cleaning 97 files
|
|
9
|
-
[34mℹ[39m [2mdist/[22m[1morchestrator/buildAnswer.js[22m [2m 2.
|
|
9
|
+
[34mℹ[39m [2mdist/[22m[1morchestrator/buildAnswer.js[22m [2m 2.46 kB[22m [2m│ gzip: 0.93 kB[22m
|
|
10
10
|
[34mℹ[39m [2mdist/[22m[1mfeature.js[22m [2m 2.23 kB[22m [2m│ gzip: 0.67 kB[22m
|
|
11
11
|
[34mℹ[39m [2mdist/[22m[1mdocs/policy-safe-knowledge-assistant.docblock.js[22m [2m 1.94 kB[22m [2m│ gzip: 0.92 kB[22m
|
|
12
12
|
[34mℹ[39m [2mdist/[22m[1mexample.js[22m [2m 1.01 kB[22m [2m│ gzip: 0.51 kB[22m
|
|
@@ -27,7 +27,7 @@ $ tsdown
|
|
|
27
27
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/templates/runtime.docblock.js [2m 5.90 kB[22m [2m│ gzip: 2.68 kB[22m
|
|
28
28
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/workflows/overview.docblock.js [2m 5.71 kB[22m [2m│ gzip: 2.36 kB[22m
|
|
29
29
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map [2m 5.10 kB[22m [2m│ gzip: 1.98 kB[22m
|
|
30
|
-
[34mℹ[39m [2mdist/[22morchestrator/buildAnswer.js.map [2m 5.
|
|
30
|
+
[34mℹ[39m [2mdist/[22morchestrator/buildAnswer.js.map [2m 5.07 kB[22m [2m│ gzip: 1.67 kB[22m
|
|
31
31
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/vscode-extension.docblock.js.map [2m 4.64 kB[22m [2m│ gzip: 1.68 kB[22m
|
|
32
32
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map [2m 4.24 kB[22m [2m│ gzip: 1.72 kB[22m
|
|
33
33
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/telemetry-ingest.docblock.js [2m 4.21 kB[22m [2m│ gzip: 1.80 kB[22m
|
|
@@ -84,5 +84,5 @@ $ tsdown
|
|
|
84
84
|
[34mℹ[39m [2mdist/[22m[32m[1mseed/index.d.ts[22m[39m [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
85
85
|
[34mℹ[39m [2mdist/[22m[32m[1mdocs/index.d.ts[22m[39m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
86
86
|
[34mℹ[39m [2mdist/[22m[32m[1mdocs/policy-safe-knowledge-assistant.docblock.d.ts[22m[39m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
87
|
-
[34mℹ[39m 78 files, total: 265.
|
|
88
|
-
[32m✔[39m Build complete in [
|
|
87
|
+
[34mℹ[39m 78 files, total: 265.30 kB
|
|
88
|
+
[32m✔[39m Build complete in [32m38422ms[39m
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -6,7 +6,7 @@ $ tsdown
|
|
|
6
6
|
[34mℹ[39m target: [34mesnext[39m
|
|
7
7
|
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
8
8
|
[34mℹ[39m Build start
|
|
9
|
-
[34mℹ[39m [2mdist/[22m[1morchestrator/buildAnswer.js[22m [2m 2.
|
|
9
|
+
[34mℹ[39m [2mdist/[22m[1morchestrator/buildAnswer.js[22m [2m 2.46 kB[22m [2m│ gzip: 0.93 kB[22m
|
|
10
10
|
[34mℹ[39m [2mdist/[22m[1mfeature.js[22m [2m 2.23 kB[22m [2m│ gzip: 0.67 kB[22m
|
|
11
11
|
[34mℹ[39m [2mdist/[22m[1mdocs/policy-safe-knowledge-assistant.docblock.js[22m [2m 1.94 kB[22m [2m│ gzip: 0.92 kB[22m
|
|
12
12
|
[34mℹ[39m [2mdist/[22m[1mexample.js[22m [2m 1.01 kB[22m [2m│ gzip: 0.51 kB[22m
|
|
@@ -27,7 +27,7 @@ $ tsdown
|
|
|
27
27
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/templates/runtime.docblock.js [2m 5.90 kB[22m [2m│ gzip: 2.68 kB[22m
|
|
28
28
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/workflows/overview.docblock.js [2m 5.71 kB[22m [2m│ gzip: 2.36 kB[22m
|
|
29
29
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/telemetry-ingest.docblock.js.map [2m 5.10 kB[22m [2m│ gzip: 1.98 kB[22m
|
|
30
|
-
[34mℹ[39m [2mdist/[22morchestrator/buildAnswer.js.map [2m 5.
|
|
30
|
+
[34mℹ[39m [2mdist/[22morchestrator/buildAnswer.js.map [2m 5.07 kB[22m [2m│ gzip: 1.67 kB[22m
|
|
31
31
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/vscode-extension.docblock.js.map [2m 4.64 kB[22m [2m│ gzip: 1.68 kB[22m
|
|
32
32
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js.map [2m 4.24 kB[22m [2m│ gzip: 1.72 kB[22m
|
|
33
33
|
[34mℹ[39m [2mdist/[22mlibs/contracts/dist/docs/tech/telemetry-ingest.docblock.js [2m 4.21 kB[22m [2m│ gzip: 1.80 kB[22m
|
|
@@ -84,6 +84,6 @@ $ tsdown
|
|
|
84
84
|
[34mℹ[39m [2mdist/[22m[32m[1mseed/index.d.ts[22m[39m [2m 0.07 kB[22m [2m│ gzip: 0.07 kB[22m
|
|
85
85
|
[34mℹ[39m [2mdist/[22m[32m[1mdocs/index.d.ts[22m[39m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
86
86
|
[34mℹ[39m [2mdist/[22m[32m[1mdocs/policy-safe-knowledge-assistant.docblock.d.ts[22m[39m [2m 0.01 kB[22m [2m│ gzip: 0.03 kB[22m
|
|
87
|
-
[34mℹ[39m 78 files, total: 265.
|
|
88
|
-
[32m✔[39m Build complete in [
|
|
87
|
+
[34mℹ[39m 78 files, total: 265.30 kB
|
|
88
|
+
[32m✔[39m Build complete in [32m42323ms[39m
|
|
89
89
|
$ tsc --noEmit
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @lssm/example.policy-safe-knowledge-assistant
|
|
2
2
|
|
|
3
|
-
## 0.0.0-canary-
|
|
3
|
+
## 0.0.0-canary-20251220015515
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
@@ -9,17 +9,17 @@
|
|
|
9
9
|
### Patch Changes
|
|
10
10
|
|
|
11
11
|
- Updated dependencies [66a5dfd]
|
|
12
|
-
- @lssm/example.kb-update-pipeline@0.0.0-canary-
|
|
13
|
-
- @lssm/example.learning-patterns@0.0.0-canary-
|
|
14
|
-
- @lssm/example.locale-jurisdiction-gate@0.0.0-canary-
|
|
15
|
-
- @lssm/example.versioned-knowledge-base@0.0.0-canary-
|
|
16
|
-
- @lssm/lib.contracts@0.0.0-canary-
|
|
17
|
-
- @lssm/lib.feature-flags@0.0.0-canary-
|
|
18
|
-
- @lssm/lib.files@0.0.0-canary-
|
|
19
|
-
- @lssm/lib.identity-rbac@0.0.0-canary-
|
|
20
|
-
- @lssm/lib.jobs@0.0.0-canary-
|
|
21
|
-
- @lssm/lib.metering@0.0.0-canary-
|
|
22
|
-
- @lssm/lib.schema@0.0.0-canary-
|
|
23
|
-
- @lssm/module.audit-trail@0.0.0-canary-
|
|
24
|
-
- @lssm/module.learning-journey@0.0.0-canary-
|
|
25
|
-
- @lssm/module.notifications@0.0.0-canary-
|
|
12
|
+
- @lssm/example.kb-update-pipeline@0.0.0-canary-20251220015515
|
|
13
|
+
- @lssm/example.learning-patterns@0.0.0-canary-20251220015515
|
|
14
|
+
- @lssm/example.locale-jurisdiction-gate@0.0.0-canary-20251220015515
|
|
15
|
+
- @lssm/example.versioned-knowledge-base@0.0.0-canary-20251220015515
|
|
16
|
+
- @lssm/lib.contracts@0.0.0-canary-20251220015515
|
|
17
|
+
- @lssm/lib.feature-flags@0.0.0-canary-20251220015515
|
|
18
|
+
- @lssm/lib.files@0.0.0-canary-20251220015515
|
|
19
|
+
- @lssm/lib.identity-rbac@0.0.0-canary-20251220015515
|
|
20
|
+
- @lssm/lib.jobs@0.0.0-canary-20251220015515
|
|
21
|
+
- @lssm/lib.metering@0.0.0-canary-20251220015515
|
|
22
|
+
- @lssm/lib.schema@0.0.0-canary-20251220015515
|
|
23
|
+
- @lssm/module.audit-trail@0.0.0-canary-20251220015515
|
|
24
|
+
- @lssm/module.learning-journey@0.0.0-canary-20251220015515
|
|
25
|
+
- @lssm/module.notifications@0.0.0-canary-20251220015515
|
|
@@ -24,7 +24,7 @@ async function buildPolicySafeAnswer(input) {
|
|
|
24
24
|
};
|
|
25
25
|
const results = await input.kbSearch({
|
|
26
26
|
snapshotId: env.value.kbSnapshotId,
|
|
27
|
-
jurisdiction: env.value.regulatoryContext
|
|
27
|
+
jurisdiction: env.value.regulatoryContext?.jurisdiction ?? "UNKNOWN",
|
|
28
28
|
query: input.question
|
|
29
29
|
});
|
|
30
30
|
const citations = results.items.map((item) => ({
|
|
@@ -36,7 +36,7 @@ async function buildPolicySafeAnswer(input) {
|
|
|
36
36
|
}));
|
|
37
37
|
const draft = {
|
|
38
38
|
locale: env.value.locale,
|
|
39
|
-
jurisdiction: env.value.regulatoryContext
|
|
39
|
+
jurisdiction: env.value.regulatoryContext?.jurisdiction ?? "UNKNOWN",
|
|
40
40
|
allowedScope: env.value.allowedScope,
|
|
41
41
|
sections: [{
|
|
42
42
|
heading: "Answer (KB-derived)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildAnswer.js","names":["draft: AssistantAnswerIR"],"sources":["../../src/orchestrator/buildAnswer.ts"],"sourcesContent":["import {\n enforceAllowedScope,\n enforceCitations,\n validateEnvelope,\n} from '@lssm/example.locale-jurisdiction-gate/policy/guard';\n\ntype AllowedScope = 'education_only' | 'generic_info' | 'escalation_required';\n\nexport interface AssistantAnswerIR {\n locale: string;\n jurisdiction: string;\n allowedScope: AllowedScope;\n sections: { heading: string; body: string }[];\n citations: {\n kbSnapshotId: string;\n sourceType: string;\n sourceId: string;\n title?: string;\n excerpt?: string;\n }[];\n disclaimers?: string[];\n riskFlags?: string[];\n refused?: boolean;\n refusalReason?: string;\n}\n\nexport interface BuildAnswerInput {\n envelope: {\n traceId: string;\n locale: string;\n kbSnapshotId: string;\n allowedScope: AllowedScope;\n regulatoryContext: { jurisdiction: string };\n };\n question: string;\n kbSearch: (input: {\n snapshotId: string;\n jurisdiction: string;\n query: string;\n }) => Promise<{ items: { ruleVersionId: string; excerpt?: string }[] }>;\n}\n\n/**\n * Build a policy-safe assistant answer derived from KB search results.\n *\n * Deterministic: no LLM calls; if search yields no results, it refuses.\n */\nexport async function buildPolicySafeAnswer(\n input: BuildAnswerInput\n): Promise<AssistantAnswerIR> {\n const env = validateEnvelope(input.envelope);\n if (!env.ok) {\n return {\n locale: input.envelope.locale ?? 'en-GB',\n jurisdiction: input.envelope.regulatoryContext?.jurisdiction ?? 'UNKNOWN',\n allowedScope: input.envelope.allowedScope ?? 'education_only',\n sections: [{ heading: 'Request blocked', body: env.error.message }],\n citations: [],\n disclaimers: ['This system refuses to answer without a valid envelope.'],\n riskFlags: [env.error.code],\n refused: true,\n refusalReason: env.error.code,\n };\n }\n\n const results = await input.kbSearch({\n snapshotId: env.value.kbSnapshotId,\n jurisdiction: env.value.regulatoryContext
|
|
1
|
+
{"version":3,"file":"buildAnswer.js","names":["draft: AssistantAnswerIR"],"sources":["../../src/orchestrator/buildAnswer.ts"],"sourcesContent":["import {\n enforceAllowedScope,\n enforceCitations,\n validateEnvelope,\n} from '@lssm/example.locale-jurisdiction-gate/policy/guard';\n\ntype AllowedScope = 'education_only' | 'generic_info' | 'escalation_required';\n\nexport interface AssistantAnswerIR {\n locale: string;\n jurisdiction: string;\n allowedScope: AllowedScope;\n sections: { heading: string; body: string }[];\n citations: {\n kbSnapshotId: string;\n sourceType: string;\n sourceId: string;\n title?: string;\n excerpt?: string;\n }[];\n disclaimers?: string[];\n riskFlags?: string[];\n refused?: boolean;\n refusalReason?: string;\n}\n\nexport interface BuildAnswerInput {\n envelope: {\n traceId: string;\n locale: string;\n kbSnapshotId: string;\n allowedScope: AllowedScope;\n regulatoryContext: { jurisdiction: string };\n };\n question: string;\n kbSearch: (input: {\n snapshotId: string;\n jurisdiction: string;\n query: string;\n }) => Promise<{ items: { ruleVersionId: string; excerpt?: string }[] }>;\n}\n\n/**\n * Build a policy-safe assistant answer derived from KB search results.\n *\n * Deterministic: no LLM calls; if search yields no results, it refuses.\n */\nexport async function buildPolicySafeAnswer(\n input: BuildAnswerInput\n): Promise<AssistantAnswerIR> {\n const env = validateEnvelope(input.envelope);\n if (!env.ok) {\n return {\n locale: input.envelope.locale ?? 'en-GB',\n jurisdiction: input.envelope.regulatoryContext?.jurisdiction ?? 'UNKNOWN',\n allowedScope: input.envelope.allowedScope ?? 'education_only',\n sections: [{ heading: 'Request blocked', body: env.error.message }],\n citations: [],\n disclaimers: ['This system refuses to answer without a valid envelope.'],\n riskFlags: [env.error.code],\n refused: true,\n refusalReason: env.error.code,\n };\n }\n\n const results = await input.kbSearch({\n snapshotId: env.value.kbSnapshotId,\n jurisdiction: env.value.regulatoryContext?.jurisdiction ?? 'UNKNOWN',\n query: input.question,\n });\n\n const citations = results.items.map((item) => ({\n kbSnapshotId: env.value.kbSnapshotId,\n sourceType: 'ruleVersion',\n sourceId: item.ruleVersionId,\n title: 'Curated rule version',\n excerpt: item.excerpt,\n }));\n\n const draft: AssistantAnswerIR = {\n locale: env.value.locale,\n jurisdiction: env.value.regulatoryContext?.jurisdiction ?? 'UNKNOWN',\n allowedScope: env.value.allowedScope,\n sections: [\n {\n heading: 'Answer (KB-derived)',\n body:\n results.items.length > 0\n ? `This answer is derived from ${results.items.length} curated rule version(s) in the referenced snapshot.`\n : 'No curated knowledge found in the referenced snapshot.',\n },\n ],\n citations,\n disclaimers: ['Educational demo only.'],\n riskFlags: [],\n };\n\n const scope = enforceAllowedScope(env.value.allowedScope, draft);\n if (!scope.ok) {\n return {\n ...draft,\n sections: [{ heading: 'Escalation required', body: scope.error.message }],\n refused: true,\n refusalReason: scope.error.code,\n riskFlags: [...(draft.riskFlags ?? []), scope.error.code],\n };\n }\n\n const cited = enforceCitations(draft);\n if (!cited.ok) {\n return {\n ...draft,\n sections: [{ heading: 'Request blocked', body: cited.error.message }],\n citations: [],\n refused: true,\n refusalReason: cited.error.code,\n riskFlags: [...(draft.riskFlags ?? []), cited.error.code],\n };\n }\n\n return draft;\n}\n"],"mappings":";;;;;;;;AA+CA,eAAsB,sBACpB,OAC4B;CAC5B,MAAM,MAAM,iBAAiB,MAAM,SAAS;AAC5C,KAAI,CAAC,IAAI,GACP,QAAO;EACL,QAAQ,MAAM,SAAS,UAAU;EACjC,cAAc,MAAM,SAAS,mBAAmB,gBAAgB;EAChE,cAAc,MAAM,SAAS,gBAAgB;EAC7C,UAAU,CAAC;GAAE,SAAS;GAAmB,MAAM,IAAI,MAAM;GAAS,CAAC;EACnE,WAAW,EAAE;EACb,aAAa,CAAC,0DAA0D;EACxE,WAAW,CAAC,IAAI,MAAM,KAAK;EAC3B,SAAS;EACT,eAAe,IAAI,MAAM;EAC1B;CAGH,MAAM,UAAU,MAAM,MAAM,SAAS;EACnC,YAAY,IAAI,MAAM;EACtB,cAAc,IAAI,MAAM,mBAAmB,gBAAgB;EAC3D,OAAO,MAAM;EACd,CAAC;CAEF,MAAM,YAAY,QAAQ,MAAM,KAAK,UAAU;EAC7C,cAAc,IAAI,MAAM;EACxB,YAAY;EACZ,UAAU,KAAK;EACf,OAAO;EACP,SAAS,KAAK;EACf,EAAE;CAEH,MAAMA,QAA2B;EAC/B,QAAQ,IAAI,MAAM;EAClB,cAAc,IAAI,MAAM,mBAAmB,gBAAgB;EAC3D,cAAc,IAAI,MAAM;EACxB,UAAU,CACR;GACE,SAAS;GACT,MACE,QAAQ,MAAM,SAAS,IACnB,+BAA+B,QAAQ,MAAM,OAAO,wDACpD;GACP,CACF;EACD;EACA,aAAa,CAAC,yBAAyB;EACvC,WAAW,EAAE;EACd;CAED,MAAM,QAAQ,oBAAoB,IAAI,MAAM,cAAc,MAAM;AAChE,KAAI,CAAC,MAAM,GACT,QAAO;EACL,GAAG;EACH,UAAU,CAAC;GAAE,SAAS;GAAuB,MAAM,MAAM,MAAM;GAAS,CAAC;EACzE,SAAS;EACT,eAAe,MAAM,MAAM;EAC3B,WAAW,CAAC,GAAI,MAAM,aAAa,EAAE,EAAG,MAAM,MAAM,KAAK;EAC1D;CAGH,MAAM,QAAQ,iBAAiB,MAAM;AACrC,KAAI,CAAC,MAAM,GACT,QAAO;EACL,GAAG;EACH,UAAU,CAAC;GAAE,SAAS;GAAmB,MAAM,MAAM,MAAM;GAAS,CAAC;EACrE,WAAW,EAAE;EACb,SAAS;EACT,eAAe,MAAM,MAAM;EAC3B,WAAW,CAAC,GAAI,MAAM,aAAa,EAAE,EAAG,MAAM,MAAM,KAAK;EAC1D;AAGH,QAAO"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lssm/example.policy-safe-knowledge-assistant",
|
|
3
|
-
"version": "0.0.0-canary-
|
|
3
|
+
"version": "0.0.0-canary-20251220015515",
|
|
4
4
|
"description": "All-in-one template example: policy-safe knowledge assistant with locale/jurisdiction gating, versioned KB snapshots, HITL update pipeline, and learning hub.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,24 +31,24 @@
|
|
|
31
31
|
"test": "bun test"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@lssm/example.locale-jurisdiction-gate": "0.0.0-canary-
|
|
35
|
-
"@lssm/example.versioned-knowledge-base": "0.0.0-canary-
|
|
36
|
-
"@lssm/example.kb-update-pipeline": "0.0.0-canary-
|
|
37
|
-
"@lssm/example.learning-patterns": "0.0.0-canary-
|
|
38
|
-
"@lssm/lib.schema": "0.0.0-canary-
|
|
39
|
-
"@lssm/lib.contracts": "0.0.0-canary-
|
|
40
|
-
"@lssm/lib.identity-rbac": "0.0.0-canary-
|
|
41
|
-
"@lssm/lib.jobs": "0.0.0-canary-
|
|
42
|
-
"@lssm/lib.feature-flags": "0.0.0-canary-
|
|
43
|
-
"@lssm/lib.files": "0.0.0-canary-
|
|
44
|
-
"@lssm/lib.metering": "0.0.0-canary-
|
|
45
|
-
"@lssm/module.audit-trail": "0.0.0-canary-
|
|
46
|
-
"@lssm/module.notifications": "0.0.0-canary-
|
|
47
|
-
"@lssm/module.learning-journey": "0.0.0-canary-
|
|
34
|
+
"@lssm/example.locale-jurisdiction-gate": "0.0.0-canary-20251220015515",
|
|
35
|
+
"@lssm/example.versioned-knowledge-base": "0.0.0-canary-20251220015515",
|
|
36
|
+
"@lssm/example.kb-update-pipeline": "0.0.0-canary-20251220015515",
|
|
37
|
+
"@lssm/example.learning-patterns": "0.0.0-canary-20251220015515",
|
|
38
|
+
"@lssm/lib.schema": "0.0.0-canary-20251220015515",
|
|
39
|
+
"@lssm/lib.contracts": "0.0.0-canary-20251220015515",
|
|
40
|
+
"@lssm/lib.identity-rbac": "0.0.0-canary-20251220015515",
|
|
41
|
+
"@lssm/lib.jobs": "0.0.0-canary-20251220015515",
|
|
42
|
+
"@lssm/lib.feature-flags": "0.0.0-canary-20251220015515",
|
|
43
|
+
"@lssm/lib.files": "0.0.0-canary-20251220015515",
|
|
44
|
+
"@lssm/lib.metering": "0.0.0-canary-20251220015515",
|
|
45
|
+
"@lssm/module.audit-trail": "0.0.0-canary-20251220015515",
|
|
46
|
+
"@lssm/module.notifications": "0.0.0-canary-20251220015515",
|
|
47
|
+
"@lssm/module.learning-journey": "0.0.0-canary-20251220015515"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@lssm/tool.tsdown": "0.0.0-canary-
|
|
51
|
-
"@lssm/tool.typescript": "0.0.0-canary-
|
|
50
|
+
"@lssm/tool.tsdown": "0.0.0-canary-20251220015515",
|
|
51
|
+
"@lssm/tool.typescript": "0.0.0-canary-20251220015515",
|
|
52
52
|
"tsdown": "^0.18.1",
|
|
53
53
|
"typescript": "^5.9.3"
|
|
54
54
|
},
|
|
@@ -65,7 +65,7 @@ export async function buildPolicySafeAnswer(
|
|
|
65
65
|
|
|
66
66
|
const results = await input.kbSearch({
|
|
67
67
|
snapshotId: env.value.kbSnapshotId,
|
|
68
|
-
jurisdiction: env.value.regulatoryContext
|
|
68
|
+
jurisdiction: env.value.regulatoryContext?.jurisdiction ?? 'UNKNOWN',
|
|
69
69
|
query: input.question,
|
|
70
70
|
});
|
|
71
71
|
|
|
@@ -79,7 +79,7 @@ export async function buildPolicySafeAnswer(
|
|
|
79
79
|
|
|
80
80
|
const draft: AssistantAnswerIR = {
|
|
81
81
|
locale: env.value.locale,
|
|
82
|
-
jurisdiction: env.value.regulatoryContext
|
|
82
|
+
jurisdiction: env.value.regulatoryContext?.jurisdiction ?? 'UNKNOWN',
|
|
83
83
|
allowedScope: env.value.allowedScope,
|
|
84
84
|
sections: [
|
|
85
85
|
{
|