@rubytech/create-realagent-code 0.1.576 → 0.1.577
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 +1 -1
- package/payload/platform/lib/active-rules/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/active-rules/dist/index.js +32 -1
- package/payload/platform/lib/active-rules/dist/index.js.map +1 -1
- package/payload/platform/lib/active-rules/src/index.test.ts +52 -3
- package/payload/platform/lib/active-rules/src/index.ts +36 -2
- package/payload/platform/lib/dispatch-read/dist/allocate.d.ts +57 -0
- package/payload/platform/lib/dispatch-read/dist/allocate.d.ts.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/allocate.js +33 -0
- package/payload/platform/lib/dispatch-read/dist/allocate.js.map +1 -0
- package/payload/platform/lib/dispatch-read/dist/index.d.ts +2 -0
- package/payload/platform/lib/dispatch-read/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/dispatch-read/dist/index.js +10 -1
- package/payload/platform/lib/dispatch-read/dist/index.js.map +1 -1
- package/payload/platform/lib/dispatch-read/src/__tests__/allocate.test.ts +41 -0
- package/payload/platform/lib/dispatch-read/src/allocate.ts +89 -0
- package/payload/platform/lib/dispatch-read/src/index.ts +14 -0
- package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-compliance.test.sh +7 -2
- package/payload/platform/plugins/admin/hooks/prompt-optimiser-compliance.sh +8 -2
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +2 -2
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +8 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visit-status-write.test.ts +333 -22
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-visits-scope.test.ts +262 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/schema.sql +126 -21
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visit-status.ts +142 -2
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/visits.ts +118 -6
- package/payload/platform/plugins/dispatch/PLUGIN.md +2 -0
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts +19 -50
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.d.ts.map +1 -1
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js +1 -28
- package/payload/platform/plugins/dispatch/mcp/dist/lib/allocate.js.map +1 -1
- package/payload/platform/plugins/dispatch/skills/dispatch-page/SKILL.md +45 -6
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.css +60 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.html +13 -0
- package/payload/platform/plugins/dispatch/skills/dispatch-page/template/planner.js +203 -5
- package/payload/platform/plugins/docs/references/internals.md +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.d.ts +35 -3
- package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/telegram-channel/dist/notification.js +38 -5
- package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/telegram-channel/dist/server.js +1 -1
- package/payload/platform/services/telegram-channel/dist/server.js.map +1 -1
- package/payload/platform/services/webchat-channel/dist/notification.d.ts +2 -1
- package/payload/platform/services/webchat-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/webchat-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +2 -2
- package/payload/platform/templates/agents/admin/IDENTITY.md +1 -1
- package/payload/server/server.js +508 -117
|
@@ -114,20 +114,133 @@
|
|
|
114
114
|
column order above. */
|
|
115
115
|
var HOUR_KEYS = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
|
|
116
116
|
|
|
117
|
-
/*
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
/* Whether the account declared this move (Task 2511).
|
|
118
|
+
|
|
119
|
+
Absent from the published list means refused, and the list travels with the
|
|
120
|
+
week, so a drag is refused with the install offline. `visit-status.ts`
|
|
121
|
+
refuses it a second time from the same list; that refusal is the binding
|
|
122
|
+
one, and this one exists so the operator is told now rather than in sixty
|
|
123
|
+
seconds. An unchanged status is NOT a move, which is the same rule the door
|
|
124
|
+
applies: `[from, to]` declares a move and no account declares a
|
|
125
|
+
self-transition, so without this every pure re-timing would be refused. */
|
|
126
|
+
function declared(meta, from, to) {
|
|
127
|
+
if (from === to) return true;
|
|
128
|
+
var list = (meta && meta.transitions) || [];
|
|
129
|
+
for (var i = 0; i < list.length; i++) {
|
|
130
|
+
if (list[i][0] === from && list[i][1] === to) return true;
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* The same wall-clock time on a different day, IN THE ACCOUNT'S ZONE.
|
|
136
|
+
|
|
137
|
+
Built by asking the account's own formatter what instant renders as the
|
|
138
|
+
wanted wall time, never from the browser's offset: a page that guesses the
|
|
139
|
+
zone re-times a visit to a plausible wrong hour, which is the Task 2280
|
|
140
|
+
defect. Two passes, because the offset either side of a daylight-saving
|
|
141
|
+
transition differs and the first correction can land on the far side of it.
|
|
142
|
+
|
|
143
|
+
Returns the shape the door admits, which is what `toISOString` produces. */
|
|
144
|
+
function retimed(iso, dayKey, zone) {
|
|
145
|
+
var wall = new Intl.DateTimeFormat('en-GB', {
|
|
146
|
+
timeZone: zone,
|
|
147
|
+
hour: '2-digit',
|
|
148
|
+
minute: '2-digit',
|
|
149
|
+
hour12: false,
|
|
150
|
+
});
|
|
151
|
+
var held = wall.format(new Date(iso));
|
|
152
|
+
var guess = new Date(dayKey + 'T' + held + ':00.000Z');
|
|
153
|
+
for (var i = 0; i < 2; i++) {
|
|
154
|
+
var seen = wall.format(guess);
|
|
155
|
+
if (seen === held) break;
|
|
156
|
+
var drift =
|
|
157
|
+
(Number(held.slice(0, 2)) - Number(seen.slice(0, 2))) * 60 +
|
|
158
|
+
(Number(held.slice(3)) - Number(seen.slice(3)));
|
|
159
|
+
guess = new Date(guess.getTime() + drift * 60000);
|
|
160
|
+
}
|
|
161
|
+
return guess.toISOString();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* One visit. Clicking moves it to the next declared status; dragging re-times
|
|
165
|
+
or re-assigns it. Both post through the portal's existing write door, and
|
|
166
|
+
both are refused here first against the published transition list. */
|
|
167
|
+
function visitButton(v, data, meta, zone) {
|
|
121
168
|
var b = document.createElement('button');
|
|
122
169
|
b.type = 'button';
|
|
123
170
|
b.className = 'pl-visit';
|
|
171
|
+
b.draggable = true;
|
|
124
172
|
b.textContent = [timeOf(v.startDate, zone), v.status, v.purpose].filter(Boolean).join(' · ');
|
|
125
173
|
b.addEventListener('click', function () {
|
|
126
174
|
advance(v, meta);
|
|
127
175
|
});
|
|
176
|
+
/* The panel is a second gesture on the same card, so the click keeps
|
|
177
|
+
meaning what it meant before this task. */
|
|
178
|
+
b.addEventListener('contextmenu', function (e) {
|
|
179
|
+
e.preventDefault();
|
|
180
|
+
openVisit(v, data, meta, zone);
|
|
181
|
+
});
|
|
182
|
+
b.addEventListener('dragstart', function (e) {
|
|
183
|
+
dragging = v;
|
|
184
|
+
if (e.dataTransfer) e.dataTransfer.effectAllowed = 'move';
|
|
185
|
+
});
|
|
186
|
+
b.addEventListener('dragend', function () {
|
|
187
|
+
dragging = null;
|
|
188
|
+
});
|
|
128
189
|
return b;
|
|
129
190
|
}
|
|
130
191
|
|
|
192
|
+
/* The visit under the pointer during a drag. Held here rather than in
|
|
193
|
+
dataTransfer, which only carries strings and would mean looking the visit
|
|
194
|
+
back up by id on every drop. */
|
|
195
|
+
var dragging = null;
|
|
196
|
+
|
|
197
|
+
function move(v, meta, zone, toOwnerId, toDayKey) {
|
|
198
|
+
var body = { visitId: v.visitId, status: v.status };
|
|
199
|
+
if (toOwnerId !== v.ownerId) body.assignedOwnerId = toOwnerId;
|
|
200
|
+
if (toDayKey !== dayOf(v.startDate, zone)) {
|
|
201
|
+
body.startDate = retimed(v.startDate, toDayKey, zone);
|
|
202
|
+
}
|
|
203
|
+
/* A drop that changes neither is not a write. */
|
|
204
|
+
if (body.assignedOwnerId === undefined && body.startDate === undefined) return;
|
|
205
|
+
say('Saving…');
|
|
206
|
+
api('/api/visit-status', {
|
|
207
|
+
method: 'POST',
|
|
208
|
+
headers: { 'content-type': 'application/json' },
|
|
209
|
+
body: JSON.stringify(body),
|
|
210
|
+
})
|
|
211
|
+
.then(function (r) {
|
|
212
|
+
return r.json().then(function (d) {
|
|
213
|
+
return { s: r.status, d: d };
|
|
214
|
+
});
|
|
215
|
+
})
|
|
216
|
+
.then(function (res) {
|
|
217
|
+
if (!res.d.ok) {
|
|
218
|
+
console.error('[planner] move refused', { status: res.s, error: res.d.error });
|
|
219
|
+
say(
|
|
220
|
+
res.s === 404
|
|
221
|
+
? 'That is not yours to change.'
|
|
222
|
+
: res.d.error === 'illegal-transition'
|
|
223
|
+
? 'That move is not one this account allows.'
|
|
224
|
+
: 'That change was refused.',
|
|
225
|
+
);
|
|
226
|
+
/* The card returns to origin by redrawing what the device last
|
|
227
|
+
published. Leaving it where it fell would be the page telling the
|
|
228
|
+
operator something happened that did not. */
|
|
229
|
+
if (latest) render(latest);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (body.assignedOwnerId !== undefined) v.ownerId = body.assignedOwnerId;
|
|
233
|
+
if (body.startDate !== undefined) v.startDate = body.startDate;
|
|
234
|
+
say('Saved. It reaches the office within a minute.');
|
|
235
|
+
if (latest) render(latest);
|
|
236
|
+
})
|
|
237
|
+
.catch(function (err) {
|
|
238
|
+
console.error('[planner] move failed', { status: 'network', error: err });
|
|
239
|
+
say('Could not reach the server.');
|
|
240
|
+
if (latest) render(latest);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
131
244
|
function advance(v, meta) {
|
|
132
245
|
var names = ((meta && meta.statuses) || []).map(function (s) {
|
|
133
246
|
return s.name;
|
|
@@ -137,6 +250,10 @@
|
|
|
137
250
|
return;
|
|
138
251
|
}
|
|
139
252
|
var next = names[(names.indexOf(v.status) + 1) % names.length];
|
|
253
|
+
if (!declared(meta, v.status, next)) {
|
|
254
|
+
say('That move is not one this account allows.');
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
140
257
|
say('Saving…');
|
|
141
258
|
api('/api/visit-status', {
|
|
142
259
|
method: 'POST',
|
|
@@ -169,6 +286,60 @@
|
|
|
169
286
|
});
|
|
170
287
|
}
|
|
171
288
|
|
|
289
|
+
/* Who may be sent to this record, why the others may not, and what has been
|
|
290
|
+
recorded against it.
|
|
291
|
+
|
|
292
|
+
Rendered from what /api/visits returned and nothing else. The install
|
|
293
|
+
computed the offers and the exclusions with the one implementation of
|
|
294
|
+
qualification and clash; re-deciding any of it here would be a second rule
|
|
295
|
+
to get wrong, which is what `functions/api/visits.ts` rules out. A
|
|
296
|
+
candidate carries no travel estimate today and is rendered without one
|
|
297
|
+
rather than dropped. */
|
|
298
|
+
function openVisit(v, data, meta, zone) {
|
|
299
|
+
var mine = (data.candidates || []).filter(function (c) {
|
|
300
|
+
return c.visitId === v.visitId;
|
|
301
|
+
});
|
|
302
|
+
document.getElementById('pl-allocate-head').textContent =
|
|
303
|
+
[timeOf(v.startDate, zone), v.status, v.purpose].filter(Boolean).join(' · ');
|
|
304
|
+
|
|
305
|
+
var list = document.getElementById('pl-allocate-list');
|
|
306
|
+
list.replaceChildren();
|
|
307
|
+
if (!mine.length) {
|
|
308
|
+
/* Never an empty box. Nobody offered and nobody excluded is a different
|
|
309
|
+
fact from an unstaffable record, and the operator cannot tell them
|
|
310
|
+
apart from a blank panel. */
|
|
311
|
+
var none = cell('pl-candidate', 'Nobody has been offered for this, and nobody was excluded.');
|
|
312
|
+
none.setAttribute('data-kind', 'excluded');
|
|
313
|
+
list.appendChild(none);
|
|
314
|
+
}
|
|
315
|
+
mine.forEach(function (c) {
|
|
316
|
+
var who = c.name || c.workerId;
|
|
317
|
+
var note =
|
|
318
|
+
c.kind === 'excluded'
|
|
319
|
+
? c.reason
|
|
320
|
+
: (c.conflicts || []).length
|
|
321
|
+
? (c.conflicts || []).length + ' already booked in this window'
|
|
322
|
+
: 'free';
|
|
323
|
+
var li = document.createElement('li');
|
|
324
|
+
li.className = 'pl-candidate';
|
|
325
|
+
li.setAttribute('data-kind', c.kind);
|
|
326
|
+
li.textContent = who + ' · ' + note;
|
|
327
|
+
list.appendChild(li);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
/* What the worker recorded, as counts. The contents themselves are files,
|
|
331
|
+
and the portal's own file exchange already carries them. */
|
|
332
|
+
document.getElementById('pl-record').textContent = [
|
|
333
|
+
'notes ' + (v.notes || 0),
|
|
334
|
+
'media ' + (v.media || 0),
|
|
335
|
+
'parts ' + (v.parts || 0),
|
|
336
|
+
'checklist ' + (v.checklistDone || 0) + '/' + (v.checklistTotal || 0),
|
|
337
|
+
'signatures ' + (v.signatures || 0),
|
|
338
|
+
].join(' · ');
|
|
339
|
+
|
|
340
|
+
document.getElementById('pl-allocate').hidden = false;
|
|
341
|
+
}
|
|
342
|
+
|
|
172
343
|
function render(data) {
|
|
173
344
|
var meta = data.meta;
|
|
174
345
|
/* UTC when the account published no config. Never the browser's: a page
|
|
@@ -225,12 +396,35 @@
|
|
|
225
396
|
'data-off',
|
|
226
397
|
w.workingHours && w.workingHours[HOUR_KEYS[i]] ? 'false' : 'true',
|
|
227
398
|
);
|
|
399
|
+
/* Every cell is a drop target, including a day the worker does not
|
|
400
|
+
work: the office books into one deliberately, and a cell that
|
|
401
|
+
refused the drop would make that decision for them. A row with no
|
|
402
|
+
configured worker is not a target, because there is no ownerId to
|
|
403
|
+
re-assign to. */
|
|
404
|
+
if (w.workerId) {
|
|
405
|
+
c.addEventListener('dragover', function (e) {
|
|
406
|
+
if (!dragging) return;
|
|
407
|
+
e.preventDefault();
|
|
408
|
+
c.setAttribute('data-over', 'true');
|
|
409
|
+
});
|
|
410
|
+
c.addEventListener('dragleave', function () {
|
|
411
|
+
c.removeAttribute('data-over');
|
|
412
|
+
});
|
|
413
|
+
c.addEventListener('drop', function (e) {
|
|
414
|
+
e.preventDefault();
|
|
415
|
+
c.removeAttribute('data-over');
|
|
416
|
+
if (!dragging) return;
|
|
417
|
+
var v = dragging;
|
|
418
|
+
dragging = null;
|
|
419
|
+
move(v, meta, zone, w.ownerId, k);
|
|
420
|
+
});
|
|
421
|
+
}
|
|
228
422
|
(byOwner[w.ownerId] || [])
|
|
229
423
|
.filter(function (v) {
|
|
230
424
|
return dayOf(v.startDate, zone) === k;
|
|
231
425
|
})
|
|
232
426
|
.forEach(function (v) {
|
|
233
|
-
c.appendChild(visitButton(v, meta, zone));
|
|
427
|
+
c.appendChild(visitButton(v, data, meta, zone));
|
|
234
428
|
});
|
|
235
429
|
gridEl.appendChild(c);
|
|
236
430
|
});
|
|
@@ -316,6 +510,10 @@
|
|
|
316
510
|
});
|
|
317
511
|
});
|
|
318
512
|
|
|
513
|
+
document.getElementById('pl-allocate-close').addEventListener('click', function () {
|
|
514
|
+
document.getElementById('pl-allocate').hidden = true;
|
|
515
|
+
});
|
|
516
|
+
|
|
319
517
|
document.getElementById('pl-prev').addEventListener('click', function () {
|
|
320
518
|
anchor.setUTCDate(anchor.getUTCDate() - 7);
|
|
321
519
|
if (latest) render(latest);
|
|
@@ -406,7 +406,7 @@ Standing rules the operator gives over a channel are `Preference` nodes. Two mec
|
|
|
406
406
|
|
|
407
407
|
**Reconcile by meaning on write (`profile-update`).** The existence check is two-tier. First an exact `(category, key)` match — the classic fast path, unchanged. When that misses, a semantic-neighbour lookup runs over the `preference_embedding` vector index, scoped to the same `accountId` and `scope:'admin'`, non-trashed. If the nearest neighbour is at or above `SAME_SUBJECT_COSINE` (0.85), the write lands on that node through the existing reinforce/update/contradict curve instead of minting a duplicate; the matched neighbours are returned in the tool result so the agent can classify future writes against real prior state. The confidence constants are unchanged — only the join key widens, so a rephrasing under a new `key` no longer forks the rule and a correction demotes the prior node rather than adding a contradictory one.
|
|
408
408
|
|
|
409
|
-
**Inject the active rule-set every turn (channel gateways).** The one definition of "this account's active rules" is `@maxy/active-rules`: the account owner's admin-scope preferences (resolve the seeded `AdminUser {role:'owner'}`, then select through that owner's `UserProfile` via `HAS_PREFERENCE`), a floor-filtered (`confidence >= 0.4`), confidence-ordered query that returns every such preference verbatim — no cap, no de-confliction, no candidate limit. Concision is enforced at write time by the `conversational-memory` skill (each stored value is a single minimal imperative) and by the write-time semantic reconcile (a same-subject write at or above `SAME_SUBJECT_COSINE` folds into the existing node rather than minting a duplicate), so the injected block stays small because each stored preference is short and non-redundant, not because injection truncates. A preference owned by a non-owner profile (an operator's, stranded on the operator's own profile while managing the account) is never injected; an account with no seeded owner injects nothing. `profile-read` exposes this same owner-scoped set as `activeRules`, and the three inbound gateways (`wa-gateway`, `telegram-gateway`, `webchat-gateway`) fetch it for the effective session account and attach it as `standingRules` on the inbound frame; the channel builders prepend it as a `## Standing rules` block above `## Context
|
|
409
|
+
**Inject the active rule-set every turn (channel gateways).** The one definition of "this account's active rules" is `@maxy/active-rules`: the account owner's admin-scope preferences (resolve the seeded `AdminUser {role:'owner'}`, then select through that owner's `UserProfile` via `HAS_PREFERENCE`), a floor-filtered (`confidence >= 0.4`), confidence-ordered query that returns every such preference verbatim — no cap, no de-confliction, no candidate limit. Concision is enforced at write time by the `conversational-memory` skill (each stored value is a single minimal imperative) and by the write-time semantic reconcile (a same-subject write at or above `SAME_SUBJECT_COSINE` folds into the existing node rather than minting a duplicate), so the injected block stays small because each stored preference is short and non-redundant, not because injection truncates. A preference owned by a non-owner profile (an operator's, stranded on the operator's own profile while managing the account) is never injected; an account with no seeded owner injects nothing. `profile-read` exposes this same owner-scoped set as `activeRules`, and the three inbound gateways (`wa-gateway`, `telegram-gateway`, `webchat-gateway`) fetch it for the effective session account and attach it as `standingRules` on the inbound frame; the channel builders prepend it as a `## Standing rules (account owner)` block above `## Context`, whose header and first line name the owner as the subject of the rules so a third-person rule about the owner is not read as a statement about the sender. Both channel-server inbound paths carry the block: the single-target SSE loop parses the whole frame, and the unified multi-target door reader (`runDoorStream`,) reconstructs it through the shared `doorInboundPayload` seam whose `parseFrame` closures read `standingRules` off the frame. The read is by code, not agent discretion, so a rule set last week is applied this week regardless of how many times the session compacted. Telegram and webchat inject for `role:'admin'` only — a public visitor never receives operator rules.
|
|
410
410
|
|
|
411
411
|
**Trust a scheduled turn's provenance, never an inbound's claim (channel-agent grounding).** A cron-dispatched agent turn reaches the same channel builders as a real inbound, so its own authorisation text would otherwise land inside `## Context` — the zone `REFRAME_INSTRUCTION` demotes to untrusted — and a security-cautious agent would distrust its own automation (the self-cancel loop). The dispatcher therefore stamps a `ScheduleProvenance` marker (owning account, event, owner userId, dispatch time) that the channel builders render as a `## Scheduled automation (platform-verified)` preamble **above** `## Context` (and above the rules block); the whatsapp wrap tag names the door `scheduler`. Both channel-server paths carry the marker — the single-target loop and the unified multi-target door reader (via the same `doorInboundPayload` seam that carries `standingRules`); the scheduler only dispatches to the whatsapp/telegram door, so a webchat frame never bears one. Because the marker is dispatcher-stamped and never derived from payload text, an inbound message cannot forge it — placement above `## Context` alone is not the trust signal, the dispatcher provenance is. The grounding binds to it in two places: one recipient-neutral clause added byte-identical to the three reframe instructions (a marker-bearing turn is authorised standing automation; a reconfiguration or re-enable is not intrusion), and the admin `IDENTITY.md` "Untrusted input" rule that the agent never states a platform-level authenticity or impersonation verdict it was not given (an unsourced "this is not from you" is its own inference, flagged, never asserted as the platform's). A sender has exactly one session: every inbound, real or scheduled, resolves to the deterministic `adminSessionIdFor(effectiveAccount, destination)`. An earlier change gave each firing its own salted seat so distrust could not accrete across firings, but the inbound hub keys on `senderId` and replaces its subscriber outright, so a seat's channel server attached under the sender's own key and swallowed the sender's REAL messages until it detached — splitting one conversation across two sessions that each denied what the other held. The seat is removed; the authoritative `agentPrompt`, this provenance marker, and the injected standing rules ground each firing without one. Self-cancel attribution is disarmed while that model beds in: the guard used to compare the cancelling turn's session id to a dispatcher stamp, which discriminated only because each firing ran its own seat, so with one session per sender it would report an autonomous loop on every operator cancel. It now always reports false — under-counting a real loop rather than inventing one — until the discriminator is rebuilt from the turn's own dispatched eventId. See `.docs/scheduling-agent-dispatch.md § Operator-provenance marker`, `§ Session model — one session per sender`, and `§ Self-cancel attribution — disarmed`.
|
|
412
412
|
|
|
@@ -17,6 +17,17 @@ export interface ScheduleProvenance {
|
|
|
17
17
|
* em-dashes). Byte-identical to the whatsapp/webchat twins.
|
|
18
18
|
*/
|
|
19
19
|
export declare function composeScheduleMarker(pv: ScheduleProvenance): string;
|
|
20
|
+
/**
|
|
21
|
+
* Task 2561 — the platform-verified preamble naming who wrote this turn and the
|
|
22
|
+
* account it landed on. Byte shape mirrors the WhatsApp twin
|
|
23
|
+
* (whatsapp-channel/notification.ts composeInboundProvenance); the last line
|
|
24
|
+
* differs because this door has no reply tool: Task 2078 made the turn's own
|
|
25
|
+
* final text the delivery on all four doors.
|
|
26
|
+
*/
|
|
27
|
+
export declare function composeInboundProvenance(input: {
|
|
28
|
+
senderId: string;
|
|
29
|
+
accountId: string;
|
|
30
|
+
}): string;
|
|
20
31
|
/** Task 2489 — one inbound media item. A local copy of the platform shape (this
|
|
21
32
|
* package never cross-imports platform/ui), the same boundary
|
|
22
33
|
* ScheduleProvenance is already duplicated across. Exactly one of `path` and
|
|
@@ -44,8 +55,17 @@ export interface InboundPayload {
|
|
|
44
55
|
* 'schedule' (a synthetic inbound injected by the scheduler). Carried only
|
|
45
56
|
* into the turn's structured log line. Absent on legacy frames = 'user'. */
|
|
46
57
|
source?: 'user' | 'schedule';
|
|
58
|
+
/** Task 2561 — who sent this message, and the account it landed on. The
|
|
59
|
+
* gateway held both for the whole turn and passed neither, so an admin turn
|
|
60
|
+
* opened straight into rules written about the account owner and a second
|
|
61
|
+
* admitted admin was greeted by the owner's name. Optional because the SSE
|
|
62
|
+
* frame is JSON-parsed and untyped at runtime: missing and empty must behave
|
|
63
|
+
* alike. Mirrors whatsapp-channel/notification.ts's own optional accountId. */
|
|
64
|
+
senderId?: string;
|
|
65
|
+
accountId?: string;
|
|
47
66
|
/** Task 1486 — the account's active standing-rules block (already formatted as
|
|
48
|
-
* `## Standing rules
|
|
67
|
+
* `## Standing rules (account owner)`, Task 2562), fetched and attached by
|
|
68
|
+
* the gateway. Prepended above
|
|
49
69
|
* `## Context` for ADMIN turns only; a public visitor never receives it.
|
|
50
70
|
* Absent/blank when the account has no active rules. */
|
|
51
71
|
standingRules?: string;
|
|
@@ -63,6 +83,11 @@ export interface InboundPayload {
|
|
|
63
83
|
export interface ComposedInbound {
|
|
64
84
|
content: string;
|
|
65
85
|
payloadBytes: number;
|
|
86
|
+
/** Task 2561 — whether this turn carries the inbound provenance preamble. The
|
|
87
|
+
* composer is the only place that knows, and the receipt ack carries it to the
|
|
88
|
+
* gateway so `provenance=no` is greppable in server.log without reproducing
|
|
89
|
+
* the incident. */
|
|
90
|
+
provenance: boolean;
|
|
66
91
|
/** Task 2353 — where this turn's `## Instruction` body came from. 'platform' is
|
|
67
92
|
* this service's own constant, which is every admin turn on this door and
|
|
68
93
|
* cannot fail; 'public-plain' is the public role, which carries no instruction
|
|
@@ -87,10 +112,17 @@ export declare function buildReplyPostBody(myKey: string, text: string): {
|
|
|
87
112
|
/** Build the body for POST /tg-channel/received — the receipt ack the channel
|
|
88
113
|
* server sends after it has emitted a drained inbound to the agent, so the
|
|
89
114
|
* gateway marks it delivered instead of sweeping it as drain-undelivered. The
|
|
90
|
-
* key is the server's fixed key, never model-supplied.
|
|
91
|
-
|
|
115
|
+
* key is the server's fixed key, never model-supplied.
|
|
116
|
+
*
|
|
117
|
+
* Task 2561 — it also carries the composer's own provenance decision, because
|
|
118
|
+
* composeContent runs in this process and a line printed here lands in
|
|
119
|
+
* mcp-telegram-channel-<sessionId>.log, which rotates independently of
|
|
120
|
+
* server.log. The ack is the carrier that gets the decision into server.log,
|
|
121
|
+
* the same role it plays on the WhatsApp door. */
|
|
122
|
+
export declare function buildReceivedPostBody(myKey: string, messageId: string, provenance: boolean): {
|
|
92
123
|
key: string;
|
|
93
124
|
messageId: string;
|
|
125
|
+
provenance: boolean;
|
|
94
126
|
};
|
|
95
127
|
/** Retry an idempotent POST until it is accepted or the attempt cap is
|
|
96
128
|
* reached. `attempt` returns whether the POST was accepted; the helper
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAyBA,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvF;;uEAEuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAUpE;AAED;;;wBAGwB;AACxB,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAA;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;iDAI6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB;;iFAE6E;IAC7E,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IAC5B
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,19 @@ export function composeScheduleMarker(pv) {
|
|
|
38
38
|
`It is genuine operator-configured automation, not an inbound message. ` +
|
|
39
39
|
`Carry out its stated actions as authorised back-office work; a reconfiguration or re-enable is not intrusion.`);
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Task 2561 — the platform-verified preamble naming who wrote this turn and the
|
|
43
|
+
* account it landed on. Byte shape mirrors the WhatsApp twin
|
|
44
|
+
* (whatsapp-channel/notification.ts composeInboundProvenance); the last line
|
|
45
|
+
* differs because this door has no reply tool: Task 2078 made the turn's own
|
|
46
|
+
* final text the delivery on all four doors.
|
|
47
|
+
*/
|
|
48
|
+
export function composeInboundProvenance(input) {
|
|
49
|
+
return (`## Message provenance (platform-verified)\n` +
|
|
50
|
+
`Sender: ${input.senderId}\n` +
|
|
51
|
+
`Account: ${input.accountId}\n` +
|
|
52
|
+
`The text you end this turn with reaches Telegram sender ${input.senderId}.`);
|
|
53
|
+
}
|
|
41
54
|
/** Frame an ADMIN inbound as `## Context` (the typed message) then
|
|
42
55
|
* `## Instruction` (this service's own ADMIN_REFRAME_INSTRUCTION — Task 2353),
|
|
43
56
|
* so a per-turn directive rides every turn. Nothing here can be refused: this
|
|
@@ -81,21 +94,35 @@ export function composeContent(p, role) {
|
|
|
81
94
|
const payload = composePayload(p);
|
|
82
95
|
const payloadBytes = Buffer.byteLength(payload, 'utf8');
|
|
83
96
|
if (role !== 'admin') {
|
|
84
|
-
return { content: payload, payloadBytes, instructionSource: 'public-plain' };
|
|
97
|
+
return { content: payload, payloadBytes, provenance: false, instructionSource: 'public-plain' };
|
|
85
98
|
}
|
|
86
99
|
// Task 1516 — a scheduled turn opens with the platform-verified provenance
|
|
87
100
|
// marker, above both the rules block and ## Context, outside the reframed
|
|
88
101
|
// payload. Admin-only (a public visitor never sees it) and present only when
|
|
89
102
|
// the dispatcher stamped it.
|
|
90
103
|
const markerPrefix = p.scheduleProvenance ? `${composeScheduleMarker(p.scheduleProvenance)}\n\n` : '';
|
|
104
|
+
// Task 2561 — a real inbound's own platform-verified preamble, in the slot
|
|
105
|
+
// between the schedule marker and the rules block. Gated on source 'user'
|
|
106
|
+
// (absent counts as user, the legacy frame) as well as on both values being
|
|
107
|
+
// present, which makes it mutually exclusive with markerPrefix above: a
|
|
108
|
+
// scheduled inject keeps the schedule marker at byte 0, so Task 1960's
|
|
109
|
+
// clean-view suppression is unaffected and no `Sender:` line names an operator
|
|
110
|
+
// who is not speaking on that turn.
|
|
111
|
+
const provSender = typeof p.senderId === 'string' ? p.senderId : '';
|
|
112
|
+
const provAccount = typeof p.accountId === 'string' ? p.accountId : '';
|
|
113
|
+
const stampProvenance = (p.source ?? 'user') === 'user' && provSender.length > 0 && provAccount.length > 0;
|
|
114
|
+
const provenancePrefix = stampProvenance
|
|
115
|
+
? `${composeInboundProvenance({ senderId: provSender, accountId: provAccount })}\n\n`
|
|
116
|
+
: '';
|
|
91
117
|
// Task 1486 — prepend the account's active standing rules above ## Context for
|
|
92
118
|
// admin turns only (a public visitor must never see operator rules).
|
|
93
119
|
const rulesPrefix = typeof p.standingRules === 'string' && p.standingRules.trim().length > 0
|
|
94
120
|
? `${p.standingRules.trim()}\n\n`
|
|
95
121
|
: '';
|
|
96
122
|
return {
|
|
97
|
-
content: `${markerPrefix}${rulesPrefix}## Context\n${payload}\n\n## Instruction\n${ADMIN_REFRAME_INSTRUCTION}`,
|
|
123
|
+
content: `${markerPrefix}${provenancePrefix}${rulesPrefix}## Context\n${payload}\n\n## Instruction\n${ADMIN_REFRAME_INSTRUCTION}`,
|
|
98
124
|
payloadBytes,
|
|
125
|
+
provenance: stampProvenance,
|
|
99
126
|
instructionSource: 'platform',
|
|
100
127
|
};
|
|
101
128
|
}
|
|
@@ -115,9 +142,15 @@ export function buildReplyPostBody(myKey, text) {
|
|
|
115
142
|
/** Build the body for POST /tg-channel/received — the receipt ack the channel
|
|
116
143
|
* server sends after it has emitted a drained inbound to the agent, so the
|
|
117
144
|
* gateway marks it delivered instead of sweeping it as drain-undelivered. The
|
|
118
|
-
* key is the server's fixed key, never model-supplied.
|
|
119
|
-
|
|
120
|
-
|
|
145
|
+
* key is the server's fixed key, never model-supplied.
|
|
146
|
+
*
|
|
147
|
+
* Task 2561 — it also carries the composer's own provenance decision, because
|
|
148
|
+
* composeContent runs in this process and a line printed here lands in
|
|
149
|
+
* mcp-telegram-channel-<sessionId>.log, which rotates independently of
|
|
150
|
+
* server.log. The ack is the carrier that gets the decision into server.log,
|
|
151
|
+
* the same role it plays on the WhatsApp door. */
|
|
152
|
+
export function buildReceivedPostBody(myKey, messageId, provenance) {
|
|
153
|
+
return { key: myKey, messageId, provenance };
|
|
121
154
|
}
|
|
122
155
|
// Task 2521 — buildTurnEndPostBody is gone with the turn-end POST it built.
|
|
123
156
|
/** Retry an idempotent POST until it is accepted or the attempt cap is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,yEAAyE;AACzE,gCAAgC;AAChC,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,gEAAgE;AAChE,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAC/E,2FAA2F;AAC3F,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AAErF,+EAA+E;AAC/E,gFAAgF;AAChF,sEAAsE;AAEtE,OAAO,EAAE,yBAAyB,EAA4B,MAAM,mBAAmB,CAAA;AAavF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAsB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAChG,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,CACL,+CAA+C;QAC/C,0FAA0F;QAC1F,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI;QAC5F,wEAAwE;QACxE,+GAA+G,CAChH,CAAA;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,yEAAyE;AACzE,gCAAgC;AAChC,EAAE;AACF,6EAA6E;AAC7E,iFAAiF;AACjF,gEAAgE;AAChE,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAChF,kFAAkF;AAClF,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAC/E,2FAA2F;AAC3F,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,qFAAqF;AAErF,+EAA+E;AAC/E,gFAAgF;AAChF,sEAAsE;AAEtE,OAAO,EAAE,yBAAyB,EAA4B,MAAM,mBAAmB,CAAA;AAavF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAsB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAChG,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,CACL,+CAA+C;QAC/C,0FAA0F;QAC1F,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI;QAC5F,wEAAwE;QACxE,+GAA+G,CAChH,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAA8C;IACrF,OAAO,CACL,6CAA6C;QAC7C,WAAW,KAAK,CAAC,QAAQ,IAAI;QAC7B,YAAY,KAAK,CAAC,SAAS,IAAI;QAC/B,2DAA2D,KAAK,CAAC,QAAQ,GAAG,CAC7E,CAAA;AACH,CAAC;AAuED;;;;;;2EAM2E;AAC3E;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,CAAiB;IACvC,6EAA6E;IAC7E,+EAA+E;IAC/E,gFAAgF;IAChF,+EAA+E;IAC/E,+EAA+E;IAC/E,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAA;IAC5F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,IAAI,CAAA;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,CAAC,CAAC,IAAI;QACJ,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;YACxC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;YAC3C,gDAAgD;QAClD,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,OAAO,IAAI,gBAAgB,GAAG,CAC7F,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAiB,EAAE,IAAyB;IACzE,8EAA8E;IAC9E,sEAAsE;IACtE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACvD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;IACjG,CAAC;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,6BAA6B;IAC7B,MAAM,YAAY,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACrG,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,wEAAwE;IACxE,uEAAuE;IACvE,+EAA+E;IAC/E,oCAAoC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,MAAM,eAAe,GACnB,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IACpF,MAAM,gBAAgB,GAAG,eAAe;QACtC,CAAC,CAAC,GAAG,wBAAwB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,MAAM;QACrF,CAAC,CAAC,EAAE,CAAA;IACN,+EAA+E;IAC/E,qEAAqE;IACrE,MAAM,WAAW,GACf,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;QACtE,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM;QACjC,CAAC,CAAC,EAAE,CAAA;IACR,OAAO;QACL,OAAO,EAAE,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,eAAe,OAAO,uBAAuB,yBAAyB,EAAE;QACjI,YAAY;QACZ,UAAU,EAAE,eAAe;QAC3B,iBAAiB,EAAE,UAAU;KAC9B,CAAA;AACH,CAAC;AAED;;2BAE2B;AAC3B,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,CAAkB;IAC1D,OAAO,CAAC,CAAC,GAAG,KAAK,KAAK,CAAA;AACxB,CAAC;AAED;;;mCAGmC;AACnC,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,IAAY;IAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;mDASmD;AACnD,MAAM,UAAU,qBAAqB,CACnC,KAAa,EACb,SAAiB,EACjB,UAAmB;IAEnB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AAC9C,CAAC;AAED,4EAA4E;AAE5E;;;;cAIc;AACd,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA+B,EAC/B,IAAiF;IAEjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,OAAO,EAAE;YAAE,OAAO,IAAI,CAAA;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;kFAEkF;AAClF,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAa;IAC3D,MAAM,CAAC,GAAG,IAAkC,CAAA;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IAClF,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,2BAA2B,MAAM,EAAE,CAAA;AAC1E,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAC9E,+EAA+E;AAC/E,yEAAyE;AACzE,gFAAgF;AAChF,yDAAyD"}
|
|
@@ -179,7 +179,7 @@ export async function subscribeInbound() {
|
|
|
179
179
|
const r = await fetch(`${GATEWAY_URL}/tg-channel/received`, {
|
|
180
180
|
method: 'POST',
|
|
181
181
|
headers: { 'content-type': 'application/json' },
|
|
182
|
-
body: JSON.stringify(buildReceivedPostBody(KEY, payload.messageId)),
|
|
182
|
+
body: JSON.stringify(buildReceivedPostBody(KEY, payload.messageId, composed.provenance)),
|
|
183
183
|
});
|
|
184
184
|
return r.ok;
|
|
185
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,8 @@ export interface InboundPayload {
|
|
|
51
51
|
/** Per-message id, for dedup/observability. */
|
|
52
52
|
messageId: string;
|
|
53
53
|
/** Task 1486 — the account's active standing-rules block (already formatted as
|
|
54
|
-
* `## Standing rules
|
|
54
|
+
* `## Standing rules (account owner)`, Task 2562), fetched and attached by
|
|
55
|
+
* the gateway. Prepended above
|
|
55
56
|
* `## Context` for ADMIN turns only; a public visitor never receives it.
|
|
56
57
|
* Absent/blank when the account has no active rules. */
|
|
57
58
|
standingRules?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtF;;wEAEwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAUpE;AAED;;;oDAGoD;AACpD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;sFAGsF;AACtF,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,CAOzD;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAA;IACjB
|
|
1
|
+
{"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,+EAA+E;AAC/E,yCAAyC;AACzC,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,gDAAgD;AAChD,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,4DAA4D;AAC5D,iFAAiF;AACjF,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AAOzE,OAAO,EAAE,yBAAyB,EAA2B,MAAM,mBAAmB,CAAA;AAatF;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAsB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAChG,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,OAAO,CACL,+CAA+C;QAC/C,0FAA0F;QAC1F,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,GAAG,GAAG,GAAG,IAAI;QAC5F,wEAAwE;QACxE,+GAA+G,CAChH,CAAA;AACH,CAAC;AAWD;;;sFAGsF;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAgB;IAC/C,IAAI,CAAC,EAAE,CAAC,IAAI;QAAE,OAAO,wDAAwD,CAAA;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAA;IACxG,OAAO,0DAA0D,MAAM,IAAI,CAAA;AAC7E,CAAC;
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,8 +52,8 @@ export interface InboundPayload {
|
|
|
52
52
|
* the turn's structured log line. Absent on legacy frames = 'user'. */
|
|
53
53
|
source?: InboundSource;
|
|
54
54
|
/** Task 1486 — the account's active standing-rules block, fetched and attached
|
|
55
|
-
* by the gateway (already formatted as a `## Standing rules`
|
|
56
|
-
* section). Prepended above `## Context` so the operator's standing rules ride
|
|
55
|
+
* by the gateway (already formatted as a `## Standing rules (account owner)`
|
|
56
|
+
* markdown section, Task 2562). Prepended above `## Context` so the operator's standing rules ride
|
|
57
57
|
* every turn even after the long-lived session has compacted. Absent/blank on
|
|
58
58
|
* a turn with no active rules. */
|
|
59
59
|
standingRules?: string;
|
|
@@ -60,7 +60,7 @@ The skill is the authority for the precision pass. The inline rules above under
|
|
|
60
60
|
|
|
61
61
|
When prose will go out under the operator's name (a document, public-facing copy, anything they will send onward), the operator's voice profile is applied before the first sentence is written, not as a second pass after they object. Run `skill-load skillName=voice-mirror` to retrieve the profile and condition the draft on it. When content-producer or another specialist owns the deliverable, the voice condition is part of the brief you hand them, never a draft you pre-write and pass on. Authoring the prose yourself and conditioning it before you return it is reserved for the case no installed specialist owns, the same boundary the per-turn routing ladder draws. This is the operator's own authorial voice, used for work written in their name; it is separate from your voice file above, which is how you sound when you speak as yourself. `voice-retrieve-conditioning` is not on your tool surface — it lives on the drafting seat (content-producer). When you hand off a prose brief to content-producer, include the voice conditioning instruction in the brief (format, length, scope, topic); do not attempt to pre-condition the prose here.
|
|
62
62
|
|
|
63
|
-
House-style works the same way as voice. The account's standing knowledge — its rules, conventions, and the house-style asset bindings that name which signature file, header, or quote template to use — reaches you already in front of you, in the `## Standing rules` block injected with each channel turn; it is the one source, and the on-disk convention notes an account may also keep are not authoritative. When a specialist owns a deliverable that applies house-style — an email signature, a document header, a quote template — the relevant bindings are part of the brief you hand them, naming the exact file to use. You do not leave the specialist to rediscover them and it does not hand-roll them from memory.
|
|
63
|
+
House-style works the same way as voice. The account's standing knowledge — its rules, conventions, and the house-style asset bindings that name which signature file, header, or quote template to use — reaches you already in front of you, in the `## Standing rules (account owner)` block injected with each channel turn; it is the one source, and the on-disk convention notes an account may also keep are not authoritative. When a specialist owns a deliverable that applies house-style — an email signature, a document header, a quote template — the relevant bindings are part of the brief you hand them, naming the exact file to use. You do not leave the specialist to rediscover them and it does not hand-roll them from memory.
|
|
64
64
|
|
|
65
65
|
## Access
|
|
66
66
|
|