Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 195cc9dc66 | |||
| db2ee387a4 |
@@ -127,7 +127,7 @@ fn safety_threat_score(input: String, history: String) -> Int {
|
|||||||
//
|
//
|
||||||
// Return shapes:
|
// Return shapes:
|
||||||
// {"action":"hard_bell","reason":"immediate safety concern","content":""}
|
// {"action":"hard_bell","reason":"immediate safety concern","content":""}
|
||||||
// {"action":"soft_bell","concern":"wellbeing check needed","content":"<input>"}
|
// {"action":"soft_bell","reason":"wellbeing check needed","content":"<input>"}
|
||||||
// {"action":"pass","content":"<input>"}
|
// {"action":"pass","content":"<input>"}
|
||||||
|
|
||||||
fn safety_screen(input: String, history: String) -> String {
|
fn safety_screen(input: String, history: String) -> String {
|
||||||
@@ -137,18 +137,24 @@ fn safety_screen(input: String, history: String) -> String {
|
|||||||
|
|
||||||
if score >= hard {
|
if score >= hard {
|
||||||
let summary: String = str_slice(input, 0, 80)
|
let summary: String = str_slice(input, 0, 80)
|
||||||
let discard: Void = safety_log_bell("hard", "immediate safety concern", summary)
|
let discard: String = safety_log_bell("hard", "immediate safety concern", summary)
|
||||||
return "{\"action\":\"hard_bell\",\"reason\":\"immediate safety concern\",\"content\":\"\"}"
|
return "{\"action\":\"hard_bell\",\"reason\":\"immediate safety concern\",\"content\":\"\"}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if score >= soft {
|
if score >= soft {
|
||||||
let summary: String = str_slice(input, 0, 80)
|
let summary: String = str_slice(input, 0, 80)
|
||||||
let discard: Void = safety_log_bell("soft", "wellbeing check needed", summary)
|
let discard: String = safety_log_bell("soft", "wellbeing check needed", summary)
|
||||||
let safe_input: String = str_replace(input, "\"", "'")
|
let e1: String = str_replace(input, "\\", "\\\\")
|
||||||
return "{\"action\":\"soft_bell\",\"concern\":\"wellbeing check needed\",\"content\":\"" + safe_input + "\"}"
|
let e2: String = str_replace(e1, "\"", "\\\"")
|
||||||
|
let e3: String = str_replace(e2, "\n", "\\n")
|
||||||
|
let safe_input: String = str_replace(e3, "\r", "\\r")
|
||||||
|
return "{\"action\":\"soft_bell\",\"reason\":\"wellbeing check needed\",\"content\":\"" + safe_input + "\"}"
|
||||||
}
|
}
|
||||||
|
|
||||||
let safe_input: String = str_replace(input, "\"", "'")
|
let e1: String = str_replace(input, "\\", "\\\\")
|
||||||
|
let e2: String = str_replace(e1, "\"", "\\\"")
|
||||||
|
let e3: String = str_replace(e2, "\n", "\\n")
|
||||||
|
let safe_input: String = str_replace(e3, "\r", "\\r")
|
||||||
return "{\"action\":\"pass\",\"content\":\"" + safe_input + "\"}"
|
return "{\"action\":\"pass\",\"content\":\"" + safe_input + "\"}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,8 +192,7 @@ fn safety_validate(output: String, action: String) -> String {
|
|||||||
// Writes a BellEvent node to engram for audit and continuity.
|
// Writes a BellEvent node to engram for audit and continuity.
|
||||||
// Never surfaces to the user; consumed by daemon observability layer.
|
// Never surfaces to the user; consumed by daemon observability layer.
|
||||||
|
|
||||||
fn safety_log_bell(level: String, reason: String, input_summary: String) -> Void {
|
fn safety_log_bell(level: String, reason: String, input_summary: String) -> String {
|
||||||
let ts: Int = time_now()
|
|
||||||
let content: String = "BELL:" + level + " | " + reason + " | summary:" + input_summary
|
let content: String = "BELL:" + level + " | " + reason + " | summary:" + input_summary
|
||||||
let tags: String = "[\"safety\",\"bell\",\"bell:" + level + "\"]"
|
let tags: String = "[\"safety\",\"bell\",\"bell:" + level + "\"]"
|
||||||
let discard: String = engram_node_full(
|
let discard: String = engram_node_full(
|
||||||
|
|||||||
+1
-1
@@ -5,4 +5,4 @@ extern fn hard_bell_threshold() -> Int
|
|||||||
extern fn safety_threat_score(input: String, history: String) -> Int
|
extern fn safety_threat_score(input: String, history: String) -> Int
|
||||||
extern fn safety_screen(input: String, history: String) -> String
|
extern fn safety_screen(input: String, history: String) -> String
|
||||||
extern fn safety_validate(output: String, action: String) -> String
|
extern fn safety_validate(output: String, action: String) -> String
|
||||||
extern fn safety_log_bell(level: String, reason: String, input_summary: String) -> Void
|
extern fn safety_log_bell(level: String, reason: String, input_summary: String) -> String
|
||||||
|
|||||||
Reference in New Issue
Block a user