@ego-z/contracts 0.14.0 → 0.14.2

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/tool.d.ts +18 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ego-z/contracts",
3
- "version": "0.14.0",
3
+ "version": "0.14.2",
4
4
  "description": "Wire-format type contracts shared between EgoZ backend, SDK, MCP and console. Type-only — no runtime artifacts.",
5
5
  "types": "./src/index.d.ts",
6
6
  "exports": {
package/src/tool.d.ts CHANGED
@@ -81,6 +81,24 @@ export interface JsonSchemaPropertyWire {
81
81
  items?: JsonSchemaPropertyWire;
82
82
  properties?: Record<string, JsonSchemaPropertyWire>;
83
83
  required?: string[];
84
+
85
+ /**
86
+ * Marks an argument as sensitive: its value is replaced with `'***'`
87
+ * before the `tool.calling` event goes on the wire. The tool still
88
+ * receives the real value — this governs observability, not execution.
89
+ *
90
+ * Why it lives on the schema rather than in a consumer's redaction
91
+ * rules: a downstream denylist can only catch key names someone thought
92
+ * of, and the tool catalog is editable at runtime, so the first tool
93
+ * taking a `dob` or `iban` ships before anyone updates the list. The
94
+ * person adding the tool is the one who knows, and marking it here
95
+ * means every consumer inherits that answer instead of re-deriving it.
96
+ *
97
+ * Absent means "not marked", not "safe" — pair it with a bounded
98
+ * projection when rendering args, so an unmarked-but-sensitive field is
99
+ * still limited by shape.
100
+ */
101
+ sensitive?: boolean;
84
102
  }
85
103
 
86
104
  // ============================================================================