@nac3/forge-cli 1.0.24 → 1.0.26

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.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/chat/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAKjG,OAAO,EAAoD,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAErH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAmCjD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;;;;;wDAQoD;IACpD,YAAY,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAAC;IACnD;;2DAEuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;+CAC2C;IAC3C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;kEAG8D;IAC9D,OAAO,CAAC,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAqBD,wBAAsB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAoahF;AAED,UAAU,GAAG;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IAIvB,OAAO,CAAC,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;IAMjD,YAAY,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAAC;IAKnD,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAG3G,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlE,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpD;AAw9ID,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,EACR,IAAI,GAAE,SAAuB,EAC7B,UAAU,GAAE;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAErF;AACD;;;qDAGqD;AACrD,KAAK,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACrE;;;;;2CAK2C;AAC3C,sBAAsB,GAAE,MAAW;AACnC;;;;;;;4DAO4D;AAC5D,YAAY,GAAE,OAAe;AAC7B;;;;;;;uDAOuD;AACvD,mBAAmB,GAAE,MAAW;AAChC;;;;kEAIkE;AAClE,gBAAgB,GAAE,MAAW;AAC7B;;;;;;;;;;;+BAW+B;AAC/B,SAAS,GAAE,QAAQ,GAAG,YAAY,GAAG,MAAiB,GACrD,MAAM,CA6eR"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/chat/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAKjG,OAAO,EAAoD,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AAErH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAczB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAmCjD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;;;;;;wDAQoD;IACpD,YAAY,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAAC;IACnD;;2DAEuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B;+CAC2C;IAC3C,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;kEAG8D;IAC9D,OAAO,CAAC,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAqBD,wBAAsB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAoahF;AAED,UAAU,GAAG;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,eAAe,CAAC;IAIvB,OAAO,CAAC,EAAE,OAAO,sBAAsB,EAAE,OAAO,CAAC;IAMjD,YAAY,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAAC;IAKnD,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAG3G,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAGlE,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC;CACpD;AAs+ID,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,EACR,IAAI,GAAE,SAAuB,EAC7B,UAAU,GAAE;IAAE,eAAe,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAErF;AACD;;;qDAGqD;AACrD,KAAK,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACrE;;;;;2CAK2C;AAC3C,sBAAsB,GAAE,MAAW;AACnC;;;;;;;4DAO4D;AAC5D,YAAY,GAAE,OAAe;AAC7B;;;;;;;uDAOuD;AACvD,mBAAmB,GAAE,MAAW;AAChC;;;;kEAIkE;AAClE,gBAAgB,GAAE,MAAW;AAC7B;;;;;;;;;;;+BAW+B;AAC/B,SAAS,GAAE,QAAQ,GAAG,YAAY,GAAG,MAAiB,GACrD,MAAM,CAsfR"}
@@ -1379,19 +1379,32 @@ async function route(req, res, ctx) {
1379
1379
  catch {
1380
1380
  accept = true;
1381
1381
  }
1382
+ const fromNameEarly = String(body.from_name || 'otra instancia');
1382
1383
  if (!accept) {
1384
+ try {
1385
+ console.error('[bridge] directed message from ' + fromNameEarly + ' DROPPED (accept_directed=off)');
1386
+ }
1387
+ catch { /* */ }
1383
1388
  sendJson(res, 200, { ok: true, accepted: false, reason: 'disabled' });
1384
1389
  return;
1385
1390
  }
1386
1391
  if (isTurnActive()) {
1392
+ try {
1393
+ console.error('[bridge] directed message from ' + fromNameEarly + ' deferred (busy; host will retry)');
1394
+ }
1395
+ catch { /* */ }
1387
1396
  sendJson(res, 200, { ok: true, accepted: false, reason: 'busy' });
1388
1397
  return;
1389
1398
  }
1390
- const fromName = String(body.from_name || 'otra instancia');
1399
+ const fromName = fromNameEarly;
1391
1400
  const fromId = String(body.from || '');
1392
1401
  const m = fromId.match(/-(\d+)-\d+$/);
1393
1402
  const fromPort = m ? m[1] : '';
1394
1403
  const hop = Math.max(0, Math.min(10, Number(body.hop) || 0));
1404
+ try {
1405
+ console.error('[bridge] injecting directed message from ' + fromName + (fromPort ? ' (:' + fromPort + ')' : '') + ' as a chat turn (hop=' + hop + ')');
1406
+ }
1407
+ catch { /* */ }
1395
1408
  const tagged = '[Coordinacion entre instancias] Mensaje DIRIGIDO de Forge "' + fromName + '"'
1396
1409
  + (fromPort ? ' (:' + fromPort + ')' : '') + ':\n\n' + text
1397
1410
  + '\n\n(Responde en el chat. Si necesitas contestarle por el canal usa yujin.bridge.say con to:"'
@@ -4649,6 +4662,12 @@ async function handleChat(req, res, ctx) {
4649
4662
  * until the queue (task #28) serializes turns. */
4650
4663
  turnId = sessionId + ':' + String(Date.now());
4651
4664
  const turnSignal = beginTurn(turnId);
4665
+ /* Pablo 2026-06-19 -- response-token cap from config, NOT the old hardcoded
4666
+ * 1024 that starved BYOK/Console agentic turns (verbose narration ate the
4667
+ * budget before the tool_use block, so verbs never fired -> the tester's
4668
+ * "narro sin invocar"). Plan/CLI ignores this; BYOK + managed honour it. */
4669
+ const { readLimitsConfig: _readLimForTokens } = await import('../core/limits_config.js');
4670
+ const _maxTokensPerTurn = (await _readLimForTokens()).max_tokens_per_turn;
4652
4671
  const chatRequest = {
4653
4672
  messages: turnMessages,
4654
4673
  signal: turnSignal,
@@ -4681,7 +4700,7 @@ async function handleChat(req, res, ctx) {
4681
4700
  ? (ctx.panelPushToken ? 'mcp-bridge' : 'none')
4682
4701
  : 'native'),
4683
4702
  systemDynamic: projectContextSection + snapshotSection + graphSection + wiringSection + toolingSection + workflowSection,
4684
- maxTokens: 1024,
4703
+ maxTokens: _maxTokensPerTurn,
4685
4704
  tools: FORGE_TOOL_SPECS,
4686
4705
  runTool: async (name, input) => {
4687
4706
  /* alpha.59e -- loop detection. Build a signature from
@@ -5344,6 +5363,15 @@ panelMode = 'native') {
5344
5363
  'user trust + triggers a quality detector that escalates the',
5345
5364
  'next turn to a stronger model.',
5346
5365
  '',
5366
+ 'COORDINACION ENTRE INSTANCIAS (yujin.bridge.*): para que OTRA instancia',
5367
+ 'reciba algo EN SU CHAT y lo conteste (saludo, pregunta, handoff, "decile a',
5368
+ 'la otra que..."), usa yujin.bridge.say CON `to`=<panel port> (DIRIGIDO): se',
5369
+ 'inyecta como turno alla. Un say SIN `to` es solo un broadcast pasivo que',
5370
+ 'queda en el feed y NO entra a ningun chat. Para alcanzar a VARIAS/todas:',
5371
+ 'llama yujin.bridge.peers y luego un say dirigido POR CADA peer usando su',
5372
+ 'PUERTO (si comparten nombre de proyecto, el nombre es ambiguo -- usa el',
5373
+ 'puerto). NO uses un solo broadcast cuando esperas que te respondan.',
5374
+ '',
5347
5375
  ...(tierHeader ? [tierHeader, ''] : []),
5348
5376
  'LEMA YUJIN: "La tecnologia desaparece. El sistema aprende de vos, no vos del sistema." Toda decision se evalua contra esto.',
5349
5377
  '',