@contractspec/example.locale-jurisdiction-gate 3.7.17 → 3.7.19

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 (66) hide show
  1. package/.turbo/turbo-build.log +66 -66
  2. package/CHANGELOG.md +17 -0
  3. package/dist/browser/docs/index.js +3 -27
  4. package/dist/browser/docs/locale-jurisdiction-gate.docblock.js +3 -27
  5. package/dist/browser/entities/index.js +1 -110
  6. package/dist/browser/entities/models.js +1 -110
  7. package/dist/browser/events.js +1 -73
  8. package/dist/browser/example.js +1 -35
  9. package/dist/browser/forms/assistant-context.form.js +1 -213
  10. package/dist/browser/forms/index.js +1 -213
  11. package/dist/browser/handlers/demo.handlers.js +2 -152
  12. package/dist/browser/handlers/index.js +2 -152
  13. package/dist/browser/index.js +4 -844
  14. package/dist/browser/locale-jurisdiction-gate.feature.js +1 -105
  15. package/dist/browser/operations/assistant.js +1 -192
  16. package/dist/browser/operations/index.js +1 -192
  17. package/dist/browser/policy/assistant-gate.policy.js +1 -62
  18. package/dist/browser/policy/guard.js +2 -73
  19. package/dist/browser/policy/index.js +2 -134
  20. package/dist/browser/translations/assistant-gate.en-GB.translation.js +1 -48
  21. package/dist/browser/translations/assistant-gate.en-US.translation.js +1 -50
  22. package/dist/browser/translations/assistant-gate.fr-FR.translation.js +1 -52
  23. package/dist/browser/translations/index.js +1 -148
  24. package/dist/docs/index.js +3 -27
  25. package/dist/docs/locale-jurisdiction-gate.docblock.js +3 -27
  26. package/dist/entities/index.js +1 -110
  27. package/dist/entities/models.js +1 -110
  28. package/dist/events.js +1 -73
  29. package/dist/example.js +1 -35
  30. package/dist/forms/assistant-context.form.js +1 -213
  31. package/dist/forms/index.js +1 -213
  32. package/dist/handlers/demo.handlers.js +2 -152
  33. package/dist/handlers/index.js +2 -152
  34. package/dist/index.js +4 -844
  35. package/dist/locale-jurisdiction-gate.feature.js +1 -105
  36. package/dist/node/docs/index.js +3 -27
  37. package/dist/node/docs/locale-jurisdiction-gate.docblock.js +3 -27
  38. package/dist/node/entities/index.js +1 -110
  39. package/dist/node/entities/models.js +1 -110
  40. package/dist/node/events.js +1 -73
  41. package/dist/node/example.js +1 -35
  42. package/dist/node/forms/assistant-context.form.js +1 -213
  43. package/dist/node/forms/index.js +1 -213
  44. package/dist/node/handlers/demo.handlers.js +2 -152
  45. package/dist/node/handlers/index.js +2 -152
  46. package/dist/node/index.js +4 -844
  47. package/dist/node/locale-jurisdiction-gate.feature.js +1 -105
  48. package/dist/node/operations/assistant.js +1 -192
  49. package/dist/node/operations/index.js +1 -192
  50. package/dist/node/policy/assistant-gate.policy.js +1 -62
  51. package/dist/node/policy/guard.js +2 -73
  52. package/dist/node/policy/index.js +2 -134
  53. package/dist/node/translations/assistant-gate.en-GB.translation.js +1 -48
  54. package/dist/node/translations/assistant-gate.en-US.translation.js +1 -50
  55. package/dist/node/translations/assistant-gate.fr-FR.translation.js +1 -52
  56. package/dist/node/translations/index.js +1 -148
  57. package/dist/operations/assistant.js +1 -192
  58. package/dist/operations/index.js +1 -192
  59. package/dist/policy/assistant-gate.policy.js +1 -62
  60. package/dist/policy/guard.js +2 -73
  61. package/dist/policy/index.js +2 -134
  62. package/dist/translations/assistant-gate.en-GB.translation.js +1 -48
  63. package/dist/translations/assistant-gate.en-US.translation.js +1 -50
  64. package/dist/translations/assistant-gate.fr-FR.translation.js +1 -52
  65. package/dist/translations/index.js +1 -148
  66. package/package.json +5 -5
@@ -2,81 +2,81 @@ $ contractspec-bun-build prebuild
2
2
  $ bun run build:bundle && bun run build:types
3
3
  $ contractspec-bun-build transpile
4
4
  [contractspec-bun-build] transpile target=bun root=src entries=22 noBundle=false
5
- Bundled 22 modules in 51ms
5
+ Bundled 22 modules in 36ms
6
6
 
7
- docs/index.js 1.64 KB (entry point)
8
- ./index.js 30.25 KB (entry point)
9
- policy/index.js 4.12 KB (entry point)
7
+ docs/index.js 1.44 KB (entry point)
8
+ ./index.js 21.50 KB (entry point)
9
+ policy/index.js 2.87 KB (entry point)
10
10
  policy/types.js 8 bytes (entry point)
11
- translations/index.js 5.92 KB (entry point)
12
- translations/assistant-gate.en-GB.translation.js 1.85 KB (entry point)
13
- translations/assistant-gate.en-US.translation.js 2.0 KB (entry point)
14
- translations/assistant-gate.fr-FR.translation.js 1.94 KB (entry point)
15
- handlers/index.js 4.45 KB (entry point)
16
- handlers/demo.handlers.js 4.45 KB (entry point)
17
- ./locale-jurisdiction-gate.feature.js 3.48 KB (entry point)
18
- operations/index.js 6.95 KB (entry point)
19
- operations/assistant.js 6.95 KB (entry point)
20
- policy/assistant-gate.policy.js 2.10 KB (entry point)
21
- policy/guard.js 2.0 KB (entry point)
22
- docs/locale-jurisdiction-gate.docblock.js 1.64 KB (entry point)
23
- entities/index.js 3.89 KB (entry point)
24
- ./events.js 2.97 KB (entry point)
25
- ./example.js 1.1 KB (entry point)
26
- forms/index.js 7.15 KB (entry point)
27
- forms/assistant-context.form.js 7.15 KB (entry point)
28
- entities/models.js 3.89 KB (entry point)
11
+ translations/index.js 4.65 KB (entry point)
12
+ translations/assistant-gate.en-GB.translation.js 1.49 KB (entry point)
13
+ translations/assistant-gate.en-US.translation.js 1.64 KB (entry point)
14
+ translations/assistant-gate.fr-FR.translation.js 1.56 KB (entry point)
15
+ handlers/index.js 2.68 KB (entry point)
16
+ handlers/demo.handlers.js 2.68 KB (entry point)
17
+ ./locale-jurisdiction-gate.feature.js 2.67 KB (entry point)
18
+ operations/index.js 4.60 KB (entry point)
19
+ operations/assistant.js 4.60 KB (entry point)
20
+ policy/assistant-gate.policy.js 1.64 KB (entry point)
21
+ policy/guard.js 1.25 KB (entry point)
22
+ docs/locale-jurisdiction-gate.docblock.js 1.44 KB (entry point)
23
+ entities/index.js 2.52 KB (entry point)
24
+ ./events.js 2.0 KB (entry point)
25
+ ./example.js 0.84 KB (entry point)
26
+ forms/index.js 4.71 KB (entry point)
27
+ forms/assistant-context.form.js 4.71 KB (entry point)
28
+ entities/models.js 2.52 KB (entry point)
29
29
 
30
30
  [contractspec-bun-build] transpile target=node root=src entries=22 noBundle=false
31
- Bundled 22 modules in 67ms
31
+ Bundled 22 modules in 19ms
32
32
 
33
- docs/index.js 1.63 KB (entry point)
34
- ./index.js 30.21 KB (entry point)
35
- policy/index.js 4.11 KB (entry point)
33
+ docs/index.js 1.43 KB (entry point)
34
+ ./index.js 21.45 KB (entry point)
35
+ policy/index.js 2.86 KB (entry point)
36
36
  policy/types.js 0 KB (entry point)
37
- translations/index.js 5.89 KB (entry point)
38
- translations/assistant-gate.en-GB.translation.js 1.84 KB (entry point)
39
- translations/assistant-gate.en-US.translation.js 2.0 KB (entry point)
40
- translations/assistant-gate.fr-FR.translation.js 1.90 KB (entry point)
41
- handlers/index.js 4.44 KB (entry point)
42
- handlers/demo.handlers.js 4.44 KB (entry point)
43
- ./locale-jurisdiction-gate.feature.js 3.47 KB (entry point)
44
- operations/index.js 6.94 KB (entry point)
45
- operations/assistant.js 6.94 KB (entry point)
46
- policy/assistant-gate.policy.js 2.1 KB (entry point)
47
- policy/guard.js 2.0 KB (entry point)
48
- docs/locale-jurisdiction-gate.docblock.js 1.63 KB (entry point)
49
- entities/index.js 3.88 KB (entry point)
50
- ./events.js 2.96 KB (entry point)
51
- ./example.js 1.1 KB (entry point)
52
- forms/index.js 7.14 KB (entry point)
53
- forms/assistant-context.form.js 7.14 KB (entry point)
54
- entities/models.js 3.88 KB (entry point)
37
+ translations/index.js 4.62 KB (entry point)
38
+ translations/assistant-gate.en-GB.translation.js 1.48 KB (entry point)
39
+ translations/assistant-gate.en-US.translation.js 1.63 KB (entry point)
40
+ translations/assistant-gate.fr-FR.translation.js 1.52 KB (entry point)
41
+ handlers/index.js 2.67 KB (entry point)
42
+ handlers/demo.handlers.js 2.67 KB (entry point)
43
+ ./locale-jurisdiction-gate.feature.js 2.66 KB (entry point)
44
+ operations/index.js 4.60 KB (entry point)
45
+ operations/assistant.js 4.60 KB (entry point)
46
+ policy/assistant-gate.policy.js 1.63 KB (entry point)
47
+ policy/guard.js 1.24 KB (entry point)
48
+ docs/locale-jurisdiction-gate.docblock.js 1.43 KB (entry point)
49
+ entities/index.js 2.51 KB (entry point)
50
+ ./events.js 2.0 KB (entry point)
51
+ ./example.js 0.83 KB (entry point)
52
+ forms/index.js 4.70 KB (entry point)
53
+ forms/assistant-context.form.js 4.70 KB (entry point)
54
+ entities/models.js 2.51 KB (entry point)
55
55
 
56
56
  [contractspec-bun-build] transpile target=browser root=src entries=22 noBundle=false
57
- Bundled 22 modules in 52ms
57
+ Bundled 22 modules in 43ms
58
58
 
59
- docs/index.js 1.63 KB (entry point)
60
- ./index.js 30.21 KB (entry point)
61
- policy/index.js 4.11 KB (entry point)
59
+ docs/index.js 1.43 KB (entry point)
60
+ ./index.js 21.45 KB (entry point)
61
+ policy/index.js 2.86 KB (entry point)
62
62
  policy/types.js 0 KB (entry point)
63
- translations/index.js 5.89 KB (entry point)
64
- translations/assistant-gate.en-GB.translation.js 1.84 KB (entry point)
65
- translations/assistant-gate.en-US.translation.js 2.0 KB (entry point)
66
- translations/assistant-gate.fr-FR.translation.js 1.90 KB (entry point)
67
- handlers/index.js 4.44 KB (entry point)
68
- handlers/demo.handlers.js 4.44 KB (entry point)
69
- ./locale-jurisdiction-gate.feature.js 3.47 KB (entry point)
70
- operations/index.js 6.94 KB (entry point)
71
- operations/assistant.js 6.94 KB (entry point)
72
- policy/assistant-gate.policy.js 2.1 KB (entry point)
73
- policy/guard.js 2.0 KB (entry point)
74
- docs/locale-jurisdiction-gate.docblock.js 1.63 KB (entry point)
75
- entities/index.js 3.88 KB (entry point)
76
- ./events.js 2.96 KB (entry point)
77
- ./example.js 1.1 KB (entry point)
78
- forms/index.js 7.14 KB (entry point)
79
- forms/assistant-context.form.js 7.14 KB (entry point)
80
- entities/models.js 3.88 KB (entry point)
63
+ translations/index.js 4.62 KB (entry point)
64
+ translations/assistant-gate.en-GB.translation.js 1.48 KB (entry point)
65
+ translations/assistant-gate.en-US.translation.js 1.63 KB (entry point)
66
+ translations/assistant-gate.fr-FR.translation.js 1.52 KB (entry point)
67
+ handlers/index.js 2.67 KB (entry point)
68
+ handlers/demo.handlers.js 2.67 KB (entry point)
69
+ ./locale-jurisdiction-gate.feature.js 2.66 KB (entry point)
70
+ operations/index.js 4.60 KB (entry point)
71
+ operations/assistant.js 4.60 KB (entry point)
72
+ policy/assistant-gate.policy.js 1.63 KB (entry point)
73
+ policy/guard.js 1.24 KB (entry point)
74
+ docs/locale-jurisdiction-gate.docblock.js 1.43 KB (entry point)
75
+ entities/index.js 2.51 KB (entry point)
76
+ ./events.js 2.0 KB (entry point)
77
+ ./example.js 0.83 KB (entry point)
78
+ forms/index.js 4.70 KB (entry point)
79
+ forms/assistant-context.form.js 4.70 KB (entry point)
80
+ entities/models.js 2.51 KB (entry point)
81
81
 
82
82
  $ contractspec-bun-build types
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @contractspec/example.locale-jurisdiction-gate
2
2
 
3
+ ## 3.7.19
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies because of Expand ContractSpec authoring with preset-driven workspace setup, shell completion, packaged workspace schema artifacts, and richer form and UI surfaces across the CLI, editors, and shared runtimes.
8
+ - @contractspec/lib.contracts-spec@5.3.0
9
+
10
+ ## 3.7.18
11
+
12
+ ### Patch Changes
13
+
14
+ - chore: auto-bump internal dependents
15
+ - Updated dependencies because of Introduce the Builder v3 control plane as a governed authoring layer over external execution providers.
16
+ - Updated dependencies because of Implement ContractSpec Connect as a first-class spec, runtime, and CLI workflow.
17
+ - @contractspec/lib.contracts-spec@5.2.0
18
+ - @contractspec/lib.schema@3.7.14
19
+
3
20
  ## 3.7.17
4
21
 
5
22
  ### Patch Changes
@@ -1,32 +1,11 @@
1
- // src/docs/locale-jurisdiction-gate.docblock.ts
2
- import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
3
- var docBlocks = [
4
- {
5
- id: "docs.examples.locale-jurisdiction-gate.goal",
6
- title: "Locale/Jurisdiction Gate — Goal",
7
- summary: "Fail-closed gate that forces locale + jurisdiction + kbSnapshotId + allowedScope for assistant calls.",
8
- kind: "goal",
9
- visibility: "public",
10
- route: "/docs/examples/locale-jurisdiction-gate/goal",
11
- tags: ["assistant", "policy", "locale", "jurisdiction", "knowledge"],
12
- body: `## Why it matters
1
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.examples.locale-jurisdiction-gate.goal",title:"Locale/Jurisdiction Gate — Goal",summary:"Fail-closed gate that forces locale + jurisdiction + kbSnapshotId + allowedScope for assistant calls.",kind:"goal",visibility:"public",route:"/docs/examples/locale-jurisdiction-gate/goal",tags:["assistant","policy","locale","jurisdiction","knowledge"],body:`## Why it matters
13
2
  - Forces all assistant behavior to be bound to explicit inputs (no guessing).
14
3
  - Requires KB snapshot citations to make answers traceable and regenerable.
15
4
 
16
5
  ## Guardrails
17
6
  - Missing locale/jurisdiction/snapshot/scope => refuse (structured).
18
7
  - Missing citations => refuse.
19
- - Scope violations under education_only => refuse/escalate.`
20
- },
21
- {
22
- id: "docs.examples.locale-jurisdiction-gate.reference",
23
- title: "Locale/Jurisdiction Gate — Reference",
24
- summary: "Contracts, models, and events exposed by the gate example.",
25
- kind: "reference",
26
- visibility: "public",
27
- route: "/docs/examples/locale-jurisdiction-gate",
28
- tags: ["assistant", "policy", "reference"],
29
- body: `## Contracts
8
+ - Scope violations under education_only => refuse/escalate.`},{id:"docs.examples.locale-jurisdiction-gate.reference",title:"Locale/Jurisdiction Gate — Reference",summary:"Contracts, models, and events exposed by the gate example.",kind:"reference",visibility:"public",route:"/docs/examples/locale-jurisdiction-gate",tags:["assistant","policy","reference"],body:`## Contracts
30
9
  - assistant.answer (v1)
31
10
  - assistant.explainConcept (v1)
32
11
 
@@ -37,7 +16,4 @@ var docBlocks = [
37
16
  ## Events
38
17
  - assistant.answer.requested
39
18
  - assistant.answer.blocked
40
- - assistant.answer.delivered`
41
- }
42
- ];
43
- registerDocBlocks(docBlocks);
19
+ - assistant.answer.delivered`}];f(h);
@@ -1,32 +1,11 @@
1
- // src/docs/locale-jurisdiction-gate.docblock.ts
2
- import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
3
- var docBlocks = [
4
- {
5
- id: "docs.examples.locale-jurisdiction-gate.goal",
6
- title: "Locale/Jurisdiction Gate — Goal",
7
- summary: "Fail-closed gate that forces locale + jurisdiction + kbSnapshotId + allowedScope for assistant calls.",
8
- kind: "goal",
9
- visibility: "public",
10
- route: "/docs/examples/locale-jurisdiction-gate/goal",
11
- tags: ["assistant", "policy", "locale", "jurisdiction", "knowledge"],
12
- body: `## Why it matters
1
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.examples.locale-jurisdiction-gate.goal",title:"Locale/Jurisdiction Gate — Goal",summary:"Fail-closed gate that forces locale + jurisdiction + kbSnapshotId + allowedScope for assistant calls.",kind:"goal",visibility:"public",route:"/docs/examples/locale-jurisdiction-gate/goal",tags:["assistant","policy","locale","jurisdiction","knowledge"],body:`## Why it matters
13
2
  - Forces all assistant behavior to be bound to explicit inputs (no guessing).
14
3
  - Requires KB snapshot citations to make answers traceable and regenerable.
15
4
 
16
5
  ## Guardrails
17
6
  - Missing locale/jurisdiction/snapshot/scope => refuse (structured).
18
7
  - Missing citations => refuse.
19
- - Scope violations under education_only => refuse/escalate.`
20
- },
21
- {
22
- id: "docs.examples.locale-jurisdiction-gate.reference",
23
- title: "Locale/Jurisdiction Gate — Reference",
24
- summary: "Contracts, models, and events exposed by the gate example.",
25
- kind: "reference",
26
- visibility: "public",
27
- route: "/docs/examples/locale-jurisdiction-gate",
28
- tags: ["assistant", "policy", "reference"],
29
- body: `## Contracts
8
+ - Scope violations under education_only => refuse/escalate.`},{id:"docs.examples.locale-jurisdiction-gate.reference",title:"Locale/Jurisdiction Gate — Reference",summary:"Contracts, models, and events exposed by the gate example.",kind:"reference",visibility:"public",route:"/docs/examples/locale-jurisdiction-gate",tags:["assistant","policy","reference"],body:`## Contracts
30
9
  - assistant.answer (v1)
31
10
  - assistant.explainConcept (v1)
32
11
 
@@ -37,7 +16,4 @@ var docBlocks = [
37
16
  ## Events
38
17
  - assistant.answer.requested
39
18
  - assistant.answer.blocked
40
- - assistant.answer.delivered`
41
- }
42
- ];
43
- registerDocBlocks(docBlocks);
19
+ - assistant.answer.delivered`}];f(h);
@@ -1,110 +1 @@
1
- // src/entities/models.ts
2
- import {
3
- defineEnum,
4
- defineSchemaModel,
5
- ScalarTypeEnum
6
- } from "@contractspec/lib.schema";
7
- var AllowedScopeEnum = defineEnum("AllowedScope", [
8
- "education_only",
9
- "generic_info",
10
- "escalation_required"
11
- ]);
12
- var UserProfileModel = defineSchemaModel({
13
- name: "UserProfile",
14
- description: "User profile inputs used to derive regulatory context.",
15
- fields: {
16
- preferredLocale: {
17
- type: ScalarTypeEnum.String_unsecure(),
18
- isOptional: true
19
- },
20
- residencyCountry: {
21
- type: ScalarTypeEnum.String_unsecure(),
22
- isOptional: true
23
- },
24
- taxResidenceCountry: {
25
- type: ScalarTypeEnum.String_unsecure(),
26
- isOptional: true
27
- },
28
- clientType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
29
- }
30
- });
31
- var RegulatoryContextModel = defineSchemaModel({
32
- name: "RegulatoryContext",
33
- description: "Explicit regulatory context (no guessing).",
34
- fields: {
35
- jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
36
- region: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
37
- clientType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
38
- allowedScope: { type: AllowedScopeEnum, isOptional: false }
39
- }
40
- });
41
- var LLMCallEnvelopeModel = defineSchemaModel({
42
- name: "LLMCallEnvelope",
43
- description: "Mandatory envelope for assistant calls. All fields are explicit and required for policy gating.",
44
- fields: {
45
- traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
46
- locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
47
- regulatoryContext: { type: RegulatoryContextModel, isOptional: false },
48
- kbSnapshotId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
49
- allowedScope: { type: AllowedScopeEnum, isOptional: false }
50
- }
51
- });
52
- var AssistantCitationModel = defineSchemaModel({
53
- name: "AssistantCitation",
54
- description: "Citation referencing a KB snapshot + a specific item within it.",
55
- fields: {
56
- kbSnapshotId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
57
- sourceType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
58
- sourceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
59
- title: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
60
- excerpt: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
61
- }
62
- });
63
- var AssistantAnswerSectionModel = defineSchemaModel({
64
- name: "AssistantAnswerSection",
65
- description: "Structured answer section.",
66
- fields: {
67
- heading: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
68
- body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
69
- }
70
- });
71
- var AssistantAnswerIRModel = defineSchemaModel({
72
- name: "AssistantAnswerIR",
73
- description: "Structured assistant answer with mandatory citations and explicit locale/jurisdiction.",
74
- fields: {
75
- locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
76
- jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
77
- allowedScope: { type: AllowedScopeEnum, isOptional: false },
78
- sections: {
79
- type: AssistantAnswerSectionModel,
80
- isArray: true,
81
- isOptional: false
82
- },
83
- citations: {
84
- type: AssistantCitationModel,
85
- isArray: true,
86
- isOptional: false
87
- },
88
- disclaimers: {
89
- type: ScalarTypeEnum.String_unsecure(),
90
- isArray: true,
91
- isOptional: true
92
- },
93
- riskFlags: {
94
- type: ScalarTypeEnum.String_unsecure(),
95
- isArray: true,
96
- isOptional: true
97
- },
98
- refused: { type: ScalarTypeEnum.Boolean(), isOptional: true },
99
- refusalReason: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
100
- }
101
- });
102
- export {
103
- UserProfileModel,
104
- RegulatoryContextModel,
105
- LLMCallEnvelopeModel,
106
- AssistantCitationModel,
107
- AssistantAnswerSectionModel,
108
- AssistantAnswerIRModel,
109
- AllowedScopeEnum
110
- };
1
+ import{defineEnum as n,defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";var i=n("AllowedScope",["education_only","generic_info","escalation_required"]),l=t({name:"UserProfile",description:"User profile inputs used to derive regulatory context.",fields:{preferredLocale:{type:e.String_unsecure(),isOptional:!0},residencyCountry:{type:e.String_unsecure(),isOptional:!0},taxResidenceCountry:{type:e.String_unsecure(),isOptional:!0},clientType:{type:e.String_unsecure(),isOptional:!0}}}),s=t({name:"RegulatoryContext",description:"Explicit regulatory context (no guessing).",fields:{jurisdiction:{type:e.String_unsecure(),isOptional:!1},region:{type:e.String_unsecure(),isOptional:!0},clientType:{type:e.String_unsecure(),isOptional:!0},allowedScope:{type:i,isOptional:!1}}}),p=t({name:"LLMCallEnvelope",description:"Mandatory envelope for assistant calls. All fields are explicit and required for policy gating.",fields:{traceId:{type:e.String_unsecure(),isOptional:!1},locale:{type:e.String_unsecure(),isOptional:!1},regulatoryContext:{type:s,isOptional:!1},kbSnapshotId:{type:e.String_unsecure(),isOptional:!1},allowedScope:{type:i,isOptional:!1}}}),r=t({name:"AssistantCitation",description:"Citation referencing a KB snapshot + a specific item within it.",fields:{kbSnapshotId:{type:e.String_unsecure(),isOptional:!1},sourceType:{type:e.String_unsecure(),isOptional:!1},sourceId:{type:e.String_unsecure(),isOptional:!1},title:{type:e.String_unsecure(),isOptional:!0},excerpt:{type:e.String_unsecure(),isOptional:!0}}}),o=t({name:"AssistantAnswerSection",description:"Structured answer section.",fields:{heading:{type:e.String_unsecure(),isOptional:!1},body:{type:e.String_unsecure(),isOptional:!1}}}),u=t({name:"AssistantAnswerIR",description:"Structured assistant answer with mandatory citations and explicit locale/jurisdiction.",fields:{locale:{type:e.String_unsecure(),isOptional:!1},jurisdiction:{type:e.String_unsecure(),isOptional:!1},allowedScope:{type:i,isOptional:!1},sections:{type:o,isArray:!0,isOptional:!1},citations:{type:r,isArray:!0,isOptional:!1},disclaimers:{type:e.String_unsecure(),isArray:!0,isOptional:!0},riskFlags:{type:e.String_unsecure(),isArray:!0,isOptional:!0},refused:{type:e.Boolean(),isOptional:!0},refusalReason:{type:e.String_unsecure(),isOptional:!0}}});export{l as UserProfileModel,s as RegulatoryContextModel,p as LLMCallEnvelopeModel,r as AssistantCitationModel,o as AssistantAnswerSectionModel,u as AssistantAnswerIRModel,i as AllowedScopeEnum};
@@ -1,110 +1 @@
1
- // src/entities/models.ts
2
- import {
3
- defineEnum,
4
- defineSchemaModel,
5
- ScalarTypeEnum
6
- } from "@contractspec/lib.schema";
7
- var AllowedScopeEnum = defineEnum("AllowedScope", [
8
- "education_only",
9
- "generic_info",
10
- "escalation_required"
11
- ]);
12
- var UserProfileModel = defineSchemaModel({
13
- name: "UserProfile",
14
- description: "User profile inputs used to derive regulatory context.",
15
- fields: {
16
- preferredLocale: {
17
- type: ScalarTypeEnum.String_unsecure(),
18
- isOptional: true
19
- },
20
- residencyCountry: {
21
- type: ScalarTypeEnum.String_unsecure(),
22
- isOptional: true
23
- },
24
- taxResidenceCountry: {
25
- type: ScalarTypeEnum.String_unsecure(),
26
- isOptional: true
27
- },
28
- clientType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
29
- }
30
- });
31
- var RegulatoryContextModel = defineSchemaModel({
32
- name: "RegulatoryContext",
33
- description: "Explicit regulatory context (no guessing).",
34
- fields: {
35
- jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
36
- region: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
37
- clientType: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
38
- allowedScope: { type: AllowedScopeEnum, isOptional: false }
39
- }
40
- });
41
- var LLMCallEnvelopeModel = defineSchemaModel({
42
- name: "LLMCallEnvelope",
43
- description: "Mandatory envelope for assistant calls. All fields are explicit and required for policy gating.",
44
- fields: {
45
- traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
46
- locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
47
- regulatoryContext: { type: RegulatoryContextModel, isOptional: false },
48
- kbSnapshotId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
49
- allowedScope: { type: AllowedScopeEnum, isOptional: false }
50
- }
51
- });
52
- var AssistantCitationModel = defineSchemaModel({
53
- name: "AssistantCitation",
54
- description: "Citation referencing a KB snapshot + a specific item within it.",
55
- fields: {
56
- kbSnapshotId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
57
- sourceType: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
58
- sourceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
59
- title: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
60
- excerpt: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
61
- }
62
- });
63
- var AssistantAnswerSectionModel = defineSchemaModel({
64
- name: "AssistantAnswerSection",
65
- description: "Structured answer section.",
66
- fields: {
67
- heading: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
68
- body: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
69
- }
70
- });
71
- var AssistantAnswerIRModel = defineSchemaModel({
72
- name: "AssistantAnswerIR",
73
- description: "Structured assistant answer with mandatory citations and explicit locale/jurisdiction.",
74
- fields: {
75
- locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
76
- jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
77
- allowedScope: { type: AllowedScopeEnum, isOptional: false },
78
- sections: {
79
- type: AssistantAnswerSectionModel,
80
- isArray: true,
81
- isOptional: false
82
- },
83
- citations: {
84
- type: AssistantCitationModel,
85
- isArray: true,
86
- isOptional: false
87
- },
88
- disclaimers: {
89
- type: ScalarTypeEnum.String_unsecure(),
90
- isArray: true,
91
- isOptional: true
92
- },
93
- riskFlags: {
94
- type: ScalarTypeEnum.String_unsecure(),
95
- isArray: true,
96
- isOptional: true
97
- },
98
- refused: { type: ScalarTypeEnum.Boolean(), isOptional: true },
99
- refusalReason: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
100
- }
101
- });
102
- export {
103
- UserProfileModel,
104
- RegulatoryContextModel,
105
- LLMCallEnvelopeModel,
106
- AssistantCitationModel,
107
- AssistantAnswerSectionModel,
108
- AssistantAnswerIRModel,
109
- AllowedScopeEnum
110
- };
1
+ import{defineEnum as n,defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";var i=n("AllowedScope",["education_only","generic_info","escalation_required"]),l=t({name:"UserProfile",description:"User profile inputs used to derive regulatory context.",fields:{preferredLocale:{type:e.String_unsecure(),isOptional:!0},residencyCountry:{type:e.String_unsecure(),isOptional:!0},taxResidenceCountry:{type:e.String_unsecure(),isOptional:!0},clientType:{type:e.String_unsecure(),isOptional:!0}}}),s=t({name:"RegulatoryContext",description:"Explicit regulatory context (no guessing).",fields:{jurisdiction:{type:e.String_unsecure(),isOptional:!1},region:{type:e.String_unsecure(),isOptional:!0},clientType:{type:e.String_unsecure(),isOptional:!0},allowedScope:{type:i,isOptional:!1}}}),p=t({name:"LLMCallEnvelope",description:"Mandatory envelope for assistant calls. All fields are explicit and required for policy gating.",fields:{traceId:{type:e.String_unsecure(),isOptional:!1},locale:{type:e.String_unsecure(),isOptional:!1},regulatoryContext:{type:s,isOptional:!1},kbSnapshotId:{type:e.String_unsecure(),isOptional:!1},allowedScope:{type:i,isOptional:!1}}}),r=t({name:"AssistantCitation",description:"Citation referencing a KB snapshot + a specific item within it.",fields:{kbSnapshotId:{type:e.String_unsecure(),isOptional:!1},sourceType:{type:e.String_unsecure(),isOptional:!1},sourceId:{type:e.String_unsecure(),isOptional:!1},title:{type:e.String_unsecure(),isOptional:!0},excerpt:{type:e.String_unsecure(),isOptional:!0}}}),o=t({name:"AssistantAnswerSection",description:"Structured answer section.",fields:{heading:{type:e.String_unsecure(),isOptional:!1},body:{type:e.String_unsecure(),isOptional:!1}}}),u=t({name:"AssistantAnswerIR",description:"Structured assistant answer with mandatory citations and explicit locale/jurisdiction.",fields:{locale:{type:e.String_unsecure(),isOptional:!1},jurisdiction:{type:e.String_unsecure(),isOptional:!1},allowedScope:{type:i,isOptional:!1},sections:{type:o,isArray:!0,isOptional:!1},citations:{type:r,isArray:!0,isOptional:!1},disclaimers:{type:e.String_unsecure(),isArray:!0,isOptional:!0},riskFlags:{type:e.String_unsecure(),isArray:!0,isOptional:!0},refused:{type:e.Boolean(),isOptional:!0},refusalReason:{type:e.String_unsecure(),isOptional:!0}}});export{l as UserProfileModel,s as RegulatoryContextModel,p as LLMCallEnvelopeModel,r as AssistantCitationModel,o as AssistantAnswerSectionModel,u as AssistantAnswerIRModel,i as AllowedScopeEnum};
@@ -1,73 +1 @@
1
- // src/events.ts
2
- import { defineEvent } from "@contractspec/lib.contracts-spec";
3
- import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
4
- var AssistantAnswerRequestedPayload = defineSchemaModel({
5
- name: "AssistantAnswerRequestedPayload",
6
- description: "Emitted when an assistant answer is requested (pre-gate).",
7
- fields: {
8
- traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
9
- locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
10
- jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
- kbSnapshotId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
- allowedScope: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
13
- }
14
- });
15
- var AssistantAnswerRequestedEvent = defineEvent({
16
- meta: {
17
- key: "assistant.answer.requested",
18
- version: "1.0.0",
19
- description: "Assistant answer requested (policy gate will run).",
20
- stability: "experimental",
21
- owners: ["@examples"],
22
- tags: ["assistant", "policy"]
23
- },
24
- payload: AssistantAnswerRequestedPayload
25
- });
26
- var AssistantAnswerBlockedPayload = defineSchemaModel({
27
- name: "AssistantAnswerBlockedPayload",
28
- description: "Emitted when a request is blocked by the gate.",
29
- fields: {
30
- traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
31
- reasonCode: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
32
- reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
33
- }
34
- });
35
- var AssistantAnswerBlockedEvent = defineEvent({
36
- meta: {
37
- key: "assistant.answer.blocked",
38
- version: "1.0.0",
39
- description: "Assistant answer blocked (fail-closed).",
40
- stability: "experimental",
41
- owners: ["@examples"],
42
- tags: ["assistant", "policy", "blocked"]
43
- },
44
- payload: AssistantAnswerBlockedPayload
45
- });
46
- var AssistantAnswerDeliveredPayload = defineSchemaModel({
47
- name: "AssistantAnswerDeliveredPayload",
48
- description: "Emitted when a structured, cited answer is delivered.",
49
- fields: {
50
- traceId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
51
- locale: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
52
- jurisdiction: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
53
- kbSnapshotId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
54
- allowedScope: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
55
- citationsCount: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false }
56
- }
57
- });
58
- var AssistantAnswerDeliveredEvent = defineEvent({
59
- meta: {
60
- key: "assistant.answer.delivered",
61
- version: "1.0.0",
62
- description: "Assistant answer delivered (must include KB snapshot citations).",
63
- stability: "experimental",
64
- owners: ["@examples"],
65
- tags: ["assistant", "policy", "delivered"]
66
- },
67
- payload: AssistantAnswerDeliveredPayload
68
- });
69
- export {
70
- AssistantAnswerRequestedEvent,
71
- AssistantAnswerDeliveredEvent,
72
- AssistantAnswerBlockedEvent
73
- };
1
+ import{defineEvent as j}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as x,ScalarTypeEnum as g}from"@contractspec/lib.schema";var z=x({name:"AssistantAnswerRequestedPayload",description:"Emitted when an assistant answer is requested (pre-gate).",fields:{traceId:{type:g.String_unsecure(),isOptional:!1},locale:{type:g.String_unsecure(),isOptional:!1},jurisdiction:{type:g.String_unsecure(),isOptional:!1},kbSnapshotId:{type:g.String_unsecure(),isOptional:!1},allowedScope:{type:g.String_unsecure(),isOptional:!1}}}),I=j({meta:{key:"assistant.answer.requested",version:"1.0.0",description:"Assistant answer requested (policy gate will run).",stability:"experimental",owners:["@examples"],tags:["assistant","policy"]},payload:z}),C=x({name:"AssistantAnswerBlockedPayload",description:"Emitted when a request is blocked by the gate.",fields:{traceId:{type:g.String_unsecure(),isOptional:!1},reasonCode:{type:g.String_unsecure(),isOptional:!1},reason:{type:g.String_unsecure(),isOptional:!1}}}),J=j({meta:{key:"assistant.answer.blocked",version:"1.0.0",description:"Assistant answer blocked (fail-closed).",stability:"experimental",owners:["@examples"],tags:["assistant","policy","blocked"]},payload:C}),F=x({name:"AssistantAnswerDeliveredPayload",description:"Emitted when a structured, cited answer is delivered.",fields:{traceId:{type:g.String_unsecure(),isOptional:!1},locale:{type:g.String_unsecure(),isOptional:!1},jurisdiction:{type:g.String_unsecure(),isOptional:!1},kbSnapshotId:{type:g.String_unsecure(),isOptional:!1},allowedScope:{type:g.String_unsecure(),isOptional:!1},citationsCount:{type:g.Int_unsecure(),isOptional:!1}}}),K=j({meta:{key:"assistant.answer.delivered",version:"1.0.0",description:"Assistant answer delivered (must include KB snapshot citations).",stability:"experimental",owners:["@examples"],tags:["assistant","policy","delivered"]},payload:F});export{I as AssistantAnswerRequestedEvent,K as AssistantAnswerDeliveredEvent,J as AssistantAnswerBlockedEvent};
@@ -1,35 +1 @@
1
- // src/example.ts
2
- import { defineExample } from "@contractspec/lib.contracts-spec";
3
- var example = defineExample({
4
- meta: {
5
- key: "locale-jurisdiction-gate",
6
- version: "1.0.0",
7
- title: "Locale / Jurisdiction Gate",
8
- description: "Fail-closed gating for assistant calls: locale + jurisdiction + kbSnapshotId + allowedScope must be explicit, answers must cite a snapshot.",
9
- kind: "knowledge",
10
- visibility: "public",
11
- stability: "experimental",
12
- owners: ["@platform.core"],
13
- tags: ["policy", "locale", "jurisdiction", "assistant", "gating"]
14
- },
15
- docs: {
16
- rootDocId: "docs.examples.locale-jurisdiction-gate"
17
- },
18
- entrypoints: {
19
- packageName: "@contractspec/example.locale-jurisdiction-gate",
20
- feature: "./feature",
21
- contracts: "./contracts",
22
- handlers: "./handlers",
23
- docs: "./docs"
24
- },
25
- surfaces: {
26
- templates: true,
27
- sandbox: { enabled: true, modes: ["markdown", "specs"] },
28
- studio: { enabled: true, installable: true },
29
- mcp: { enabled: true }
30
- }
31
- });
32
- var example_default = example;
33
- export {
34
- example_default as default
35
- };
1
+ import{defineExample as g}from"@contractspec/lib.contracts-spec";var h=g({meta:{key:"locale-jurisdiction-gate",version:"1.0.0",title:"Locale / Jurisdiction Gate",description:"Fail-closed gating for assistant calls: locale + jurisdiction + kbSnapshotId + allowedScope must be explicit, answers must cite a snapshot.",kind:"knowledge",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["policy","locale","jurisdiction","assistant","gating"]},docs:{rootDocId:"docs.examples.locale-jurisdiction-gate"},entrypoints:{packageName:"@contractspec/example.locale-jurisdiction-gate",feature:"./feature",contracts:"./contracts",handlers:"./handlers",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["markdown","specs"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),q=h;export{q as default};