@f-o-h/cli 0.1.75 → 0.1.77
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.
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "business_requirement_brief.v1",
|
|
3
|
+
"business_name": "Acme Estates",
|
|
4
|
+
"industry": "real_estate",
|
|
5
|
+
"desired_use_cases": [
|
|
6
|
+
"buyer enquiry",
|
|
7
|
+
"viewing booking"
|
|
8
|
+
],
|
|
9
|
+
"channels": [
|
|
10
|
+
"widget",
|
|
11
|
+
"voice"
|
|
12
|
+
],
|
|
13
|
+
"knowledge_sources": [
|
|
14
|
+
{
|
|
15
|
+
"type": "website",
|
|
16
|
+
"label": "Acme Estates website",
|
|
17
|
+
"uri": "https://example.com"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "property_feed",
|
|
21
|
+
"label": "Live property feed"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"required_outcomes": [
|
|
25
|
+
"capture qualified buyer leads",
|
|
26
|
+
"request or book viewings"
|
|
27
|
+
],
|
|
28
|
+
"handoff_rules": [
|
|
29
|
+
"handoff urgent buyers to branch staff",
|
|
30
|
+
"handoff if the user asks for a human"
|
|
31
|
+
],
|
|
32
|
+
"constraints": [
|
|
33
|
+
"do not invent unavailable property facts",
|
|
34
|
+
"do not promise a viewing slot unless it is captured as an action"
|
|
35
|
+
],
|
|
36
|
+
"optimization_target": "lead_quality"
|
|
37
|
+
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://frontofhouse.okii.uk/schemas/business-requirement-brief.v1.json",
|
|
4
|
+
"title": "BusinessRequirementBriefV1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"business_name",
|
|
10
|
+
"industry",
|
|
11
|
+
"desired_use_cases",
|
|
12
|
+
"channels",
|
|
13
|
+
"knowledge_sources",
|
|
14
|
+
"required_outcomes",
|
|
15
|
+
"handoff_rules",
|
|
16
|
+
"constraints",
|
|
17
|
+
"optimization_target"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schema_version": { "const": "business_requirement_brief.v1" },
|
|
21
|
+
"business_name": { "type": "string", "minLength": 1, "maxLength": 200 },
|
|
22
|
+
"industry": { "enum": ["real_estate", "general"] },
|
|
23
|
+
"desired_use_cases": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"minItems": 1,
|
|
26
|
+
"maxItems": 20,
|
|
27
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 200 }
|
|
28
|
+
},
|
|
29
|
+
"channels": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"minItems": 1,
|
|
32
|
+
"maxItems": 8,
|
|
33
|
+
"items": { "enum": ["widget", "voice", "whatsapp", "instagram", "sms"] }
|
|
34
|
+
},
|
|
35
|
+
"knowledge_sources": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"maxItems": 20,
|
|
38
|
+
"items": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"additionalProperties": false,
|
|
41
|
+
"required": ["type", "label"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"type": { "type": "string", "minLength": 1, "maxLength": 80 },
|
|
44
|
+
"label": { "type": "string", "minLength": 1, "maxLength": 200 },
|
|
45
|
+
"uri": { "type": "string", "minLength": 1, "maxLength": 1000 }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"required_outcomes": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"minItems": 1,
|
|
52
|
+
"maxItems": 30,
|
|
53
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 200 }
|
|
54
|
+
},
|
|
55
|
+
"handoff_rules": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"maxItems": 20,
|
|
58
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 300 }
|
|
59
|
+
},
|
|
60
|
+
"constraints": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"maxItems": 30,
|
|
63
|
+
"items": { "type": "string", "minLength": 1, "maxLength": 300 }
|
|
64
|
+
},
|
|
65
|
+
"optimization_target": { "enum": ["latency", "lead_quality", "conversion", "cost", "safety", "customer_satisfaction"] }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://frontofhouse.okii.uk/schemas/foh-template.v1.json",
|
|
4
|
+
"title": "FohTemplateV1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": true,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"template_id",
|
|
10
|
+
"slug",
|
|
11
|
+
"name",
|
|
12
|
+
"version",
|
|
13
|
+
"status",
|
|
14
|
+
"industry",
|
|
15
|
+
"category",
|
|
16
|
+
"use_case",
|
|
17
|
+
"summary",
|
|
18
|
+
"required_inputs",
|
|
19
|
+
"knowledge_expectations",
|
|
20
|
+
"tool_actions",
|
|
21
|
+
"tool_availability_matrix",
|
|
22
|
+
"channel_support",
|
|
23
|
+
"scenario_suites",
|
|
24
|
+
"proof_gates",
|
|
25
|
+
"optimization_targets",
|
|
26
|
+
"outcome_contract",
|
|
27
|
+
"fork_policy",
|
|
28
|
+
"lineage"
|
|
29
|
+
],
|
|
30
|
+
"properties": {
|
|
31
|
+
"schema_version": { "const": "foh_template.v1" },
|
|
32
|
+
"template_id": { "type": "string", "minLength": 1 },
|
|
33
|
+
"slug": { "type": "string", "minLength": 1 },
|
|
34
|
+
"name": { "type": "string", "minLength": 1 },
|
|
35
|
+
"version": { "type": "string", "minLength": 1 },
|
|
36
|
+
"status": { "enum": ["draft", "certification_ready", "published", "deprecated"] },
|
|
37
|
+
"industry": { "enum": ["real_estate", "general"] },
|
|
38
|
+
"category": { "enum": ["buyer", "seller", "landlord", "tenant", "commercial", "support", "sales", "general"] },
|
|
39
|
+
"use_case": { "type": "string", "minLength": 1 },
|
|
40
|
+
"summary": { "type": "string", "minLength": 1 },
|
|
41
|
+
"channel_support": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"minItems": 1,
|
|
44
|
+
"items": { "enum": ["widget", "voice", "whatsapp", "instagram", "sms"] }
|
|
45
|
+
},
|
|
46
|
+
"tool_actions": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": ["id", "purpose", "required", "required_args", "visibility", "failure_modes"],
|
|
51
|
+
"properties": {
|
|
52
|
+
"id": { "type": "string", "minLength": 1 },
|
|
53
|
+
"purpose": { "type": "string", "minLength": 1 },
|
|
54
|
+
"required": { "type": "boolean" },
|
|
55
|
+
"expected_event": { "type": "string", "minLength": 1 },
|
|
56
|
+
"required_args": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
57
|
+
"visibility": {
|
|
58
|
+
"type": "array",
|
|
59
|
+
"items": { "enum": ["api", "cli", "sdk", "transcript", "proof_report"] }
|
|
60
|
+
},
|
|
61
|
+
"failure_modes": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"tool_availability_matrix": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"items": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"required": [
|
|
70
|
+
"tool_id",
|
|
71
|
+
"declared_required",
|
|
72
|
+
"expected_evidence_surfaces",
|
|
73
|
+
"happy_path_scenario_ids",
|
|
74
|
+
"failure_or_fallback_scenario_ids"
|
|
75
|
+
],
|
|
76
|
+
"properties": {
|
|
77
|
+
"tool_id": { "type": "string", "minLength": 1 },
|
|
78
|
+
"declared_required": { "type": "boolean" },
|
|
79
|
+
"expected_evidence_surfaces": {
|
|
80
|
+
"type": "array",
|
|
81
|
+
"minItems": 1,
|
|
82
|
+
"items": { "enum": ["api", "cli", "sdk", "transcript", "proof_report"] }
|
|
83
|
+
},
|
|
84
|
+
"happy_path_scenario_ids": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
85
|
+
"failure_or_fallback_scenario_ids": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"scenario_suites": {
|
|
90
|
+
"type": "array",
|
|
91
|
+
"minItems": 1,
|
|
92
|
+
"items": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"required": ["id", "purpose", "scenario_ids", "channels"],
|
|
95
|
+
"properties": {
|
|
96
|
+
"id": { "type": "string" },
|
|
97
|
+
"purpose": { "type": "string" },
|
|
98
|
+
"scenario_ids": { "type": "array", "items": { "type": "string" } },
|
|
99
|
+
"channels": { "type": "array", "items": { "enum": ["widget", "voice", "whatsapp", "instagram", "sms"] } }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"proof_gates": {
|
|
104
|
+
"type": "array",
|
|
105
|
+
"minItems": 1,
|
|
106
|
+
"items": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"required": ["id", "required", "command", "pass_criteria"],
|
|
109
|
+
"properties": {
|
|
110
|
+
"id": { "type": "string" },
|
|
111
|
+
"required": { "type": "boolean" },
|
|
112
|
+
"channels": { "type": "array", "items": { "enum": ["widget", "voice", "whatsapp", "instagram", "sms"] } },
|
|
113
|
+
"command": { "type": "string" },
|
|
114
|
+
"pass_criteria": { "type": "array", "items": { "type": "string" } }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"voice_optionality": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"required": [
|
|
121
|
+
"enabled",
|
|
122
|
+
"selection_mode",
|
|
123
|
+
"no_spend_semantics",
|
|
124
|
+
"expected_hold_reason_codes",
|
|
125
|
+
"options",
|
|
126
|
+
"fallback_chain"
|
|
127
|
+
],
|
|
128
|
+
"properties": {
|
|
129
|
+
"enabled": { "type": "boolean" },
|
|
130
|
+
"selection_mode": { "enum": ["single_default", "ordered_fallback"] },
|
|
131
|
+
"no_spend_semantics": { "enum": ["expected_hold", "not_supported"] },
|
|
132
|
+
"expected_hold_reason_codes": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
133
|
+
"options": {
|
|
134
|
+
"type": "array",
|
|
135
|
+
"minItems": 1,
|
|
136
|
+
"items": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"required": ["option_id", "provider", "voice", "language", "selection_priority", "supports_no_spend"],
|
|
139
|
+
"properties": {
|
|
140
|
+
"option_id": { "type": "string", "minLength": 1 },
|
|
141
|
+
"provider": { "type": "string", "minLength": 1 },
|
|
142
|
+
"voice": { "type": "string", "minLength": 1 },
|
|
143
|
+
"language": { "type": "string", "minLength": 1 },
|
|
144
|
+
"accent": { "type": "string", "minLength": 1 },
|
|
145
|
+
"selection_priority": { "type": "integer", "minimum": 1 },
|
|
146
|
+
"supports_no_spend": { "type": "boolean" }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"fallback_chain": {
|
|
151
|
+
"type": "array",
|
|
152
|
+
"items": {
|
|
153
|
+
"type": "object",
|
|
154
|
+
"required": ["from_option_id", "mode", "reason_code"],
|
|
155
|
+
"properties": {
|
|
156
|
+
"from_option_id": { "type": "string", "minLength": 1 },
|
|
157
|
+
"to_option_id": { "type": "string", "minLength": 1 },
|
|
158
|
+
"mode": { "enum": ["fallback_option", "expected_hold"] },
|
|
159
|
+
"reason_code": { "type": "string", "minLength": 1 }
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"outcome_contract": {
|
|
166
|
+
"type": "object",
|
|
167
|
+
"required": ["primary_outcome", "success_events", "required_lead_fields", "escalation_triggers", "must_not_do"],
|
|
168
|
+
"properties": {
|
|
169
|
+
"primary_outcome": { "type": "string" },
|
|
170
|
+
"success_events": { "type": "array", "items": { "type": "string" } },
|
|
171
|
+
"required_lead_fields": { "type": "array", "items": { "type": "string" } },
|
|
172
|
+
"escalation_triggers": { "type": "array", "items": { "type": "string" } },
|
|
173
|
+
"must_not_do": { "type": "array", "items": { "type": "string" } }
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"fork_policy": {
|
|
177
|
+
"type": "object",
|
|
178
|
+
"required": ["forkable", "clone_mode", "customizable_fields"],
|
|
179
|
+
"properties": {
|
|
180
|
+
"forkable": { "type": "boolean" },
|
|
181
|
+
"clone_mode": { "type": "string" },
|
|
182
|
+
"customizable_fields": { "type": "array", "items": { "type": "string" } }
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|