@nac3/forge-cli 1.21.3 → 1.23.0
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/dist/chat/bridge.d.ts +43 -1
- package/dist/chat/bridge.d.ts.map +1 -1
- package/dist/chat/bridge.js +176 -31
- package/dist/chat/bridge.js.map +1 -1
- package/dist/chat/bridge_inbox.d.ts +143 -0
- package/dist/chat/bridge_inbox.d.ts.map +1 -0
- package/dist/chat/bridge_inbox.js +219 -0
- package/dist/chat/bridge_inbox.js.map +1 -0
- package/dist/chat/claude.d.ts +10 -0
- package/dist/chat/claude.d.ts.map +1 -1
- package/dist/chat/claude.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +148 -16
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/recent_sessions_recap.d.ts.map +1 -1
- package/dist/chat/recent_sessions_recap.js +18 -6
- package/dist/chat/recent_sessions_recap.js.map +1 -1
- package/dist/chat/server.d.ts +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +346 -53
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/bridge_verbs.d.ts +10 -0
- package/dist/chat/tools/bridge_verbs.d.ts.map +1 -1
- package/dist/chat/tools/bridge_verbs.js +66 -3
- package/dist/chat/tools/bridge_verbs.js.map +1 -1
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
- package/dist/chat/tools/nac3_invoke.js +20 -3
- package/dist/chat/tools/nac3_invoke.js.map +1 -1
- package/dist/chat/tools/pending.d.ts.map +1 -1
- package/dist/chat/tools/pending.js +27 -4
- package/dist/chat/tools/pending.js.map +1 -1
- package/dist/chat/tools/urazuke.d.ts.map +1 -1
- package/dist/chat/tools/urazuke.js +7 -3
- package/dist/chat/tools/urazuke.js.map +1 -1
- package/dist/chat/tools.d.ts +6 -0
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +4 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/turn_control.d.ts +2 -0
- package/dist/chat/turn_control.d.ts.map +1 -1
- package/dist/chat/turn_control.js +30 -1
- package/dist/chat/turn_control.js.map +1 -1
- package/dist/commands/pending.d.ts.map +1 -1
- package/dist/commands/pending.js +4 -2
- package/dist/commands/pending.js.map +1 -1
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +206 -16
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/cost_router.d.ts +7 -0
- package/dist/core/cost_router.d.ts.map +1 -1
- package/dist/core/cost_router.js +8 -5
- package/dist/core/cost_router.js.map +1 -1
- package/dist/core/limits_config.d.ts +37 -6
- package/dist/core/limits_config.d.ts.map +1 -1
- package/dist/core/limits_config.js +74 -8
- package/dist/core/limits_config.js.map +1 -1
- package/dist/core/whats_new.d.ts.map +1 -1
- package/dist/core/whats_new.js +12 -0
- package/dist/core/whats_new.js.map +1 -1
- package/dist/nac3/danger_zone.d.ts +39 -0
- package/dist/nac3/danger_zone.d.ts.map +1 -0
- package/dist/nac3/danger_zone.js +31 -0
- package/dist/nac3/danger_zone.js.map +1 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +33 -0
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/pending/store.d.ts +7 -0
- package/dist/pending/store.d.ts.map +1 -1
- package/dist/pending/store.js +41 -0
- package/dist/pending/store.js.map +1 -1
- package/dist/urazuke/catalog.d.ts +1 -1
- package/dist/urazuke/catalog.d.ts.map +1 -1
- package/dist/urazuke/catalog.js.map +1 -1
- package/dist/urazuke/current.d.ts +2 -2
- package/dist/urazuke/current.d.ts.map +1 -1
- package/dist/urazuke/current.js +32 -12
- package/dist/urazuke/current.js.map +1 -1
- package/dist/urazuke/gate.d.ts +45 -7
- package/dist/urazuke/gate.d.ts.map +1 -1
- package/dist/urazuke/gate.js +190 -20
- package/dist/urazuke/gate.js.map +1 -1
- package/dist/urazuke/gates_data.d.ts +170 -0
- package/dist/urazuke/gates_data.d.ts.map +1 -1
- package/dist/urazuke/gates_data.js +98 -5
- package/dist/urazuke/gates_data.js.map +1 -1
- package/dist/urazuke/gates_ledger.d.ts +75 -0
- package/dist/urazuke/gates_ledger.d.ts.map +1 -0
- package/dist/urazuke/gates_ledger.js +183 -0
- package/dist/urazuke/gates_ledger.js.map +1 -0
- package/dist/urazuke/gates_pull.d.ts +97 -0
- package/dist/urazuke/gates_pull.d.ts.map +1 -0
- package/dist/urazuke/gates_pull.js +303 -0
- package/dist/urazuke/gates_pull.js.map +1 -0
- package/dist/urazuke/heuristics.d.ts +108 -0
- package/dist/urazuke/heuristics.d.ts.map +1 -0
- package/dist/urazuke/heuristics.js +248 -0
- package/dist/urazuke/heuristics.js.map +1 -0
- package/dist/urazuke/manual_cases.d.ts +31 -0
- package/dist/urazuke/manual_cases.d.ts.map +1 -0
- package/dist/urazuke/manual_cases.js +87 -0
- package/dist/urazuke/manual_cases.js.map +1 -0
- package/dist/urazuke/project_config.d.ts +25 -0
- package/dist/urazuke/project_config.d.ts.map +1 -0
- package/dist/urazuke/project_config.js +65 -0
- package/dist/urazuke/project_config.js.map +1 -0
- package/dist/urazuke/quality.d.ts +0 -8
- package/dist/urazuke/quality.d.ts.map +1 -1
- package/dist/urazuke/quality.js +4 -29
- package/dist/urazuke/quality.js.map +1 -1
- package/dist/urazuke/retro.d.ts.map +1 -1
- package/dist/urazuke/retro.js +4 -1
- package/dist/urazuke/retro.js.map +1 -1
- package/dist/urazuke/scoreboard.d.ts +85 -0
- package/dist/urazuke/scoreboard.d.ts.map +1 -0
- package/dist/urazuke/scoreboard.js +260 -0
- package/dist/urazuke/scoreboard.js.map +1 -0
- package/dist/urazuke/section.d.ts +2 -2
- package/dist/urazuke/section.d.ts.map +1 -1
- package/dist/urazuke/section.js +31 -6
- package/dist/urazuke/section.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/orchestrator.d.ts +9 -0
- package/dist/workflow/orchestrator.d.ts.map +1 -1
- package/dist/workflow/orchestrator.js +17 -16
- package/dist/workflow/orchestrator.js.map +1 -1
- package/package.json +1 -1
- package/src/i18n/catalogs/ar.json +558 -550
- package/src/i18n/catalogs/de.json +558 -550
- package/src/i18n/catalogs/en.json +558 -550
- package/src/i18n/catalogs/es.json +558 -550
- package/src/i18n/catalogs/fr.json +558 -550
- package/src/i18n/catalogs/hi.json +558 -550
- package/src/i18n/catalogs/it.json +558 -550
- package/src/i18n/catalogs/ja.json +558 -550
- package/src/i18n/catalogs/pt.json +558 -550
- package/src/i18n/catalogs/zh.json +558 -550
package/dist/chat/bridge.d.ts
CHANGED
|
@@ -27,6 +27,39 @@ export interface BridgeMessage {
|
|
|
27
27
|
* spending a chat turn on the parent. */
|
|
28
28
|
kind?: string;
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Estado de una entrega dirigida, vivo en el HOST del canal.
|
|
32
|
+
*
|
|
33
|
+
* POR QUE VIVE EN EL HOST (PND-226). El emisor y el destino son procesos
|
|
34
|
+
* distintos: `yujin.bridge.say` devolvia {ok:true} apenas el mensaje entraba
|
|
35
|
+
* al anillo, y `bridge.send` descartaba hasta la respuesta del host, asi que
|
|
36
|
+
* mandarle a un puerto inexistente devolvia el MISMO ok:true que una entrega
|
|
37
|
+
* real. Dos instancias no podian distinguir "no me contesto" de "no lo
|
|
38
|
+
* recibio". El expediente es el unico lugar que las dos pueden consultar.
|
|
39
|
+
*/
|
|
40
|
+
export type BridgeDeliveryStatus = 'queued' | 'awaiting_approval' | 'running' | 'done' | 'refused' | 'expired' | 'no_such_target';
|
|
41
|
+
export interface BridgeDelivery {
|
|
42
|
+
delivery_id: string;
|
|
43
|
+
from: string;
|
|
44
|
+
to: string;
|
|
45
|
+
target_port: number | null;
|
|
46
|
+
hop: number;
|
|
47
|
+
status: BridgeDeliveryStatus;
|
|
48
|
+
/** Detalle del estado: 'disabled', 'hop_cap', 'rate_cap', 'unreachable'... */
|
|
49
|
+
note?: string;
|
|
50
|
+
created_at: number;
|
|
51
|
+
updated_at: number;
|
|
52
|
+
}
|
|
53
|
+
export interface BridgeSendResult {
|
|
54
|
+
ok: boolean;
|
|
55
|
+
seq?: number;
|
|
56
|
+
directed?: boolean;
|
|
57
|
+
delivery_id?: string;
|
|
58
|
+
status?: BridgeDeliveryStatus;
|
|
59
|
+
note?: string;
|
|
60
|
+
/** Posicion en la cola del destino, cuando el destino la informa. */
|
|
61
|
+
position?: number;
|
|
62
|
+
}
|
|
30
63
|
export interface BridgeState {
|
|
31
64
|
instances: BridgeInstance[];
|
|
32
65
|
messages: BridgeMessage[];
|
|
@@ -48,8 +81,17 @@ export interface BridgeHandle {
|
|
|
48
81
|
to?: string;
|
|
49
82
|
hop?: number;
|
|
50
83
|
kind?: string;
|
|
51
|
-
}): Promise<
|
|
84
|
+
}): Promise<BridgeSendResult>;
|
|
52
85
|
state(): Promise<BridgeState>;
|
|
86
|
+
/** Estado de una entrega dirigida, consultado al host. */
|
|
87
|
+
deliveryStatus(delivery_id: string): Promise<{
|
|
88
|
+
found: boolean;
|
|
89
|
+
status?: BridgeDeliveryStatus;
|
|
90
|
+
note?: string;
|
|
91
|
+
delivery?: BridgeDelivery;
|
|
92
|
+
}>;
|
|
93
|
+
/** Reportar al host la disposicion de un entrante (lo llama el RECEPTOR). */
|
|
94
|
+
reportDelivery(delivery_id: string, status: BridgeDeliveryStatus, note?: string): Promise<void>;
|
|
53
95
|
stop(): Promise<void>;
|
|
54
96
|
}
|
|
55
97
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,WAAW,QAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/bridge.js
CHANGED
|
@@ -30,8 +30,14 @@ const MSG_RING = 200;
|
|
|
30
30
|
const MAX_HOP = 3; // refuse to inject past this many hops (loop guard)
|
|
31
31
|
const INJECT_RATE_MAX = 5; // max injected turns per target...
|
|
32
32
|
const INJECT_RATE_WINDOW_MS = 60_000; // ...per this window
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
/* El reintento ya NO existe para un destino OCUPADO: el receptor siempre
|
|
34
|
+
* acepta y encola (ver chat/bridge_inbox.ts). Lo que queda es el reintento por
|
|
35
|
+
* ERROR DE CONEXION -- el panel destino arrancando, o cayendose a mitad del
|
|
36
|
+
* POST -- y ahi tres intentos espaciados SI son la conducta correcta, porque
|
|
37
|
+
* el que no contesta puede volver en un segundo. Si no vuelve, el expediente
|
|
38
|
+
* queda en 'no_such_target' y el emisor lo ve; no se descarta en silencio. */
|
|
39
|
+
const INJECT_RETRY_MS = 4_000; // retry a CONNECTION ERROR this often
|
|
40
|
+
const INJECT_MAX_RETRIES = 3; // ...up to N times, then mark no_such_target
|
|
35
41
|
function pruneRoster(roster) {
|
|
36
42
|
const now = Date.now();
|
|
37
43
|
for (const [id, inst] of roster) {
|
|
@@ -53,6 +59,9 @@ function makeHostServer() {
|
|
|
53
59
|
const roster = new Map();
|
|
54
60
|
const messages = [];
|
|
55
61
|
const seq = { n: 0 };
|
|
62
|
+
/* Expedientes de entrega. Se conservan los ultimos DELIVERY_RING. */
|
|
63
|
+
const deliveries = new Map();
|
|
64
|
+
const DELIVERY_RING = 500;
|
|
56
65
|
/* Per-target injection rate window (loop + cost guard). */
|
|
57
66
|
const injectLog = new Map();
|
|
58
67
|
function rateOk(port) {
|
|
@@ -83,35 +92,97 @@ function makeHostServer() {
|
|
|
83
92
|
}
|
|
84
93
|
return null;
|
|
85
94
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (msg.hop > MAX_HOP)
|
|
95
|
-
return;
|
|
96
|
-
if (attempt === 0 && !rateOk(target.panel_port))
|
|
95
|
+
let dlvN = 0;
|
|
96
|
+
function newDeliveryId() {
|
|
97
|
+
dlvN += 1;
|
|
98
|
+
return 'dlv-' + Date.now().toString(36) + '-' + dlvN.toString(36);
|
|
99
|
+
}
|
|
100
|
+
function setStatus(id, status, note) {
|
|
101
|
+
const row = deliveries.get(id);
|
|
102
|
+
if (!row)
|
|
97
103
|
return;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
row.status = status;
|
|
105
|
+
row.updated_at = Date.now();
|
|
106
|
+
if (note)
|
|
107
|
+
row.note = note;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Abrir el expediente de una entrega dirigida y decidir, EN EL ACTO, lo que
|
|
111
|
+
* se puede decidir sin hablar con el destino: que exista, que no pase el
|
|
112
|
+
* tope de saltos, que respete el ritmo. Esas tres negativas se devuelven al
|
|
113
|
+
* emisor en la respuesta de /message -- antes solo existian como un `return`
|
|
114
|
+
* mudo adentro de deliverDirected, asi que el emisor veia ok:true igual.
|
|
115
|
+
*/
|
|
116
|
+
function openDelivery(msg) {
|
|
117
|
+
const target = resolveTarget(msg.to, msg.from);
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
const row = {
|
|
120
|
+
delivery_id: newDeliveryId(),
|
|
121
|
+
from: msg.from,
|
|
122
|
+
to: msg.to,
|
|
123
|
+
target_port: target ? target.panel_port : null,
|
|
124
|
+
hop: msg.hop,
|
|
125
|
+
status: 'queued',
|
|
126
|
+
created_at: now,
|
|
127
|
+
updated_at: now,
|
|
104
128
|
};
|
|
105
|
-
|
|
129
|
+
deliveries.set(row.delivery_id, row);
|
|
130
|
+
while (deliveries.size > DELIVERY_RING) {
|
|
131
|
+
const first = deliveries.keys().next();
|
|
132
|
+
if (first.done)
|
|
133
|
+
break;
|
|
134
|
+
deliveries.delete(first.value);
|
|
135
|
+
}
|
|
136
|
+
if (!target) {
|
|
137
|
+
setStatus(row.delivery_id, 'no_such_target', 'unknown target');
|
|
138
|
+
return row;
|
|
139
|
+
}
|
|
140
|
+
if (msg.hop > MAX_HOP) {
|
|
141
|
+
setStatus(row.delivery_id, 'refused', 'hop_cap');
|
|
142
|
+
return row;
|
|
143
|
+
}
|
|
144
|
+
if (!rateOk(target.panel_port)) {
|
|
145
|
+
setStatus(row.delivery_id, 'refused', 'rate_cap');
|
|
146
|
+
return row;
|
|
147
|
+
}
|
|
148
|
+
deliverDirected(row.delivery_id, msg, target.panel_port, 0);
|
|
149
|
+
return row;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Empujar el mensaje al inbox del destino. El destino SIEMPRE acepta y
|
|
153
|
+
* encola (bridge_inbox.ts), asi que ya no hay reintento por 'busy': el unico
|
|
154
|
+
* reintento que queda es por error de conexion, y si se agota el expediente
|
|
155
|
+
* queda en 'no_such_target' -- un estado que el emisor puede leer, no un
|
|
156
|
+
* descarte silencioso.
|
|
157
|
+
*/
|
|
158
|
+
function deliverDirected(delivery_id, msg, port, attempt) {
|
|
159
|
+
httpJson('POST', '/api/forge/bridge/inbox', {
|
|
160
|
+
from: msg.from, from_name: msg.from_name, text: msg.text, hop: msg.hop,
|
|
161
|
+
delivery_id,
|
|
162
|
+
}, port)
|
|
106
163
|
.then((r) => {
|
|
107
164
|
const res = (r || {});
|
|
108
|
-
if (res.accepted)
|
|
165
|
+
if (res.accepted) {
|
|
166
|
+
const row = deliveries.get(delivery_id);
|
|
167
|
+
/* El receptor manda su propia transicion por /delivery; no la
|
|
168
|
+
* pisamos si ya llego algo mas avanzado que 'queued'. */
|
|
169
|
+
if (row && row.status === 'queued' && typeof res.position === 'number') {
|
|
170
|
+
row.note = 'queued at position ' + res.position;
|
|
171
|
+
row.updated_at = Date.now();
|
|
172
|
+
}
|
|
109
173
|
return;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
/* 'disabled' (toggle off) or exhausted -> drop; still in the feed. */
|
|
174
|
+
}
|
|
175
|
+
setStatus(delivery_id, 'refused', String(res.reason || 'refused'));
|
|
113
176
|
})
|
|
114
|
-
.catch(() =>
|
|
177
|
+
.catch(() => {
|
|
178
|
+
if (attempt >= INJECT_MAX_RETRIES) {
|
|
179
|
+
setStatus(delivery_id, 'no_such_target', 'unreachable after ' + (attempt + 1) + ' attempts');
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const t = setTimeout(() => deliverDirected(delivery_id, msg, port, attempt + 1), INJECT_RETRY_MS);
|
|
183
|
+
if (typeof t.unref === 'function')
|
|
184
|
+
t.unref();
|
|
185
|
+
});
|
|
115
186
|
}
|
|
116
187
|
const server = http.createServer((req, res) => {
|
|
117
188
|
const send = (code, obj) => {
|
|
@@ -189,15 +260,59 @@ function makeHostServer() {
|
|
|
189
260
|
* but ONLY for the chat lane. A typed lane (kind='session_reply',
|
|
190
261
|
* etc.) must NOT be injected as a chat turn -- it rides the ring for
|
|
191
262
|
* the target to poll. */
|
|
192
|
-
if (to && (!kind || kind === 'chat'))
|
|
193
|
-
|
|
263
|
+
if (to && (!kind || kind === 'chat')) {
|
|
264
|
+
const dl = openDelivery({ from, from_name, text, to, hop });
|
|
265
|
+
send(200, {
|
|
266
|
+
ok: dl.status !== 'no_such_target' && dl.status !== 'refused',
|
|
267
|
+
seq: seq.n, directed: true,
|
|
268
|
+
delivery_id: dl.delivery_id, status: dl.status,
|
|
269
|
+
...(dl.note ? { note: dl.note } : {}),
|
|
270
|
+
});
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
194
273
|
send(200, { ok: true, seq: seq.n, directed: !!to });
|
|
195
274
|
});
|
|
196
275
|
return;
|
|
197
276
|
}
|
|
277
|
+
if (req.method === 'GET' && url.startsWith('/delivery')) {
|
|
278
|
+
const qi = url.indexOf('?');
|
|
279
|
+
const q = qi >= 0 ? new URLSearchParams(url.slice(qi + 1)) : null;
|
|
280
|
+
const id = q ? String(q.get('id') || '') : '';
|
|
281
|
+
const row = id ? deliveries.get(id) : undefined;
|
|
282
|
+
if (!row) {
|
|
283
|
+
send(200, { ok: true, found: false });
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
send(200, { ok: true, found: true, status: row.status, note: row.note, delivery: row });
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
if (req.method === 'POST' && url.startsWith('/delivery')) {
|
|
290
|
+
readBody(req).then((raw) => {
|
|
291
|
+
let b = {};
|
|
292
|
+
try {
|
|
293
|
+
b = JSON.parse(raw || '{}');
|
|
294
|
+
}
|
|
295
|
+
catch { /* ignore */ }
|
|
296
|
+
const id = String(b.delivery_id || '');
|
|
297
|
+
const st = String(b.status || '');
|
|
298
|
+
const valid = ['queued', 'awaiting_approval', 'running',
|
|
299
|
+
'done', 'refused', 'expired', 'no_such_target'];
|
|
300
|
+
if (!id || !valid.includes(st)) {
|
|
301
|
+
send(400, { ok: false });
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
if (!deliveries.has(id)) {
|
|
305
|
+
send(200, { ok: true, found: false });
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
setStatus(id, st, b.note ? String(b.note).slice(0, 200) : undefined);
|
|
309
|
+
send(200, { ok: true, found: true });
|
|
310
|
+
});
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
198
313
|
send(404, { ok: false });
|
|
199
314
|
});
|
|
200
|
-
return { server, roster, messages, seq };
|
|
315
|
+
return { server, roster, messages, seq, deliveries };
|
|
201
316
|
}
|
|
202
317
|
/** Try to bind the bridge port. Resolves to the HostState on success, null on EADDRINUSE. */
|
|
203
318
|
function tryBindHost(port) {
|
|
@@ -275,13 +390,41 @@ export async function startBridge(self, portOverride) {
|
|
|
275
390
|
async function send(text, opts) {
|
|
276
391
|
const t = (text || '').trim();
|
|
277
392
|
if (!t)
|
|
278
|
-
return;
|
|
279
|
-
await call('POST', '/message', {
|
|
393
|
+
return { ok: false, note: 'empty text' };
|
|
394
|
+
const r = (await call('POST', '/message', {
|
|
280
395
|
from: self.id, from_name: self.project_name, text: t,
|
|
281
396
|
...(opts?.to ? { to: opts.to } : {}),
|
|
282
397
|
...(typeof opts?.hop === 'number' ? { hop: opts.hop } : {}),
|
|
283
398
|
...(opts?.kind ? { kind: opts.kind } : {}),
|
|
284
|
-
});
|
|
399
|
+
}));
|
|
400
|
+
return {
|
|
401
|
+
ok: r.ok === true,
|
|
402
|
+
...(typeof r.seq === 'number' ? { seq: r.seq } : {}),
|
|
403
|
+
...(typeof r.directed === 'boolean' ? { directed: r.directed } : {}),
|
|
404
|
+
...(r.delivery_id ? { delivery_id: String(r.delivery_id) } : {}),
|
|
405
|
+
...(r.status ? { status: r.status } : {}),
|
|
406
|
+
...(r.note ? { note: String(r.note) } : {}),
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
async function deliveryStatus(delivery_id) {
|
|
410
|
+
const id = String(delivery_id || '').trim();
|
|
411
|
+
if (!id)
|
|
412
|
+
return { found: false };
|
|
413
|
+
const r = (await call('GET', '/delivery?id=' + encodeURIComponent(id), null));
|
|
414
|
+
if (r.found !== true)
|
|
415
|
+
return { found: false };
|
|
416
|
+
return {
|
|
417
|
+
found: true,
|
|
418
|
+
status: r.status,
|
|
419
|
+
...(r.note ? { note: String(r.note) } : {}),
|
|
420
|
+
...(r.delivery ? { delivery: r.delivery } : {}),
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
async function reportDelivery(delivery_id, status, note) {
|
|
424
|
+
const id = String(delivery_id || '').trim();
|
|
425
|
+
if (!id)
|
|
426
|
+
return;
|
|
427
|
+
await call('POST', '/delivery', { delivery_id: id, status, ...(note ? { note } : {}) });
|
|
285
428
|
}
|
|
286
429
|
async function state() {
|
|
287
430
|
const r = (await call('GET', '/state', null));
|
|
@@ -312,6 +455,8 @@ export async function startBridge(self, portOverride) {
|
|
|
312
455
|
announce,
|
|
313
456
|
send,
|
|
314
457
|
state,
|
|
458
|
+
deliveryStatus,
|
|
459
|
+
reportDelivery,
|
|
315
460
|
stop,
|
|
316
461
|
};
|
|
317
462
|
}
|
package/dist/chat/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,mEAAmE;AACnE,MAAM,OAAO,GAAG,CAAC,CAAC,CAAiB,oDAAoD;AACvF,MAAM,eAAe,GAAG,CAAC,CAAC,CAAS,mCAAmC;AACtE,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,qBAAqB;AAC3D,MAAM,eAAe,GAAG,KAAK,CAAC,CAAK,mCAAmC;AACtE,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAM,2DAA2D;AAiE9F,SAAS,WAAW,CAAC,MAAmC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,aAAa;YAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAyB;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACrB,2DAA2D;IAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,SAAS,MAAM,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC;QACvF,IAAI,GAAG,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QAC9E,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IACvD,CAAC;IACD;uDACmD;IACnD,SAAS,aAAa,CAAC,EAAU,EAAE,MAAc;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM;gBAAE,SAAS;YACjC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI;mBAC/B,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI;mBAC9B,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,IAAI;mBACxC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;yEAGqE;IACrE,SAAS,eAAe,CACtB,GAA+E,EAC/E,OAAO,GAAG,CAAC;QAEX,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,GAAG,CAAC,GAAG,GAAG,OAAO;YAAE,OAAO;QAC9B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,OAAO;QACxD,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,OAAO,IAAI,kBAAkB;gBAAE,OAAO;YAC1C,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YAC/E,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU;gBAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/C,CAAC,CAAC;QACF,QAAQ,CAAC,MAAM,EAAE,yBAAyB,EACxC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC;aAC7F,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAA4C,CAAC;YACjE,IAAI,GAAG,CAAC,QAAQ;gBAAE,OAAO;YACzB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;gBAAE,KAAK,EAAE,CAAC;YACnC,sEAAsE;QACxE,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAY,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAC3B,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrG,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzB,IAAI,CAAC,GAA4B,EAAE,CAAC;gBACpC,IAAI,CAAC;oBAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC3D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACf,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC1C,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;oBAC1C,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;oBACrC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;oBACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzB,IAAI,CAAC,GAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC3D,IAAI,CAAC,CAAC,EAAE;oBAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACzB,IAAI,CAAC,GAA2B,EAAE,CAAC;gBACnC,IAAI,CAAC;oBAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxD,IAAI,CAAC,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACnE,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;oBACjD,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC,MAAM,GAAG,QAAQ;oBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACpD;;;yCAGyB;gBACzB,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC;oBAAE,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC3C,CAAC;AAED,6FAA6F;AAC7F,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,CAAC,GAA0B,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;gBAC/C,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,IAAa,EAAE,IAAY;IACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CACtB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EACxI,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC,CACF,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,YAAqB;IACvE,MAAM,IAAI,GAAG,YAAY,IAAI,WAAW,CAAC;IACzC,IAAI,IAAI,GAAqB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB;gDAC4C;IAC5C,KAAK,UAAU,UAAU;QACvB,IAAI,OAAO,IAAI,IAAI;YAAE,OAAO;QAC5B,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC;YAAE,IAAI,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,IAAY,EAAE,IAAa;QAC7D,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;YAC3D,MAAM,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC;gBAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,KAAK,UAAU,QAAQ;QACrB,MAAM,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,IAAmD;QACnF,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,OAAO,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,KAAK;QAClB,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAyB,CAAC;QACtE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC7H,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACrF,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;QAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAEnD,KAAK,UAAU,IAAI;QACjB,OAAO,GAAG,IAAI,CAAC;QACf,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC;YAAC,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7E,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtC,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,QAAQ;QACR,IAAI;QACJ,KAAK;QACL,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/chat/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { BridgeConfig } from '../core/limits_config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Cuanto tolera esperar un mensaje en la cola.
|
|
4
|
+
*
|
|
5
|
+
* El numero no es suelto: el turno mas largo MEDIDO en esta maquina el
|
|
6
|
+
* 27-oct-2026 fue la compuerta de publicacion, ~16 minutos (1943 s de reloj
|
|
7
|
+
* contra 372 s de la corrida limpia). Treinta minutos es el doble de ese
|
|
8
|
+
* techo, asi que un mensaje sobrevive al turno real mas largo que se midio y
|
|
9
|
+
* sigue siendo lo bastante corto para que un vencido signifique algo (el panel
|
|
10
|
+
* se colgo, el proceso murio) y no "estuvo ahi desde ayer".
|
|
11
|
+
*/
|
|
12
|
+
export declare const INBOX_TTL_MS: number;
|
|
13
|
+
/**
|
|
14
|
+
* Tope de mensajes en espera POR EMISOR.
|
|
15
|
+
*
|
|
16
|
+
* El doble del techo de entrada que ya existia (INJECT_RATE_MAX = 5 por
|
|
17
|
+
* minuto por destino, en bridge.ts): una instancia que respeta el ritmo de
|
|
18
|
+
* entrada nunca llega al tope, y una que se desboca no puede llenar la cola
|
|
19
|
+
* del vecino. Cuando se llena, el mas VIEJO cede el lugar -- y cede diciendo
|
|
20
|
+
* que cedio, no en silencio.
|
|
21
|
+
*/
|
|
22
|
+
export declare const INBOX_MAX_PER_SENDER = 10;
|
|
23
|
+
export type DeliveryStatus = 'queued' | 'awaiting_approval' | 'running' | 'done' | 'refused' | 'expired' | 'no_such_target';
|
|
24
|
+
export interface InboundDirected {
|
|
25
|
+
delivery_id: string;
|
|
26
|
+
/** Id completo del emisor tal como lo publica el roster: '<slug>-<puerto>-<pid>'. */
|
|
27
|
+
from: string;
|
|
28
|
+
from_name: string;
|
|
29
|
+
/** Puerto del panel emisor, extraido del id. Es la mitad estable del par. */
|
|
30
|
+
from_port: string;
|
|
31
|
+
hop: number;
|
|
32
|
+
/** El texto del emisor, CARACTER POR CARACTER. Nadie lo reescribe. */
|
|
33
|
+
text: string;
|
|
34
|
+
received_at: number;
|
|
35
|
+
}
|
|
36
|
+
export interface EnqueueResult {
|
|
37
|
+
accepted: boolean;
|
|
38
|
+
/** Id local del entrante en ESTA casilla (el host lleva su propio id). */
|
|
39
|
+
delivery_id: string;
|
|
40
|
+
/** Posicion en la cola (1 = el proximo). */
|
|
41
|
+
position: number;
|
|
42
|
+
/** Cuando el mismo emisor ya tenia este mismo texto esperando. */
|
|
43
|
+
duplicate_of?: string;
|
|
44
|
+
/** Id del mensaje que cedio el lugar al llenarse el tope del emisor. */
|
|
45
|
+
evicted?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Lo que el receptor va a hacer con un entrante. */
|
|
48
|
+
export type DeliveryPlan = {
|
|
49
|
+
action: 'run';
|
|
50
|
+
turn: InjectedTurn;
|
|
51
|
+
} | {
|
|
52
|
+
action: 'ask';
|
|
53
|
+
} | {
|
|
54
|
+
action: 'refuse';
|
|
55
|
+
reason: 'disabled';
|
|
56
|
+
};
|
|
57
|
+
/** El cuerpo que se POSTea a /api/chat. Es el MISMO que compone un turno
|
|
58
|
+
* tipeado salvo los metadatos de procedencia. */
|
|
59
|
+
export interface InjectedTurn {
|
|
60
|
+
messages: Array<{
|
|
61
|
+
role: 'user';
|
|
62
|
+
content: string;
|
|
63
|
+
}>;
|
|
64
|
+
origin: 'bridge';
|
|
65
|
+
bridge_hop: number;
|
|
66
|
+
bridge_delivery_id: string;
|
|
67
|
+
bridge_from: string;
|
|
68
|
+
bridge_from_port: string;
|
|
69
|
+
/** Solo presente cuando el DUENO declaro bridge.tier='eco'. Ausente =
|
|
70
|
+
* el mismo nivel que un turno tipeado (chat_default_tier). */
|
|
71
|
+
brain_tier_override?: 'eco';
|
|
72
|
+
}
|
|
73
|
+
/** Puerto del panel emisor a partir del id del roster ('<slug>-<puerto>-<pid>'). */
|
|
74
|
+
export declare function senderPort(fromId: string): string;
|
|
75
|
+
/** Identidad ESTABLE del emisor para los pares de confianza. El pid cambia en
|
|
76
|
+
* cada arranque, asi que el id completo no sirve: el par es slug + puerto. */
|
|
77
|
+
export declare function senderIdentity(fromId: string, fromName: string): string;
|
|
78
|
+
export declare function enqueueDirected(msg: {
|
|
79
|
+
from: string;
|
|
80
|
+
from_name: string;
|
|
81
|
+
text: string;
|
|
82
|
+
hop: number;
|
|
83
|
+
}, receivedAt?: number): EnqueueResult;
|
|
84
|
+
/** Saca de la cola los vencidos y los DEVUELVE, para que el llamador los
|
|
85
|
+
* reporte. Nunca descarta en silencio. */
|
|
86
|
+
export declare function dropExpired(now?: number): InboundDirected[];
|
|
87
|
+
/** El proximo entrante vivo, o null. Los vencidos NO salen por aca: para eso
|
|
88
|
+
* esta dropExpired, que los nombra. */
|
|
89
|
+
export declare function takeNextDirected(now?: number): InboundDirected | null;
|
|
90
|
+
export declare function inboxDepth(): number;
|
|
91
|
+
export declare function peekInbox(): InboundDirected[];
|
|
92
|
+
/** Test hook. */
|
|
93
|
+
export declare function _resetBridgeInbox(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Que hacer con un entrante, dada la postura del dueno.
|
|
96
|
+
*
|
|
97
|
+
* Es una funcion PURA a proposito: la decision de si un pedido de otro proceso
|
|
98
|
+
* corre sin humano en el medio es lo mas delicado del canal, y tiene que poder
|
|
99
|
+
* probarse sin levantar un servidor.
|
|
100
|
+
*/
|
|
101
|
+
export declare function planDelivery(msg: InboundDirected, cfg: BridgeConfig): DeliveryPlan;
|
|
102
|
+
/** Un emisor es de confianza si el dueno lo declaro por par ('<slug>:<puerto>'),
|
|
103
|
+
* por puerto suelto, o por slug suelto. */
|
|
104
|
+
export declare function isTrustedPeer(msg: InboundDirected, autoFrom: readonly string[]): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* El cuerpo del turno inyectado.
|
|
107
|
+
*
|
|
108
|
+
* Lo que NO hace, y es el arreglo (D2a + D2b):
|
|
109
|
+
* - no fuerza 'eco'. El mismo texto corria contra un cerebro mas debil solo
|
|
110
|
+
* por venir del canal, y el log lo anotaba como "user slash command /eco"
|
|
111
|
+
* -- una atribucion falsa: nadie tipeo /eco. Hoy solo baja de nivel si el
|
|
112
|
+
* dueno lo declaro en bridge.tier.
|
|
113
|
+
* - no envuelve el texto. La procedencia va en los campos bridge_*; el panel
|
|
114
|
+
* la pinta como marca de la burbuja.
|
|
115
|
+
*/
|
|
116
|
+
export declare function composeInjectedTurn(msg: InboundDirected, tier: BridgeConfig['tier']): InjectedTurn;
|
|
117
|
+
export interface BridgeDeliveryLogEntry {
|
|
118
|
+
ts: string;
|
|
119
|
+
delivery_id: string;
|
|
120
|
+
direction: 'in' | 'out';
|
|
121
|
+
from: string;
|
|
122
|
+
from_port: string;
|
|
123
|
+
to_port?: string;
|
|
124
|
+
hop: number;
|
|
125
|
+
disposition: DeliveryStatus | 'queued' | 'duplicate' | 'evicted';
|
|
126
|
+
mode?: string;
|
|
127
|
+
/** Quien aprobo, cuando hubo modal. */
|
|
128
|
+
approved_by?: string;
|
|
129
|
+
note?: string;
|
|
130
|
+
/** Largo del texto. El TEXTO no se registra: el rastro es para auditar el
|
|
131
|
+
* canal, no para duplicar la conversacion en otro archivo. */
|
|
132
|
+
text_len: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Fila append-only por cada entrante y su disposicion.
|
|
136
|
+
*
|
|
137
|
+
* Un console.error en el stderr de un panel no lo lee nadie: los seis mensajes
|
|
138
|
+
* perdidos del 27-oct solo dejaron rastro ahi, y por eso nadie se entero. El
|
|
139
|
+
* precedente es nac3_approvals.jsonl.
|
|
140
|
+
*/
|
|
141
|
+
export declare function logBridgeDelivery(entry: BridgeDeliveryLogEntry): Promise<void>;
|
|
142
|
+
export declare function bridgeDeliveryLogPath(): string;
|
|
143
|
+
//# sourceMappingURL=bridge_inbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge_inbox.d.ts","sourceRoot":"","sources":["../../src/chat/bridge_inbox.ts"],"names":[],"mappings":"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"}
|