@ego-z/contracts 0.15.7 → 0.15.8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ego-z/contracts",
3
- "version": "0.15.7",
3
+ "version": "0.15.8",
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": {
@@ -93,8 +93,43 @@ export interface InitContextOpenWindow {
93
93
  * Human-readable window label, e.g. `"Blue Hoodie"`. Safe to render
94
94
  * verbatim — unlike the window KEY, which embeds entity ids and is
95
95
  * rendered only for the focused window.
96
+ *
97
+ * OMIT IT when `withheld` is true — see below.
96
98
  */
97
99
  title?: string;
100
+
101
+ /**
102
+ * The user removed this window from the chat's context chips: it is on
103
+ * their screen, but they have asked that it NOT be sent to the agent.
104
+ *
105
+ * ── Send the id and the flag. Never the title. ───────────────────────
106
+ *
107
+ * The agent needs the ID so it can stay quiet: EgoZ derives "what changed
108
+ * since your last message" by diffing window ids, and a window that
109
+ * simply vanishes from the payload is indistinguishable from one the user
110
+ * CLOSED — so the agent would tell them a window is gone while they are
111
+ * looking at it.
112
+ *
113
+ * The TITLE is the part the user was removing. It is the field that
114
+ * carries `"Acme Corp — Overdue Invoice #4471"` into a prompt and into
115
+ * storage. Send it anyway and the control is theatre: the gesture would
116
+ * change nothing about what leaves the browser. Ids are structural
117
+ * (`ecommerce:productDetail:prod-4471`) and leak a record id, not a
118
+ * person's name.
119
+ *
120
+ * ── What it does and does not do ─────────────────────────────────────
121
+ *
122
+ * A withheld window is not rendered anywhere: not in the open-window
123
+ * list, not as the focused window, not in the change summary, and it
124
+ * never anchors a greeting.
125
+ *
126
+ * It stops FUTURE transmission only. A title sent on an earlier turn is
127
+ * already stored, and anything the agent has already SAID about that
128
+ * window remains in the transcript. Withdrawing a window does not
129
+ * withdraw the conversation about it — so describe this to users as
130
+ * "not shared from now on", never as though it were erased.
131
+ */
132
+ withheld?: boolean;
98
133
  isFocused?: boolean;
99
134
  }
100
135