@nac3/forge-cli 1.27.0 → 1.28.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.
Files changed (36) hide show
  1. package/dist/chat/graph_snapshot.d.ts +24 -0
  2. package/dist/chat/graph_snapshot.d.ts.map +1 -1
  3. package/dist/chat/graph_snapshot.js +28 -3
  4. package/dist/chat/graph_snapshot.js.map +1 -1
  5. package/dist/chat/history_budget.d.ts +114 -0
  6. package/dist/chat/history_budget.d.ts.map +1 -0
  7. package/dist/chat/history_budget.js +98 -0
  8. package/dist/chat/history_budget.js.map +1 -0
  9. package/dist/chat/server.d.ts.map +1 -1
  10. package/dist/chat/server.js +49 -0
  11. package/dist/chat/server.js.map +1 -1
  12. package/dist/chat/tools/pending.d.ts.map +1 -1
  13. package/dist/chat/tools/pending.js +25 -10
  14. package/dist/chat/tools/pending.js.map +1 -1
  15. package/dist/chat/tools/pending_ack.d.ts +82 -0
  16. package/dist/chat/tools/pending_ack.d.ts.map +1 -0
  17. package/dist/chat/tools/pending_ack.js +55 -0
  18. package/dist/chat/tools/pending_ack.js.map +1 -0
  19. package/dist/core/instructions_budget.d.ts +113 -0
  20. package/dist/core/instructions_budget.d.ts.map +1 -0
  21. package/dist/core/instructions_budget.js +165 -0
  22. package/dist/core/instructions_budget.js.map +1 -0
  23. package/dist/core/limits_config.d.ts +15 -0
  24. package/dist/core/limits_config.d.ts.map +1 -1
  25. package/dist/core/limits_config.js +17 -0
  26. package/dist/core/limits_config.js.map +1 -1
  27. package/dist/nac3/manifest_lazy.d.ts +15 -0
  28. package/dist/nac3/manifest_lazy.d.ts.map +1 -1
  29. package/dist/nac3/manifest_lazy.js +17 -1
  30. package/dist/nac3/manifest_lazy.js.map +1 -1
  31. package/dist/urazuke/evidence.d.ts.map +1 -1
  32. package/dist/urazuke/evidence.js +14 -2
  33. package/dist/urazuke/evidence.js.map +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pending.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pending.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { pendingAck } from './pending_ack.js';
1
2
  import { listPending, findPending, addPending, closePending, editPending, appendPendingHistory, } from '../../pending/store.js';
2
3
  function requireSlug(ctx) {
3
4
  const slug = ctx.projectSlug;
@@ -113,17 +114,21 @@ export async function runPendingAdd(args, ctx) {
113
114
  const { findSimilarOpenPendings } = await import('../../pending/store.js');
114
115
  const parecidos = await findSimilarOpenPendings(slug, args.title);
115
116
  const item = await addPending(slug, input);
117
+ /* P4 (PND-283) -- ACUSE, no el item. Devolvia el `body` y la `spec`
118
+ * enteros que acababan de llegar en los argumentos: eco del 84% medido
119
+ * sobre 165 llamadas. Lo que el servidor NORMALIZO si viaja (ver
120
+ * pending_ack.ts): una correccion silenciosa es peor que el eco. */
121
+ const warning = parecidos.length
122
+ ? 'Hay ' + parecidos.length + ' item(s) ABIERTOS con titulo parecido ('
123
+ + parecidos.map((x) => x.id).join(', ') + '). Revisa si este es un duplicado '
124
+ + 'antes de seguir: si lo es, cerralo con reason=duplicate apuntando al que queda.'
125
+ : '';
116
126
  return {
117
127
  tool: 'yujin.pending.add',
118
128
  result: {
119
129
  project: slug,
120
- item,
121
- ...(parecidos.length ? {
122
- similar_open: parecidos,
123
- warning: 'Hay ' + parecidos.length + ' item(s) ABIERTOS con titulo parecido ('
124
- + parecidos.map((x) => x.id).join(', ') + '). Revisa si este es un duplicado '
125
- + 'antes de seguir: si lo es, cerralo con reason=duplicate apuntando al que queda.',
126
- } : {}),
130
+ ack: pendingAck(item, args, warning ? { warnings: [warning] } : {}),
131
+ ...(parecidos.length ? { similar_open: parecidos, warning } : {}),
127
132
  },
128
133
  display: 'pending.add -> ' + item.id + ' (' + item.title + ')'
129
134
  + (parecidos.length ? ' [ojo: ' + parecidos.length + ' parecido(s) abiertos]' : ''),
@@ -371,7 +376,11 @@ export async function runPendingClose(args, ctx) {
371
376
  }
372
377
  return {
373
378
  tool: 'yujin.pending.close',
374
- result: { project: slug, item, ...(workflowClosed ? { workflow_closed: workflowClosed } : {}) },
379
+ /* P4 -- acuse. El cierre es el retorno mas grande de los cuatro
380
+ * (2.825 tokens por llamada): llevaba el `implementation` entero, que
381
+ * el agente acaba de escribir en los argumentos. */
382
+ result: { project: slug, ack: pendingAck(item, {}),
383
+ ...(workflowClosed ? { workflow_closed: workflowClosed } : {}) },
375
384
  display: 'pending.close -> ' + item.id + ' (' + (item.closed_reason ?? '?') + ')'
376
385
  + (workflowClosed ? ' [workflow ' + workflowClosed + ' completado]' : '') + reportText,
377
386
  };
@@ -393,7 +402,10 @@ export async function runPendingNote(args, ctx) {
393
402
  const item = await appendPendingHistory(slug, args.id, { note: args.note.trim(), kind });
394
403
  return {
395
404
  tool: 'yujin.pending.note',
396
- result: { project: slug, item, entries: (item.history ?? []).length },
405
+ /* P4 -- acuse. El `entries` ya era lo unico que el agente miraba; el
406
+ * item entero viajaba al lado con TODO el history, que es justo el
407
+ * texto que el agente fue escribiendo turno a turno. */
408
+ result: { project: slug, ack: pendingAck(item, {}), entries: (item.history ?? []).length },
397
409
  display: 'pending.note -> ' + item.id + ' [' + kind + ']',
398
410
  };
399
411
  }
@@ -429,7 +441,10 @@ export async function runPendingEdit(args, ctx) {
429
441
  const item = await editPending(slug, args.id, patch);
430
442
  return {
431
443
  tool: 'yujin.pending.edit',
432
- result: { project: slug, item },
444
+ /* P4 -- acuse. Aca la mitad que importa es la mas visible: un edit
445
+ * que el registro normaliza tiene que decirlo, o el agente cree que
446
+ * dejo escrito lo que mando. */
447
+ result: { project: slug, ack: pendingAck(item, args) },
433
448
  display: 'pending.edit -> ' + item.id,
434
449
  };
435
450
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pending.js","sourceRoot":"","sources":["../../../src/chat/tools/pending.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pending.js","sourceRoot":"","sources":["../../../src/chat/tools/pending.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAC/D,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAKhC,SAAS,WAAW,CAAC,GAAgB;IACnC,MAAM,IAAI,GAAI,GAAgC,CAAC,WAAW,CAAC;IAC3D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,0FAA0F,EAAE,CAAC;IAC/G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,OAAe;IACxC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC;AAC9F,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,GAAgB;IACnE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAyF,EAAE,CAAC;IACxG,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7G,IAAI,IAAI,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACnD,IAAI,IAAI,CAAC,WAAW;QAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,EAAE,EAAY,CAAC,CAAC,EAAE;QAClB,KAAK,EAAS,CAAC,CAAC,KAAK;QACrB,QAAQ,EAAM,CAAC,CAAC,QAAQ;QACxB,QAAQ,EAAM,CAAC,CAAC,QAAQ;QACxB,WAAW,EAAG,CAAC,CAAC,WAAW;QAC3B,MAAM,EAAQ,CAAC,CAAC,SAAS,KAAK,SAAS;KACxC,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,IAAI,EAAI,oBAAoB;QAC5B,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;QAC/F,OAAO,EAAE,kBAAkB,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KACxH,CAAC;AACJ,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAkB,EAAE,GAAgB;IAC3E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,wBAAwB,EAAE,+BAA+B,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,wBAAwB,EAAE,0CAA0C,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,OAAO;QACL,IAAI,EAAK,wBAAwB;QACjC,MAAM,EAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;QACjD,OAAO,EAAE,sBAAsB,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU;KAC1F,CAAC;AACJ,CAAC;AAkBD;;;;;;;;;wDASwD;AACxD,SAAS,YAAY,CAAC,CAAoE;IACxF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACpF,OAAO;QACL,UAAU,EAAE,GAAG,IAAI,EAAE;QACrB,YAAY,EAAE,GAAG,IAAI,EAAE;QACvB,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAa,EAAE,GAAgB;IACjE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,MAAM,KAAK,GAAqC;YAC9C,KAAK,EAAK,IAAI,CAAC,KAAK;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAU,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5D,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B;;;;6DAIqD;QACrD,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C;;;4EAGoE;QACpE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM;YAC9B,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,yCAAyC;kBACnE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,oCAAoC;kBAC5E,iFAAiF;YACrF,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,IAAI,EAAK,mBAAmB;YAC5B,MAAM,EAAG;gBACP,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,IAAyB,EAC7C,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;YACD,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG;kBAC1D,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;SACtF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,mBAAmB,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AA8BD;;;;GAIG;AACH,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CAAC,IAAe;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,uFAAuF;kBAC/F,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,GAAG,4BAA4B,GAAG,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3H,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QACjF,CAAC;QACD;;;;wBAIgB;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,mFAAmF;kBAC3F,8EAA8E,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,yFAAyF;kBAC5F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;kBAClB,0FAA0F;kBAC1F,4FAA4F;kBAC5F,6BAA6B,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;4BAEwB;IACxB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,gCAAgC,GAAG,IAAI,CAAC,MAAM,GAAG,6CAA6C;cACjG,oEAAoE,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAe,EAAE,GAAgB;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACpD;;;;4DAIwD;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD;;qEAEiE;IACjE,CAAC;QACC,MAAM,EAAE,WAAW,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACrF,MAAM,EACJ,mBAAmB,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,qBAAqB,GACzF,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C;;;;;;uBAMe;QACf,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;eAC1D,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAChE,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC,EAAE,GAAG,qCAAqC;0BACrG,oDAAoD,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;0BAC7E,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU;0BAC/E,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa;0BACnC,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,GAAG,+CAA+C,CAAC,CAAC,CAAC,EAAE,CAAC;0BACzH,sDAAsD,GAAG,IAAI,CAAC,EAAE,GAAG,oBAAoB;0BACvF,2FAA2F;0BAC3F,oDAAoD,GAAG,QAAQ,GAAG,uBAAuB;0BACzF,yFAAyF;0BACzF,iDAAiD,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,IAAI,IAAI,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D;8EACkE;YAClE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;gBACrE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACX,OAAO,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC,EAAE,GAAG,qDAAqD;0BACrH,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa;0BAC9I,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,GAAG,+CAA+C,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;0BAC/H,qDAAqD,GAAG,IAAI,CAAC,EAAE,GAAG,iEAAiE;0BACnI,uBAAuB,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;oBACxC,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,4BAA4B,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAC,IAAI,GAAG,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW;oBAClH,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAK,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;iBAC3E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACrE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;oBACvB,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI;0BACnE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,YAAY;4BACtC,CAAC,CAAC,mDAAmD;4BACrD,CAAC,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC3D,CAAC,CAAC,mCAAmC,GAAG,IAAI,CAAC,UAAW,CAAC,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,UAAW,CAAC,KAAK,GAAG,IAAI,CAAC;gBACtG,OAAO,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,GAAG,GAAG;sBAC5E,wGAAwG;sBACxG,gEAAgE,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACxE,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;gBACxC,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,4BAA4B,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG;sBAClE,CAAC,IAAI,CAAC,QAAQ;wBACd,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG;wBAClH,CAAC,CAAC,mBAAmB,CAAC;gBAC1B,QAAQ,EAAE;oBACR,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBACtC,IAAI,EAAE,EAAE,CAAC,IAAK;oBACd,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvE;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,KAAK,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,CAAC;QACxE;;mCAE2B;IAC7B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAuC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1D,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACtE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACtE,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;YAAE,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC9F,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACpE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5E,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E;;sCAE8B;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;gBAC1E,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;YAAC,CAAC;QAC3B,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;YAAE,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;QAC/E;4EACoE;QACpE,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClG,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBAC1F,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;oBAChD,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/E,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1E,CAAC,CAAC;gBACH,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;gBACnB,UAAU,GAAG,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,gEAAgE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACtD;;;8EAGsE;QACtE,IAAI,cAAkC,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;gBAChF,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClE,IAAI,IAAI;oBAAE,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO;YACL,IAAI,EAAK,qBAAqB;YAC9B;;gEAEoD;YACpD,MAAM,EAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC3E,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,GAAG,GAAG;kBAC7E,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU;SACzF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,qBAAqB,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,GAAgB;IACnE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,GAAG,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,KAAK,GAAkC,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO;YACL,IAAI,EAAK,oBAAoB;YAC7B;;oEAEwD;YACxD,MAAM,EAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAC3F,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG;SAC1D,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,oBAAoB,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,GAAgB;IACnE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,KAAK,GAAsC,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAS,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAU,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAC5E,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1E;iDACyC;QACzC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO;YACL,IAAI,EAAK,oBAAoB;YAC7B;;4CAEgC;YAChC,MAAM,EAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,IAAyB,CAAC,EAAE;YAC5E,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC,EAAE;SACtC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,oBAAoB,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Yujin Forge -- el ACUSE de los verbos de escritura del registro
3
+ * (P4, PND-283).
4
+ *
5
+ * EL PROBLEMA, MEDIDO
6
+ *
7
+ * Los cuatro verbos de escritura del registro (`pending.add` / `.note` /
8
+ * `.close` / `.edit`) devolvian el item ENTERO: 382 llamadas, 774.766
9
+ * tokens devueltos, USD 19,12 ponderado por relectura, eco medio 47%. El
10
+ * peor es `pending.add`: 165 llamadas, eco del 84%. Devolvia el `body`
11
+ * completo y la `spec` completa que acababan de llegar en los argumentos,
12
+ * mas dos timestamps. Y lo devuelto se relee en todas las llamadas
13
+ * siguientes del turno, asi que el eco se paga muchas veces.
14
+ *
15
+ * LA REGLA, Y ES LA PARTE DELICADA
16
+ *
17
+ * "Devolver menos" a secas es un arreglo peligroso: lo que el servidor
18
+ * NORMALIZA o RECHAZA no es eco, es informacion. Si el registro recorta un
19
+ * titulo, ajusta una prioridad fuera de rango o cae a una categoria
20
+ * distinta de la pedida, el agente tiene que verlo -- si no, cree que
21
+ * guardo una cosa y guardo otra, y eso es dano silencioso (SQ 0.3).
22
+ *
23
+ * Entonces la regla es:
24
+ *
25
+ * devolver los campos que el servidor TOCO, mas el acuse;
26
+ * nunca los que paso tal cual.
27
+ *
28
+ * Y una distincion que parece menor y no lo es: un campo que el agente NO
29
+ * mando y que el servidor completo con su default (priority 50) NO es una
30
+ * normalizacion -- no corrige nada que el agente haya escrito. Si contara
31
+ * como tal, cada `add` devolveria ruido y la palanca no ahorraria nada.
32
+ * El valor aplicado viaja igual, pero como parte del acuse compacto.
33
+ *
34
+ * ASCII-only.
35
+ */
36
+ import type { PendingItem } from '../../pending/types.js';
37
+ /** Lo que el agente mando. Solo se comparan las claves presentes. */
38
+ export interface PendingSentFields {
39
+ title?: string;
40
+ body?: string;
41
+ category?: string;
42
+ priority?: number;
43
+ blocker_kind?: string;
44
+ blocker_who?: string;
45
+ related_doc?: string;
46
+ }
47
+ export interface PendingAckExtras {
48
+ /** Advertencias del servidor (duplicados parecidos, compuertas). NO son
49
+ * eco: el agente no las escribio. */
50
+ warnings?: string[];
51
+ /** El veredicto de una compuerta (Urazuke) cuando la hubo. */
52
+ gate?: unknown;
53
+ }
54
+ export interface PendingAck {
55
+ id: string;
56
+ status: 'open' | 'closed';
57
+ priority: number;
58
+ category: string;
59
+ created_at: number;
60
+ updated_at: number;
61
+ closed_at?: number;
62
+ closed_reason?: string;
63
+ /** Cuantas entradas tiene el history. El contenido NO viaja: es lo que el
64
+ * agente fue escribiendo turno a turno. */
65
+ history_entries?: number;
66
+ /** Solo los campos que el servidor CAMBIO respecto de lo enviado. */
67
+ normalized?: Record<string, unknown>;
68
+ warnings?: string[];
69
+ gate?: unknown;
70
+ /** Una linea para el agente. */
71
+ message: string;
72
+ }
73
+ /**
74
+ * Armar el acuse de una escritura del registro.
75
+ *
76
+ * `sent` son los argumentos que llegaron del agente; solo las claves
77
+ * PRESENTES se comparan. Una clave ausente significa "no escribi nada
78
+ * ahi", y entonces lo que el servidor haya puesto es su default, no una
79
+ * correccion.
80
+ */
81
+ export declare function pendingAck(item: PendingItem, sent?: PendingSentFields, extras?: PendingAckExtras): PendingAck;
82
+ //# sourceMappingURL=pending_ack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending_ack.d.ts","sourceRoot":"","sources":["../../../src/chat/tools/pending_ack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B;0CACsC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;gDAC4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAOD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,IAAI,GAAE,iBAAsB,EAC5B,MAAM,GAAE,gBAAqB,GAC5B,UAAU,CAkCZ"}
@@ -0,0 +1,55 @@
1
+ /** Las claves que se comparan contra lo enviado. */
2
+ const COMPARABLES = [
3
+ 'title', 'body', 'category', 'priority', 'blocker_kind', 'blocker_who', 'related_doc',
4
+ ];
5
+ /**
6
+ * Armar el acuse de una escritura del registro.
7
+ *
8
+ * `sent` son los argumentos que llegaron del agente; solo las claves
9
+ * PRESENTES se comparan. Una clave ausente significa "no escribi nada
10
+ * ahi", y entonces lo que el servidor haya puesto es su default, no una
11
+ * correccion.
12
+ */
13
+ export function pendingAck(item, sent = {}, extras = {}) {
14
+ const normalized = {};
15
+ for (const k of COMPARABLES) {
16
+ /* Ausente (o presente en undefined, que es lo mismo para un argumento
17
+ * que no se escribio): el agente no puso nada ahi, asi que lo que el
18
+ * servidor tenga es su default y no una correccion de nada. Un `k in
19
+ * sent` aparte seria redundante con esto -- lo probo un mutante que
20
+ * sobrevivio por equivalencia, no por un caso flojo. */
21
+ if (sent[k] === undefined)
22
+ continue;
23
+ const guardado = item[k];
24
+ if (guardado !== sent[k])
25
+ normalized[k] = guardado;
26
+ }
27
+ const closed = typeof item.closed_at === 'number';
28
+ const cambios = Object.keys(normalized);
29
+ const ack = {
30
+ id: item.id,
31
+ status: closed ? 'closed' : 'open',
32
+ priority: item.priority,
33
+ category: item.category,
34
+ created_at: item.created_at,
35
+ updated_at: item.updated_at,
36
+ message: item.id + ' ' + (closed ? 'cerrado' : 'guardado')
37
+ + (cambios.length
38
+ ? ' -- el registro normalizo: ' + cambios.join(', ')
39
+ : ' -- sin cambios sobre lo enviado'),
40
+ };
41
+ if (closed && typeof item.closed_at === 'number')
42
+ ack.closed_at = item.closed_at;
43
+ if (item.closed_reason)
44
+ ack.closed_reason = item.closed_reason;
45
+ if (item.history && item.history.length)
46
+ ack.history_entries = item.history.length;
47
+ if (cambios.length)
48
+ ack.normalized = normalized;
49
+ if (extras.warnings && extras.warnings.length)
50
+ ack.warnings = extras.warnings;
51
+ if (extras.gate !== undefined)
52
+ ack.gate = extras.gate;
53
+ return ack;
54
+ }
55
+ //# sourceMappingURL=pending_ack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending_ack.js","sourceRoot":"","sources":["../../../src/chat/tools/pending_ack.ts"],"names":[],"mappings":"AA4EA,oDAAoD;AACpD,MAAM,WAAW,GAAyC;IACxD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;CACtF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,IAAiB,EACjB,OAA0B,EAAE,EAC5B,SAA2B,EAAE;IAE7B,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B;;;;gEAIwD;QACxD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAI,IAA2C,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC;YAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,GAAG,GAAe;QACtB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;cACtD,CAAC,OAAO,CAAC,MAAM;gBACf,CAAC,CAAC,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpD,CAAC,CAAC,kCAAkC,CAAC;KAC1C,CAAC;IACF,IAAI,MAAM,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjF,IAAI,IAAI,CAAC,aAAa;QAAE,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC/D,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACnF,IAAI,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;IAChD,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACtD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Yujin Forge -- el tope del archivo de instrucciones del proyecto, con la
3
+ * compuerta que lo verifica (P2, PND-284).
4
+ *
5
+ * EL PAGADOR, MEDIDO
6
+ *
7
+ * El harness inyecta el `CLAUDE.md` del proyecto ENTERO como adjunto
8
+ * `instructions` en la llamada 1 de cada turno, y ese prefijo lo relee cada
9
+ * llamada de la rueda de herramientas (159 de mediana en el brazo C1). En
10
+ * ese brazo el archivo fue de 0 a 47.991 caracteres en tres dias = 30.215
11
+ * tokens, USD 74,19 (6,29% del corpus).
12
+ *
13
+ * Lo que lo hace distinto de la conversacion arrastrada: NINGUN reinicio lo
14
+ * limpia. La huella esta en el piso de la base en los cuatro reinicios del
15
+ * corpus -- 45.167 / 62.671 / 66.829 / 71.863 tokens. Subio 26.696 en tres
16
+ * dias. Quien reinicia el panel para abaratar se lleva el CLAUDE.md
17
+ * completo de vuelta.
18
+ *
19
+ * EL PRINCIPIO (decision del dueno, 2026-11-03)
20
+ *
21
+ * CLAUDE.md lleva solo lo que el agente DEBE OBEDECER. Lo que puede
22
+ * necesitar CONSULTAR se desprende, y queda en el archivo una linea
23
+ * que diga donde esta.
24
+ *
25
+ * Se quedan: las reglas que no se negocian, los limites duros, donde viven
26
+ * las cosas, el puntero al peldano en curso, la exigencia de evidencia.
27
+ * Se desprenden: el registro de decisiones, el de hallazgos, el historial
28
+ * de auditorias, el glosario, los registros de turnos pasados -- cualquier
29
+ * cosa que el agente lea A VECES.
30
+ *
31
+ * POR QUE VA CON COMPUERTA, Y ES LA MITAD DE LA DECISION
32
+ *
33
+ * Un presupuesto que no se verifica contra lo que entrega no es un
34
+ * presupuesto: es una etiqueta. Es exactamente el defecto que esta tanda
35
+ * arregla en `graph_snapshot.ts` (declaraba 2.400 tokens y entregaba
36
+ * 4.693, por asumir 4 chars/token), y repetirlo en el arreglo seria
37
+ * grotesco. Asi que el tope no se declara en un documento: se MIDE, con el
38
+ * mismo divisor calibrado, y la compuerta NOMBRA la seccion que lo paso --
39
+ * sin el culpable, el que la ve no sabe que desprender.
40
+ *
41
+ * ASCII-only.
42
+ */
43
+ /** Caracteres por token del archivo de instrucciones.
44
+ *
45
+ * 2,36, medidos por minimos cuadrados sobre los 47 turnos del brazo contra
46
+ * el `usage` real (R2 = 0,9915). El coeficiente del bloque `instructions`
47
+ * sale del mismo ajuste que el de la historia: las dos cosas son prosa
48
+ * tecnica en castellano.
49
+ *
50
+ * NO es 4. Asumir 4 habria dado un tope efectivo de 32.000 caracteres en
51
+ * lugar de 18.880 -- o sea que el archivo de C1 (47.991) habria pasado la
52
+ * compuerta al 1,5x del tope en vez de al 2,5x. */
53
+ export declare const INSTRUCTIONS_CHARS_PER_TOKEN = 2.36;
54
+ /** El tope, en tokens. Decision del dueno: 8.000.
55
+ *
56
+ * De los 30.215 medidos en C1 recorta ~22.000 y deja cuatro veces lo que
57
+ * un archivo de instrucciones VIGENTES necesita (el CLAUDE.md de
58
+ * yujin-forge, que documenta un proyecto bastante mas grande, mide 3.670).
59
+ * No se negocia a la baja ni a la alta sin una medicion nueva. */
60
+ export declare const INSTRUCTIONS_BUDGET_TOKENS = 8000;
61
+ export interface InstructionsSection {
62
+ title: string;
63
+ /** Caracteres de la seccion, encabezado incluido. */
64
+ chars: number;
65
+ tokens: number;
66
+ }
67
+ export interface InstructionsMeasurement {
68
+ total_chars: number;
69
+ total_tokens: number;
70
+ /** Lo que esta ANTES del primer encabezado de nivel 2. */
71
+ preamble_chars: number;
72
+ /** Secciones en el orden del archivo. */
73
+ sections: InstructionsSection[];
74
+ /** Las mismas, de la mas cara a la mas barata. */
75
+ ranked: InstructionsSection[];
76
+ }
77
+ export interface InstructionsGateResult {
78
+ ok: boolean;
79
+ total_chars: number;
80
+ total_tokens: number;
81
+ budget_tokens: number;
82
+ over_by_tokens: number;
83
+ /** El conjunto MINIMO de secciones que, desprendidas, hacen pasar la
84
+ * compuerta. Vacio cuando pasa. */
85
+ culprits: InstructionsSection[];
86
+ /** El mensaje para una consola: el numero, los culpables y el criterio. */
87
+ message: string;
88
+ }
89
+ /**
90
+ * Medir el archivo y repartirlo por seccion.
91
+ *
92
+ * El reparto es por encabezado de nivel 2 (`## `), que es la granularidad
93
+ * en la que un dueno desprende: "saca el registro de decisiones", no "saca
94
+ * 4.000 caracteres". Cierra con el total -- preambulo + secciones = el
95
+ * archivo -- porque un reparto que pierde caracteres por el camino no
96
+ * sirve para decidir que sacar.
97
+ */
98
+ export declare function measureInstructions(text: string): InstructionsMeasurement;
99
+ export interface InstructionsGateOptions {
100
+ budgetTokens?: number;
101
+ }
102
+ /**
103
+ * La compuerta. Falla cuando el archivo pasa el tope, y nombra el conjunto
104
+ * MINIMO de secciones que hay que desprender para volver debajo.
105
+ *
106
+ * Por que el conjunto minimo y no "las grandes": si la compuerta nombrara
107
+ * secciones de mas, el dueno desprenderia cosas que no hacia falta sacar
108
+ * (y el principio dice que lo que se OBEDECE se queda). Si nombrara de
109
+ * menos, desprenderia lo que le dijeron y la compuerta seguiria roja --
110
+ * que es la forma mas rapida de que alguien la desactive.
111
+ */
112
+ export declare function instructionsGate(text: string, opts?: InstructionsGateOptions): InstructionsGateResult;
113
+ //# sourceMappingURL=instructions_budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions_budget.d.ts","sourceRoot":"","sources":["../../src/core/instructions_budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH;;;;;;;;;oDASoD;AACpD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD;;;;;mEAKmE;AACnE,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,kDAAkD;IAClD,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB;wCACoC;IACpC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CA6BzE;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,uBAA4B,GACjC,sBAAsB,CAsDxB"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Yujin Forge -- el tope del archivo de instrucciones del proyecto, con la
3
+ * compuerta que lo verifica (P2, PND-284).
4
+ *
5
+ * EL PAGADOR, MEDIDO
6
+ *
7
+ * El harness inyecta el `CLAUDE.md` del proyecto ENTERO como adjunto
8
+ * `instructions` en la llamada 1 de cada turno, y ese prefijo lo relee cada
9
+ * llamada de la rueda de herramientas (159 de mediana en el brazo C1). En
10
+ * ese brazo el archivo fue de 0 a 47.991 caracteres en tres dias = 30.215
11
+ * tokens, USD 74,19 (6,29% del corpus).
12
+ *
13
+ * Lo que lo hace distinto de la conversacion arrastrada: NINGUN reinicio lo
14
+ * limpia. La huella esta en el piso de la base en los cuatro reinicios del
15
+ * corpus -- 45.167 / 62.671 / 66.829 / 71.863 tokens. Subio 26.696 en tres
16
+ * dias. Quien reinicia el panel para abaratar se lleva el CLAUDE.md
17
+ * completo de vuelta.
18
+ *
19
+ * EL PRINCIPIO (decision del dueno, 2026-11-03)
20
+ *
21
+ * CLAUDE.md lleva solo lo que el agente DEBE OBEDECER. Lo que puede
22
+ * necesitar CONSULTAR se desprende, y queda en el archivo una linea
23
+ * que diga donde esta.
24
+ *
25
+ * Se quedan: las reglas que no se negocian, los limites duros, donde viven
26
+ * las cosas, el puntero al peldano en curso, la exigencia de evidencia.
27
+ * Se desprenden: el registro de decisiones, el de hallazgos, el historial
28
+ * de auditorias, el glosario, los registros de turnos pasados -- cualquier
29
+ * cosa que el agente lea A VECES.
30
+ *
31
+ * POR QUE VA CON COMPUERTA, Y ES LA MITAD DE LA DECISION
32
+ *
33
+ * Un presupuesto que no se verifica contra lo que entrega no es un
34
+ * presupuesto: es una etiqueta. Es exactamente el defecto que esta tanda
35
+ * arregla en `graph_snapshot.ts` (declaraba 2.400 tokens y entregaba
36
+ * 4.693, por asumir 4 chars/token), y repetirlo en el arreglo seria
37
+ * grotesco. Asi que el tope no se declara en un documento: se MIDE, con el
38
+ * mismo divisor calibrado, y la compuerta NOMBRA la seccion que lo paso --
39
+ * sin el culpable, el que la ve no sabe que desprender.
40
+ *
41
+ * ASCII-only.
42
+ */
43
+ /** Caracteres por token del archivo de instrucciones.
44
+ *
45
+ * 2,36, medidos por minimos cuadrados sobre los 47 turnos del brazo contra
46
+ * el `usage` real (R2 = 0,9915). El coeficiente del bloque `instructions`
47
+ * sale del mismo ajuste que el de la historia: las dos cosas son prosa
48
+ * tecnica en castellano.
49
+ *
50
+ * NO es 4. Asumir 4 habria dado un tope efectivo de 32.000 caracteres en
51
+ * lugar de 18.880 -- o sea que el archivo de C1 (47.991) habria pasado la
52
+ * compuerta al 1,5x del tope en vez de al 2,5x. */
53
+ export const INSTRUCTIONS_CHARS_PER_TOKEN = 2.36;
54
+ /** El tope, en tokens. Decision del dueno: 8.000.
55
+ *
56
+ * De los 30.215 medidos en C1 recorta ~22.000 y deja cuatro veces lo que
57
+ * un archivo de instrucciones VIGENTES necesita (el CLAUDE.md de
58
+ * yujin-forge, que documenta un proyecto bastante mas grande, mide 3.670).
59
+ * No se negocia a la baja ni a la alta sin una medicion nueva. */
60
+ export const INSTRUCTIONS_BUDGET_TOKENS = 8000;
61
+ function tokens(chars) {
62
+ return chars / INSTRUCTIONS_CHARS_PER_TOKEN;
63
+ }
64
+ /**
65
+ * Medir el archivo y repartirlo por seccion.
66
+ *
67
+ * El reparto es por encabezado de nivel 2 (`## `), que es la granularidad
68
+ * en la que un dueno desprende: "saca el registro de decisiones", no "saca
69
+ * 4.000 caracteres". Cierra con el total -- preambulo + secciones = el
70
+ * archivo -- porque un reparto que pierde caracteres por el camino no
71
+ * sirve para decidir que sacar.
72
+ */
73
+ export function measureInstructions(text) {
74
+ const t = typeof text === 'string' ? text : '';
75
+ const total_chars = t.length;
76
+ if (t.trim().length === 0) {
77
+ return { total_chars, total_tokens: 0, preamble_chars: total_chars, sections: [], ranked: [] };
78
+ }
79
+ /* Corte por ANTICIPACION: no consume el salto de linea, asi que la suma
80
+ * de las partes es el archivo. La leccion vino de `splitHistoryByRole`,
81
+ * donde un split sobre /\n(?=...)/ se comia un caracter por frontera y el
82
+ * reparto cerraba en 42 contra 44. */
83
+ const parts = t.split(/(?=\n## )/);
84
+ const sections = [];
85
+ let preamble_chars = 0;
86
+ for (const p of parts) {
87
+ const m = /^\n?## +(.*)$/m.exec(p);
88
+ if (!m || !/^\n?## /.test(p)) {
89
+ preamble_chars += p.length;
90
+ continue;
91
+ }
92
+ sections.push({ title: (m[1] ?? '').trim(), chars: p.length, tokens: tokens(p.length) });
93
+ }
94
+ const ranked = [...sections].sort((a, b) => b.chars - a.chars);
95
+ return {
96
+ total_chars,
97
+ total_tokens: tokens(total_chars),
98
+ preamble_chars,
99
+ sections,
100
+ ranked,
101
+ };
102
+ }
103
+ /**
104
+ * La compuerta. Falla cuando el archivo pasa el tope, y nombra el conjunto
105
+ * MINIMO de secciones que hay que desprender para volver debajo.
106
+ *
107
+ * Por que el conjunto minimo y no "las grandes": si la compuerta nombrara
108
+ * secciones de mas, el dueno desprenderia cosas que no hacia falta sacar
109
+ * (y el principio dice que lo que se OBEDECE se queda). Si nombrara de
110
+ * menos, desprenderia lo que le dijeron y la compuerta seguiria roja --
111
+ * que es la forma mas rapida de que alguien la desactive.
112
+ */
113
+ export function instructionsGate(text, opts = {}) {
114
+ const budget = Number.isFinite(Number(opts.budgetTokens)) && Number(opts.budgetTokens) > 0
115
+ ? Number(opts.budgetTokens)
116
+ : INSTRUCTIONS_BUDGET_TOKENS;
117
+ const m = measureInstructions(text);
118
+ if (m.total_tokens <= budget) {
119
+ return {
120
+ ok: true,
121
+ total_chars: m.total_chars,
122
+ total_tokens: m.total_tokens,
123
+ budget_tokens: budget,
124
+ over_by_tokens: 0,
125
+ culprits: [],
126
+ message: 'Instrucciones del proyecto: ' + Math.round(m.total_tokens)
127
+ + ' tokens de ' + String(budget) + ' -- dentro del tope.',
128
+ };
129
+ }
130
+ /* El conjunto minimo: de la mas cara a la mas barata, hasta que lo que
131
+ * queda entra. Es la eleccion voraz, y para este objetivo ("sacar la
132
+ * menor cantidad de secciones") es la correcta. */
133
+ const culprits = [];
134
+ let restante = m.total_chars;
135
+ const cap = budget * INSTRUCTIONS_CHARS_PER_TOKEN;
136
+ for (const s of m.ranked) {
137
+ if (restante <= cap)
138
+ break;
139
+ culprits.push(s);
140
+ restante -= s.chars;
141
+ }
142
+ const lista = culprits.map((c) => ' - "' + c.title + '" (' + Math.round(c.tokens) + ' tokens)').join('\n');
143
+ const message = [
144
+ 'COMPUERTA: las instrucciones del proyecto pasan el tope.',
145
+ ' ' + Math.round(m.total_tokens) + ' tokens medidos contra un tope de ' + String(budget) + '.',
146
+ ' Viajan ENTERAS en cada llamada del turno, y ningun reinicio del panel las limpia.',
147
+ '',
148
+ 'Desprende estas secciones y vuelve a entrar:',
149
+ lista,
150
+ '',
151
+ 'El criterio: el archivo lleva solo lo que el agente DEBE OBEDECER.',
152
+ 'Lo que puede necesitar CONSULTAR se desprende a su propio archivo, y',
153
+ 'queda aca una linea que diga donde esta.',
154
+ ].join('\n');
155
+ return {
156
+ ok: false,
157
+ total_chars: m.total_chars,
158
+ total_tokens: m.total_tokens,
159
+ budget_tokens: budget,
160
+ over_by_tokens: m.total_tokens - budget,
161
+ culprits,
162
+ message,
163
+ };
164
+ }
165
+ //# sourceMappingURL=instructions_budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions_budget.js","sourceRoot":"","sources":["../../src/core/instructions_budget.ts"],"names":[],"mappings":"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"}
@@ -134,6 +134,21 @@ export interface LimitsConfig {
134
134
  * emitted the tool_use block (Pablo 2026-06-19). Plan/CLI ignores this (the
135
135
  * subprocess sets its own). Default 8192. */
136
136
  max_tokens_per_turn: number;
137
+ /** P0 (PND-281) -- tope en tokens para lo que el AGENTE dijo en turnos
138
+ * ANTERIORES y que vuelve a viajar en cada llamada.
139
+ *
140
+ * No toca los mensajes del dueno: viajan enteros y en orden, siempre.
141
+ * Lo que se acota son las respuestas viejas del agente, que quedan en
142
+ * disco y se piden si hacen falta (ver src/chat/history_budget.ts).
143
+ *
144
+ * Medido sobre los 47 turnos del brazo C1: la historia arrastrada cuesta
145
+ * USD 181,25 (15,38% del corpus) y no compra re-orientacion (t = 1,88,
146
+ * no significativo; 5,1x en contra). El default de 4.000 ahorra
147
+ * USD 102,94 con la mitad del dueno intacta.
148
+ *
149
+ * 0 = desactivado (se manda la conversacion entera, como antes de
150
+ * 1.28.0). Es la valvula de escape para quien prefiera pagar. */
151
+ agent_history_budget_tokens: number;
137
152
  /** Plan-mode turn cap: max wall-clock for one `claude -p` subprocess
138
153
  * reasoning turn before Forge kills it (504). Default 30 min; raise it
139
154
  * for long autonomous turns. NOT the per-request HTTP timeout (that is