You've already forked incident-triage
Import UAPF package
Import UAPF package: incident-triage.uapf
This commit is contained in:
37
resources/guardrails.yaml
Normal file
37
resources/guardrails.yaml
Normal file
@@ -0,0 +1,37 @@
|
||||
kind: uapf.resources.guardrails
|
||||
|
||||
# Applied by the UAPF runtime to every UAPF-IP capability invocation
|
||||
# governed by this package. Cross-cutting safety rails — enforced regardless
|
||||
# of which Algorithm Card the runtime is dispatching.
|
||||
|
||||
pii:
|
||||
redact_in_payloads: true
|
||||
forbidden_in_drafts:
|
||||
- personas_kods
|
||||
- magnetic_stripe
|
||||
- iban
|
||||
allowed_in_drafts:
|
||||
- case_number
|
||||
- host_domain
|
||||
- approximate_eta
|
||||
|
||||
approval:
|
||||
human_required_for:
|
||||
- ai.draft_response # outbound customer text always reviewed
|
||||
- incident.update # write actions never auto-applied
|
||||
auto_applied:
|
||||
- intake.normalize
|
||||
- ai.classify
|
||||
- ai.suggest_priority
|
||||
- dmn.evaluate
|
||||
- event.emit
|
||||
|
||||
timeouts:
|
||||
capability_default_ms: 30000
|
||||
llm_default_ms: 45000
|
||||
dmn_default_ms: 5000
|
||||
|
||||
retention:
|
||||
algorithm_outputs_days: 365
|
||||
audit_events_days: 2557 # 7 years (Latvian state-archive default)
|
||||
signed_artifacts: indefinite
|
||||
194
resources/mappings.yaml
Normal file
194
resources/mappings.yaml
Normal file
@@ -0,0 +1,194 @@
|
||||
kind: uapf.resources.mapping
|
||||
|
||||
# Host-readable contract for the seven capability-backed service tasks in
|
||||
# this package. Algorithm Card references live on the BPMN service tasks
|
||||
# themselves (uapf24:algorithmCardRef attribute) per UAPF v2.4.0+. The
|
||||
# targets below are dispatch endpoints only.
|
||||
|
||||
targets:
|
||||
- id: agent.intake_normalizer
|
||||
type: system_api
|
||||
name: Signal normalizer
|
||||
description: Host capability intake.normalize@1, governed by the normalize_signal Algorithm Card.
|
||||
capabilities:
|
||||
- capability.intake.normalize
|
||||
|
||||
- id: agent.classifier
|
||||
type: ai_agent
|
||||
name: Incident taxonomy classifier
|
||||
description: Host capability ai.classify@1 (LLM-backed), governed by the classify_incident Algorithm Card.
|
||||
capabilities:
|
||||
- capability.ai.classify
|
||||
|
||||
- id: agent.priority_suggester
|
||||
type: ai_agent
|
||||
name: Priority suggester
|
||||
description: Host capability ai.suggest_priority@1, governed by the suggest_priority Algorithm Card.
|
||||
capabilities:
|
||||
- capability.ai.suggest_priority
|
||||
|
||||
- id: agent.dmn_evaluator
|
||||
type: system_api
|
||||
name: DMN decision evaluator
|
||||
description: Host capability dmn.evaluate@1, governed by the evaluate_dmn Algorithm Card. Invoked three times in the BPMN with different decision_id input.
|
||||
capabilities:
|
||||
- capability.dmn.evaluate
|
||||
|
||||
- id: agent.response_drafter
|
||||
type: ai_agent
|
||||
name: Customer response drafter
|
||||
description: Host capability ai.draft_response@1, governed by the draft_response Algorithm Card. Requires human approval before send.
|
||||
capabilities:
|
||||
- capability.ai.draft_response
|
||||
|
||||
- id: agent.incident_updater
|
||||
type: system_api
|
||||
name: Incident state writer
|
||||
description: Host capability incident.update@1, governed by the update_incident Algorithm Card. Applies field patches and FSM transitions.
|
||||
capabilities:
|
||||
- capability.incident.update
|
||||
|
||||
- id: agent.event_emitter
|
||||
type: system_api
|
||||
name: Case event emitter
|
||||
description: Host capability event.emit@1, governed by the emit_event Algorithm Card. Append-only timeline writer.
|
||||
capabilities:
|
||||
- capability.event.emit
|
||||
|
||||
bindings:
|
||||
- source: { type: bpmn.serviceTask, ref: Task_NormalizeSignal }
|
||||
targetId: agent.intake_normalizer
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: signal_id, type: string, required: true }
|
||||
output:
|
||||
- { name: normalized_payload, type: object }
|
||||
- { name: dedupe_hash, type: string }
|
||||
- { name: source_kind, type: string }
|
||||
timeout: "5s"
|
||||
requiredCapabilities: [capability.intake.normalize]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_ClassifyIncident }
|
||||
targetId: agent.classifier
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: payload, type: object, required: true }
|
||||
- { name: text, type: string }
|
||||
output:
|
||||
- { name: taxonomy_code, type: string }
|
||||
- { name: confidence, type: number, description: "0.0-1.0 model confidence" }
|
||||
- { name: reasoning, type: string }
|
||||
- { name: label_hint, type: string }
|
||||
timeout: "30s"
|
||||
requiredCapabilities: [capability.ai.classify]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_SuggestPriority }
|
||||
targetId: agent.priority_suggester
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: severity, type: string, required: true }
|
||||
- { name: service_tier, type: string, required: true }
|
||||
- { name: classification, type: string, required: true }
|
||||
output:
|
||||
- { name: priority, type: string }
|
||||
- { name: reason, type: string }
|
||||
timeout: "30s"
|
||||
requiredCapabilities: [capability.ai.suggest_priority]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_EvaluatePriorityDmn }
|
||||
targetId: agent.dmn_evaluator
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: package_id, type: string, required: true }
|
||||
- { name: decision_id, type: string, required: true }
|
||||
- { name: inputs, type: object, required: true }
|
||||
output:
|
||||
- { name: output, type: object }
|
||||
- { name: hit_rule_ids, type: array }
|
||||
- { name: hit_policy, type: string }
|
||||
timeout: "5s"
|
||||
requiredCapabilities: [capability.dmn.evaluate]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_EvaluateOwnershipDmn }
|
||||
targetId: agent.dmn_evaluator
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: package_id, type: string, required: true }
|
||||
- { name: decision_id, type: string, required: true }
|
||||
- { name: inputs, type: object, required: true }
|
||||
output:
|
||||
- { name: output, type: object }
|
||||
- { name: hit_rule_ids, type: array }
|
||||
- { name: hit_policy, type: string }
|
||||
timeout: "5s"
|
||||
requiredCapabilities: [capability.dmn.evaluate]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_EvaluateRoutingDmn }
|
||||
targetId: agent.dmn_evaluator
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: package_id, type: string, required: true }
|
||||
- { name: decision_id, type: string, required: true }
|
||||
- { name: inputs, type: object, required: true }
|
||||
output:
|
||||
- { name: output, type: object }
|
||||
- { name: hit_rule_ids, type: array }
|
||||
- { name: hit_policy, type: string }
|
||||
timeout: "5s"
|
||||
requiredCapabilities: [capability.dmn.evaluate]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_UpdateIncident }
|
||||
targetId: agent.incident_updater
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: case_id, type: string, required: true }
|
||||
- { name: patch, type: object, required: true }
|
||||
- { name: status, type: string }
|
||||
- { name: reason, type: string }
|
||||
output:
|
||||
- { name: case_id, type: string }
|
||||
- { name: new_status, type: string }
|
||||
- { name: success, type: boolean }
|
||||
- { name: event_ids, type: array }
|
||||
timeout: "10s"
|
||||
requiredCapabilities: [capability.incident.update]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_DraftResponse }
|
||||
targetId: agent.response_drafter
|
||||
mode: supervised
|
||||
contract:
|
||||
input:
|
||||
- { name: case_id, type: string, required: true }
|
||||
- { name: locale, type: string }
|
||||
- { name: what_happened, type: string, required: true }
|
||||
- { name: eta_minutes, type: number }
|
||||
output:
|
||||
- { name: subject_lv, type: string }
|
||||
- { name: subject_en, type: string }
|
||||
- { name: body_lv, type: string }
|
||||
- { name: body_en, type: string }
|
||||
- { name: locale, type: string }
|
||||
timeout: "60s"
|
||||
requiredCapabilities: [capability.ai.draft_response]
|
||||
|
||||
- source: { type: bpmn.serviceTask, ref: Task_EmitEvent }
|
||||
targetId: agent.event_emitter
|
||||
mode: autonomous
|
||||
contract:
|
||||
input:
|
||||
- { name: case_id, type: string, required: true }
|
||||
- { name: type, type: string, required: true }
|
||||
- { name: payload, type: object }
|
||||
- { name: actor_label, type: string }
|
||||
output:
|
||||
- { name: event_id, type: string }
|
||||
- { name: recorded_at, type: string }
|
||||
timeout: "5s"
|
||||
requiredCapabilities: [capability.event.emit]
|
||||
Reference in New Issue
Block a user