@nac3/forge-cli 1.0.81 → 1.0.83

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 (42) hide show
  1. package/dist/chat/panel.d.ts.map +1 -1
  2. package/dist/chat/panel.js +99 -0
  3. package/dist/chat/panel.js.map +1 -1
  4. package/dist/chat/server.d.ts.map +1 -1
  5. package/dist/chat/server.js +57 -1
  6. package/dist/chat/server.js.map +1 -1
  7. package/dist/core/audit_log.d.ts +9 -0
  8. package/dist/core/audit_log.d.ts.map +1 -1
  9. package/dist/core/audit_log.js +34 -0
  10. package/dist/core/audit_log.js.map +1 -1
  11. package/dist/core/brain_behaviour.d.ts +46 -0
  12. package/dist/core/brain_behaviour.d.ts.map +1 -0
  13. package/dist/core/brain_behaviour.js +112 -0
  14. package/dist/core/brain_behaviour.js.map +1 -0
  15. package/dist/core/desktop_open.d.ts +3 -0
  16. package/dist/core/desktop_open.d.ts.map +1 -1
  17. package/dist/core/desktop_open.js +17 -0
  18. package/dist/core/desktop_open.js.map +1 -1
  19. package/dist/core/limits_config.d.ts +5 -0
  20. package/dist/core/limits_config.d.ts.map +1 -1
  21. package/dist/core/limits_config.js +10 -0
  22. package/dist/core/limits_config.js.map +1 -1
  23. package/dist/llm/context_compaction.d.ts +35 -0
  24. package/dist/llm/context_compaction.d.ts.map +1 -0
  25. package/dist/llm/context_compaction.js +45 -0
  26. package/dist/llm/context_compaction.js.map +1 -0
  27. package/dist/llm/deepseek_client.d.ts.map +1 -1
  28. package/dist/llm/deepseek_client.js +13 -3
  29. package/dist/llm/deepseek_client.js.map +1 -1
  30. package/dist/version.d.ts +1 -1
  31. package/dist/version.js +1 -1
  32. package/package.json +1 -1
  33. package/src/i18n/catalogs/ar.json +3 -0
  34. package/src/i18n/catalogs/de.json +3 -0
  35. package/src/i18n/catalogs/en.json +3 -0
  36. package/src/i18n/catalogs/es.json +3 -0
  37. package/src/i18n/catalogs/fr.json +3 -0
  38. package/src/i18n/catalogs/hi.json +3 -0
  39. package/src/i18n/catalogs/it.json +3 -0
  40. package/src/i18n/catalogs/ja.json +3 -0
  41. package/src/i18n/catalogs/pt.json +3 -0
  42. package/src/i18n/catalogs/zh.json +3 -0
@@ -30,6 +30,15 @@ export interface LifecycleAudit extends AuditEntryBase {
30
30
  details?: Record<string, unknown>;
31
31
  }
32
32
  export type AuditEntry = ShellExecAudit | VerbInvokeAudit | LifecycleAudit | AuditEntryBase;
33
+ /**
34
+ * PND-156 -- redact obvious secrets before they land in the audit ledger.
35
+ * On rpa-osde a DB password leaked into the audit log (and journald) via an
36
+ * inline `mysql -p'<pass>'`. This masks the common shapes: DB passwords
37
+ * (-p / --password / MYSQL_PWD / PGPASSWORD), URL credentials, Bearer tokens,
38
+ * and key=value secrets. Best-effort + conservative -- masks the VALUE, keeps
39
+ * the surrounding command readable so the ledger stays useful.
40
+ */
41
+ export declare function redactSecrets(text: string): string;
33
42
  /** Append a single entry. Best-effort -- never throws. */
34
43
  export declare function recordAudit(entry: Partial<AuditEntry> & {
35
44
  kind: string;
@@ -1 +1 @@
1
- {"version":3,"file":"audit_log.d.ts","sourceRoot":"","sources":["../../src/core/audit_log.ts"],"names":[],"mappings":"AA8BA,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,eAAe,GACf,eAAe,GACf,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAgB,MAAM,CAAC;IACzB,IAAI,EAAc,MAAM,CAAC;IACzB,OAAO,EAAW,MAAM,CAAC;IACzB,aAAa,EAAK,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,IAAI,EAAc,YAAY,CAAC;IAC/B,OAAO,EAAW,MAAM,CAAC;IACzB,GAAG,EAAe,MAAM,CAAC;IACzB,WAAW,EAAO,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IACnE,YAAY,EAAM,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAS,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAO,MAAM,CAAC;IACzB,MAAM,EAAY,OAAO,CAAC;IAC1B,YAAY,EAAM,MAAM,CAAC;IACzB,YAAY,EAAM,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,EAAc,aAAa,CAAC;IAChC,OAAO,EAAW,MAAM,CAAC;IACzB,aAAa,EAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAY,IAAI,GAAG,OAAO,CAAC;IACjC,KAAK,CAAC,EAAY,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,IAAI,EAAc,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,kBAAkB,CAAC;IAC/E,WAAW,EAAO,MAAM,CAAC;IACzB,OAAO,CAAC,EAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;AAQ5F,0DAA0D;AAC1D,wBAAsB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhH;AAED;gCACgC;AAChC,wBAAsB,eAAe,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAaxE;AAED,iBAAiB;AACjB,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
1
+ {"version":3,"file":"audit_log.d.ts","sourceRoot":"","sources":["../../src/core/audit_log.ts"],"names":[],"mappings":"AA8BA,MAAM,MAAM,iBAAiB,GACzB,eAAe,GACf,eAAe,GACf,eAAe,GACf,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAgB,MAAM,CAAC;IACzB,IAAI,EAAc,MAAM,CAAC;IACzB,OAAO,EAAW,MAAM,CAAC;IACzB,aAAa,EAAK,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,IAAI,EAAc,YAAY,CAAC;IAC/B,OAAO,EAAW,MAAM,CAAC;IACzB,GAAG,EAAe,MAAM,CAAC;IACzB,WAAW,EAAO,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;IACnE,YAAY,EAAM,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAS,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAO,MAAM,CAAC;IACzB,MAAM,EAAY,OAAO,CAAC;IAC1B,YAAY,EAAM,MAAM,CAAC;IACzB,YAAY,EAAM,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,EAAc,aAAa,CAAC;IAChC,OAAO,EAAW,MAAM,CAAC;IACzB,aAAa,EAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAY,IAAI,GAAG,OAAO,CAAC;IACjC,KAAK,CAAC,EAAY,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,IAAI,EAAc,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,kBAAkB,CAAC;IAC/E,WAAW,EAAO,MAAM,CAAC;IACzB,OAAO,CAAC,EAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,cAAc,GAAG,cAAc,CAAC;AAE5F;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBlD;AAQD,0DAA0D;AAC1D,wBAAsB,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhH;AAED;gCACgC;AAChC,wBAAsB,eAAe,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAaxE;AAED,iBAAiB;AACjB,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -27,6 +27,33 @@
27
27
  import { promises as fs } from 'node:fs';
28
28
  import path from 'node:path';
29
29
  import os from 'node:os';
30
+ /**
31
+ * PND-156 -- redact obvious secrets before they land in the audit ledger.
32
+ * On rpa-osde a DB password leaked into the audit log (and journald) via an
33
+ * inline `mysql -p'<pass>'`. This masks the common shapes: DB passwords
34
+ * (-p / --password / MYSQL_PWD / PGPASSWORD), URL credentials, Bearer tokens,
35
+ * and key=value secrets. Best-effort + conservative -- masks the VALUE, keeps
36
+ * the surrounding command readable so the ledger stays useful.
37
+ */
38
+ export function redactSecrets(text) {
39
+ if (!text)
40
+ return text;
41
+ let s = String(text);
42
+ /* mysql/mariadb inline password: -pSECRET or -p'SECRET' (NO space after -p). */
43
+ s = s.replace(/(^|\s)(-p)(['"]?)[^\s'"]+\3/g, '$1$2$3***$3');
44
+ /* --password=SECRET / --password SECRET / -password SECRET */
45
+ s = s.replace(/(--?password[=\s])(['"]?)[^\s'"]+\2/gi, '$1$2***$2');
46
+ /* env-style secret assignments: MYSQL_PWD=... PGPASSWORD=... PASSWORD=... TOKEN=... SECRET=... API_KEY=... */
47
+ s = s.replace(/\b(MYSQL_PWD|PGPASSWORD|[A-Z0-9_]*(?:PASSWORD|PASSWD|SECRET|TOKEN|API[_-]?KEY))=(['"]?)[^\s'"]+\2/gi, '$1=$2***$2');
48
+ /* key=value inside connection strings / query params: password=..., pwd=..., token=..., secret=... */
49
+ s = s.replace(/\b(password|passwd|pwd|token|secret|api[_-]?key)=([^\s&'";]+)/gi, '$1=***');
50
+ /* URL credentials: scheme://user:SECRET@host */
51
+ s = s.replace(/(:\/\/[^\s:/@]+:)[^\s@/]+(@)/g, '$1***$2');
52
+ /* Bearer / Authorization tokens */
53
+ s = s.replace(/(authorization\s*:?\s*bearer\s+)[A-Za-z0-9._\-]+/gi, '$1***');
54
+ s = s.replace(/(bearer\s+)[A-Za-z0-9._\-]{12,}/gi, '$1***');
55
+ return s;
56
+ }
30
57
  function auditLogPath() {
31
58
  const home = process.env.HOME || process.env.USERPROFILE || os.homedir();
32
59
  const base = process.env.YF_CONFIG_DIR || path.join(home, '.yujin-forge');
@@ -43,6 +70,13 @@ export async function recordAudit(entry) {
43
70
  approval_mode: entry.approval_mode ?? 'not_applicable',
44
71
  ...entry,
45
72
  };
73
+ /* PND-156 -- scrub secrets from the free-text fields before persisting so
74
+ * a leaked inline password (mysql -p'...') never lands in the ledger. */
75
+ if (typeof full.summary === 'string')
76
+ full.summary = redactSecrets(full.summary);
77
+ const withCmd = full;
78
+ if (typeof withCmd.command === 'string')
79
+ withCmd.command = redactSecrets(withCmd.command);
46
80
  await fs.appendFile(p, JSON.stringify(full) + '\n', 'utf-8');
47
81
  }
48
82
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"audit_log.js","sourceRoot":"","sources":["../../src/core/audit_log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AA6CzB,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACrD,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAA+D;IAC/F,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,GAAe;YACvB,EAAE,EAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACxC,OAAO,EAAS,KAAK,CAAC,OAAO,IAAI,EAAE;YACnC,aAAa,EAAG,KAAK,CAAC,aAAa,IAAI,gBAAgB;YACvD,GAAG,KAAK;SACK,CAAC;QAChB,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6DAA6D;QAC7D,IAAI,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;QACjG,MAAM,CAAC,CAAC,mDAAmD,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;gCACgC;AAChC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAK,GAAG,GAAG;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAe,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,MAAM,UAAU,oBAAoB;IAClC,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"audit_log.js","sourceRoot":"","sources":["../../src/core/audit_log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { BrainProvider } from './brain_config.js';
2
+ export interface CompactionConfig {
3
+ /** Master switch. */
4
+ enabled: boolean;
5
+ /** Keep the N most recent tool results in FULL; older ones are compacted to
6
+ * a short marker. Lower = more aggressive. */
7
+ keep_recent_tool_results: number;
8
+ /** Do not compact until the turn has done at least this many rounds (so
9
+ * short turns are never touched). */
10
+ trigger_after_rounds: number;
11
+ }
12
+ export interface BrainBehaviour {
13
+ compaction: CompactionConfig;
14
+ /** A single serialized tool result larger than this (bytes) is capped
15
+ * before it enters the conversation. */
16
+ tool_result_max_bytes: number;
17
+ /** How to cap: 'head' keeps the first tool_result_max_bytes + a marker (the
18
+ * model still SEES the data -- fixes "reports data missing"); 'stub' hides
19
+ * it behind a {_truncated} placeholder (legacy, blind). */
20
+ tool_result_mode: 'head' | 'stub';
21
+ }
22
+ /** Capability tier that drives the behaviour default. */
23
+ export type CapabilityTier = 'large' | 'medium';
24
+ /** Large-context, long-turn-tolerant brains vs. the rest. Conservative: an
25
+ * unknown model on a known big-context provider still gets 'large'; unknown
26
+ * providers default to 'medium' (safer -- more compaction). */
27
+ export declare function capabilityTier(provider: BrainProvider, model: string): CapabilityTier;
28
+ /** The capability-derived default for a (provider, model) -- no overrides. */
29
+ export declare function defaultBehaviourFor(provider: BrainProvider, model: string): BrainBehaviour;
30
+ export interface BrainBehaviourOverrides {
31
+ /** Per-provider partial overrides applied on top of the capability default. */
32
+ by_provider: Partial<Record<BrainProvider, DeepPartialBehaviour>>;
33
+ }
34
+ export interface DeepPartialBehaviour {
35
+ compaction?: Partial<CompactionConfig>;
36
+ tool_result_max_bytes?: number;
37
+ tool_result_mode?: 'head' | 'stub';
38
+ }
39
+ export declare function readBrainBehaviourOverrides(): Promise<BrainBehaviourOverrides>;
40
+ export declare function writeBrainBehaviourOverrides(o: BrainBehaviourOverrides): Promise<void>;
41
+ /** Merge a partial override onto a base, clamping to safe ranges. */
42
+ export declare function mergeBehaviour(base: BrainBehaviour, ov: DeepPartialBehaviour | undefined): BrainBehaviour;
43
+ /** The effective behaviour for a (provider, model): capability default merged
44
+ * with the saved per-provider override. */
45
+ export declare function resolveBrainBehaviour(provider: BrainProvider, model: string): Promise<BrainBehaviour>;
46
+ //# sourceMappingURL=brain_behaviour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain_behaviour.d.ts","sourceRoot":"","sources":["../../src/core/brain_behaviour.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB;mDAC+C;IAC/C,wBAAwB,EAAE,MAAM,CAAC;IACjC;0CACsC;IACtC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B;6CACyC;IACzC,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;gEAE4D;IAC5D,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED,yDAAyD;AACzD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD;;gEAEgE;AAChE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAarF;AAiBD,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAE1F;AAID,MAAM,WAAW,uBAAuB;IACtC,+EAA+E;IAC/E,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAQD,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,uBAAuB,CAAC,CASpF;AAED,wBAAsB,4BAA4B,CAAC,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5F;AAOD,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,oBAAoB,GAAG,SAAS,GAAG,cAAc,CAmBzG;AAED;4CAC4C;AAC5C,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAI3G"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Brain behaviour -- per-brain runtime tuning (PND-156).
3
+ *
4
+ * Different brains have very different context budgets and tolerance for long,
5
+ * tool-heavy turns. Claude 4.x / Gemini 1.5+ have huge context and reason well
6
+ * over a big accumulated history, so they need little compaction and can carry
7
+ * large tool results. DeepSeek / Mistral / GLM have a smaller effective window
8
+ * and degrade fast as the messages array grows (RSS to ~1GB, event-loop
9
+ * stalls, context loss -- seen live in rpa-osde's journald). This module is the
10
+ * single source of truth for HOW AGGRESSIVELY to compact the conversation and
11
+ * how big a single tool result may be before it is capped -- a capability-
12
+ * derived DEFAULT per brain, plus a manual override the operator can save.
13
+ *
14
+ * Persistence: $YF_CONFIG_DIR/brain_behaviour.json (or ~/.yujin-forge/...).
15
+ * The file holds ONLY the overrides; the defaults are computed from capability
16
+ * so a new supported brain gets a sane baseline for free.
17
+ *
18
+ * ASCII-only.
19
+ */
20
+ import { promises as fs } from 'node:fs';
21
+ import path from 'node:path';
22
+ import os from 'node:os';
23
+ /** Large-context, long-turn-tolerant brains vs. the rest. Conservative: an
24
+ * unknown model on a known big-context provider still gets 'large'; unknown
25
+ * providers default to 'medium' (safer -- more compaction). */
26
+ export function capabilityTier(provider, model) {
27
+ const m = (model || '').toLowerCase();
28
+ switch (provider) {
29
+ case 'anthropic': return 'large'; /* Claude 3.5/4.x: 200K ctx */
30
+ case 'google_ai': return 'large'; /* Gemini 1.5/2.x: up to 1M ctx */
31
+ case 'yujin_managed': return 'large'; /* proxy routes to a capable model */
32
+ case 'openai':
33
+ /* gpt-4.1 / gpt-4o / o-series = large; older/mini text = medium. */
34
+ return /gpt-4\.1|gpt-4o|o[134]/.test(m) ? 'large' : 'medium';
35
+ default:
36
+ /* deepseek, mistral, zai/GLM, qwen, cohere, xai, ollama, ... */
37
+ return 'medium';
38
+ }
39
+ }
40
+ const LARGE = {
41
+ compaction: { enabled: false, keep_recent_tool_results: 40, trigger_after_rounds: 30 },
42
+ tool_result_max_bytes: 1_000_000,
43
+ tool_result_mode: 'head',
44
+ };
45
+ const MEDIUM = {
46
+ compaction: { enabled: true, keep_recent_tool_results: 8, trigger_after_rounds: 4 },
47
+ tool_result_max_bytes: 200_000,
48
+ tool_result_mode: 'head',
49
+ };
50
+ function clone(b) {
51
+ return { compaction: { ...b.compaction }, tool_result_max_bytes: b.tool_result_max_bytes, tool_result_mode: b.tool_result_mode };
52
+ }
53
+ /** The capability-derived default for a (provider, model) -- no overrides. */
54
+ export function defaultBehaviourFor(provider, model) {
55
+ return clone(capabilityTier(provider, model) === 'large' ? LARGE : MEDIUM);
56
+ }
57
+ function configPath() {
58
+ const base = process.env.YF_CONFIG_DIR
59
+ || path.join(process.env.HOME || process.env.USERPROFILE || os.homedir(), '.yujin-forge');
60
+ return path.join(base, 'brain_behaviour.json');
61
+ }
62
+ export async function readBrainBehaviourOverrides() {
63
+ try {
64
+ const raw = await fs.readFile(configPath(), 'utf-8');
65
+ const j = JSON.parse(raw);
66
+ if (j && typeof j === 'object' && j.by_provider && typeof j.by_provider === 'object') {
67
+ return { by_provider: j.by_provider };
68
+ }
69
+ }
70
+ catch { /* absent / unreadable -> no overrides */ }
71
+ return { by_provider: {} };
72
+ }
73
+ export async function writeBrainBehaviourOverrides(o) {
74
+ const p = configPath();
75
+ await fs.mkdir(path.dirname(p), { recursive: true });
76
+ await fs.writeFile(p, JSON.stringify({ by_provider: o.by_provider || {} }, null, 2) + '\n', 'utf-8');
77
+ }
78
+ function clampInt(v, lo, hi, dflt) {
79
+ const n = typeof v === 'number' && Number.isFinite(v) ? Math.round(v) : dflt;
80
+ return Math.max(lo, Math.min(hi, n));
81
+ }
82
+ /** Merge a partial override onto a base, clamping to safe ranges. */
83
+ export function mergeBehaviour(base, ov) {
84
+ const out = clone(base);
85
+ if (!ov)
86
+ return out;
87
+ if (ov.compaction) {
88
+ if (typeof ov.compaction.enabled === 'boolean')
89
+ out.compaction.enabled = ov.compaction.enabled;
90
+ if (ov.compaction.keep_recent_tool_results !== undefined) {
91
+ out.compaction.keep_recent_tool_results = clampInt(ov.compaction.keep_recent_tool_results, 1, 200, base.compaction.keep_recent_tool_results);
92
+ }
93
+ if (ov.compaction.trigger_after_rounds !== undefined) {
94
+ out.compaction.trigger_after_rounds = clampInt(ov.compaction.trigger_after_rounds, 0, 200, base.compaction.trigger_after_rounds);
95
+ }
96
+ }
97
+ if (ov.tool_result_max_bytes !== undefined) {
98
+ out.tool_result_max_bytes = clampInt(ov.tool_result_max_bytes, 4_000, 8_000_000, base.tool_result_max_bytes);
99
+ }
100
+ if (ov.tool_result_mode === 'head' || ov.tool_result_mode === 'stub') {
101
+ out.tool_result_mode = ov.tool_result_mode;
102
+ }
103
+ return out;
104
+ }
105
+ /** The effective behaviour for a (provider, model): capability default merged
106
+ * with the saved per-provider override. */
107
+ export async function resolveBrainBehaviour(provider, model) {
108
+ const base = defaultBehaviourFor(provider, model);
109
+ const ov = await readBrainBehaviourOverrides();
110
+ return mergeBehaviour(base, ov.by_provider[provider]);
111
+ }
112
+ //# sourceMappingURL=brain_behaviour.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain_behaviour.js","sourceRoot":"","sources":["../../src/core/brain_behaviour.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ export interface DesktopOpenResult {
7
7
  app_hint?: string;
8
8
  error?: string;
9
9
  }
10
+ /** A headless Linux server (no X/Wayland) has no `xdg-open` target -- trying
11
+ * to launch it threw repeated uncaughtException on rpa-osde (PND-156). */
12
+ export declare function isHeadless(): boolean;
10
13
  /** Launcher type -- injectable so tests can assert WHAT would be
11
14
  * opened without actually spawning a GUI app. */
12
15
  export type Launcher = (target: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"desktop_open.d.ts","sourceRoot":"","sources":["../../src/core/desktop_open.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0CD;kDACkD;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAchD;qEACqE;AACrE,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAC/D,OAAO,CAAC,iBAAiB,CAAC,CAmC5B"}
1
+ {"version":3,"file":"desktop_open.d.ts","sourceRoot":"","sources":["../../src/core/desktop_open.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoCD;2EAC2E;AAC3E,wBAAgB,UAAU,IAAI,OAAO,CAGpC;AAWD;kDACkD;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAchD;qEACqE;AACrE,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAiB,GAC/D,OAAO,CAAC,iBAAiB,CAAC,CA4C5B"}
@@ -54,9 +54,18 @@ function shellOpen(target) {
54
54
  }
55
55
  return { command: 'xdg-open', args: [target] };
56
56
  }
57
+ /** A headless Linux server (no X/Wayland) has no `xdg-open` target -- trying
58
+ * to launch it threw repeated uncaughtException on rpa-osde (PND-156). */
59
+ export function isHeadless() {
60
+ return process.platform === 'linux'
61
+ && !process.env.DISPLAY && !process.env.WAYLAND_DISPLAY;
62
+ }
57
63
  function launch(target) {
58
64
  const { command, args } = shellOpen(target);
59
65
  const child = spawn(command, args, { detached: true, stdio: 'ignore', windowsHide: false });
66
+ /* CRITICAL: a missing launcher (xdg-open absent on a headless server) fires
67
+ * an 'error' event -- unhandled it becomes an uncaughtException. Swallow it. */
68
+ child.on('error', () => { });
60
69
  child.unref();
61
70
  }
62
71
  /** Resolve a Google Drive shortcut file (.gsheet/.gdoc/.gslides), which
@@ -79,6 +88,14 @@ export async function openNative(target, projectRoot, launchFn = launch) {
79
88
  const t = String(target ?? '').trim();
80
89
  if (!t)
81
90
  return { ok: false, error: 'target is required' };
91
+ /* Headless server: there is no graphical viewer to open into. Refuse
92
+ * clearly (instead of spawning a missing xdg-open) so the brain reads a
93
+ * useful message and reaches for a reader tool instead. Only when using the
94
+ * real launcher -- an injected launchFn (tests) still runs. */
95
+ if (launchFn === launch && isHeadless()) {
96
+ return { ok: false, error: 'headless: no hay entorno grafico en este server para abrir "' + t
97
+ + '". Si es un office/imagen/pdf, leelo con office.excel.read / office.word.read / office.pdf.read o descargalo.' };
98
+ }
82
99
  /* URL -> browser. Only http(s) (no file://, javascript:, etc.). */
83
100
  if (/^[a-z][a-z0-9+.-]*:\/\//i.test(t) || /^[a-z]+:/i.test(t)) {
84
101
  if (!/^https?:\/\//i.test(t)) {
@@ -1 +1 @@
1
- {"version":3,"file":"desktop_open.js","sourceRoot":"","sources":["../../src/core/desktop_open.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAY7B,sEAAsE;AACtE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACvE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAC1E,CAAC,CAAC;AAEH,iEAAiE;AACjE,MAAM,QAAQ,GAA2B;IACvC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;IAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY;IACjE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ;IAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc;CACtF,CAAC;AAEF,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC;AAC5C,CAAC;AAED;0DAC0D;AAC1D,SAAS,SAAS,CAAC,MAAc;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC;iDACyC;QACzC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC5B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAMD;qEACqE;AACrE,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAA4D,CAAC;QAChH,IAAI,CAAC,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC;QACvD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,CAAC;QACrC,IAAI,EAAE;YAAE,OAAO,yCAAyC,GAAG,kBAAkB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;qEACqE;AACrE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EAAE,WAAmB,EAAE,WAAqB,MAAM;IAEhE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAE1D,mEAAmE;IACnE,IAAI,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;QACxF,CAAC;QACD,QAAQ,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACnE,CAAC;IAED,4CAA4C;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,GAAG,GAAG,EAAE,CAAC;IAE5E,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,GAAG,GAAG,GAAG,qDAAqD,EAAE,CAAC;IAC1G,CAAC;IAED,2DAA2D;IAC3D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;QAAC,CAAC;QACxG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,GAAG,GAAG,EAAE,CAAC;IAClF,CAAC;IAED,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"desktop_open.js","sourceRoot":"","sources":["../../src/core/desktop_open.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,10 @@ export interface MultiagentConfig {
52
52
  * explicit opt-in. */
53
53
  enabled: boolean;
54
54
  }
55
+ export interface FilesTabConfig {
56
+ max_nodes: number;
57
+ max_depth: number;
58
+ }
55
59
  export interface LimitsConfig {
56
60
  version: 1;
57
61
  max_tool_rounds: MaxToolRoundsConfig;
@@ -73,6 +77,7 @@ export interface LimitsConfig {
73
77
  danger_zone: DangerZoneConfig;
74
78
  bridge: BridgeConfig;
75
79
  multiagent: MultiagentConfig;
80
+ files_tab: FilesTabConfig;
76
81
  }
77
82
  export declare function defaultLimitsConfig(): LimitsConfig;
78
83
  /** Read the active config. Cached for ~3 seconds to avoid
@@ -1 +1 @@
1
- {"version":3,"file":"limits_config.d.ts","sourceRoot":"","sources":["../../src/core/limits_config.ts"],"names":[],"mappings":"AAqDA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC;AAE/F,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB;;;qCAGiC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB;mCAC+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB;;oCAEgC;IAChC,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAGD,MAAM,WAAW,gBAAgB;IAC/B;;gCAE4B;IAC5B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAGD,MAAM,WAAW,YAAY;IAC3B;;;;0CAIsC;IACtC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,gBAAgB;IAC/B;;;;;2BAKuB;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,eAAe,EAAE,mBAAmB,CAAC;IACrC,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2BAA2B,EAAE,MAAM,CAAC;IACpC;;;;kDAI8C;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;+BAG2B;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,iBAAiB,CAAC;IACzB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,IAAI,YAAY,CAoClD;AAkFD;;uCAEuC;AACvC,wBAAsB,gBAAgB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAalF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CASxE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,CAI/D;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAqBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAMnE;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAOR;AAID;mCACmC;AACnC,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAiB/C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAKvD,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBhG;AAED;4CAC4C;AAC5C,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBxF"}
1
+ {"version":3,"file":"limits_config.d.ts","sourceRoot":"","sources":["../../src/core/limits_config.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,10 @@ export function defaultLimitsConfig() {
85
85
  multiagent: {
86
86
  enabled: false,
87
87
  },
88
+ files_tab: {
89
+ max_nodes: 5000,
90
+ max_depth: 6,
91
+ },
88
92
  };
89
93
  }
90
94
  function limitsConfigPath() {
@@ -161,6 +165,10 @@ function normaliseLimitsConfig(raw) {
161
165
  ? j.multiagent.enabled
162
166
  : def.multiagent.enabled,
163
167
  },
168
+ files_tab: {
169
+ max_nodes: clamp(j.files_tab?.max_nodes, 200, 200000, def.files_tab.max_nodes),
170
+ max_depth: clamp(j.files_tab?.max_depth, 1, 12, def.files_tab.max_depth),
171
+ },
164
172
  };
165
173
  }
166
174
  let _cache = null;
@@ -268,6 +276,8 @@ export const LIMITS_FIELD_PATHS = [
268
276
  'shell.timeout_ms_default',
269
277
  'shell.timeout_ms_max',
270
278
  'shell.max_output_bytes',
279
+ 'files_tab.max_nodes',
280
+ 'files_tab.max_depth',
271
281
  ];
272
282
  export function isLimitsFieldPath(p) {
273
283
  return LIMITS_FIELD_PATHS.includes(p);
@@ -1 +1 @@
1
- {"version":3,"file":"limits_config.js","sourceRoot":"","sources":["../../src/core/limits_config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"limits_config.js","sourceRoot":"","sources":["../../src/core/limits_config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Context compaction (PND-156) -- keep long, tool-heavy turns from choking the
3
+ * process. On rpa-osde's journald a single deepseek-reasoner session grew the
4
+ * RSS to ~1GB and blocked the event loop for 3-10s at a time, because every
5
+ * round re-sends (and re-serializes) the ENTIRE accumulated messages array
6
+ * including every big tool result. These helpers cap each tool result and
7
+ * compact OLD tool results down to a short marker, driven by the per-brain
8
+ * BrainBehaviour (large-context brains compact little / never; smaller ones
9
+ * compact aggressively).
10
+ *
11
+ * OpenAI wire format (deepseek / openai / mistral / xai / qwen / GLM): tool
12
+ * results are role='tool' messages. Anthropic's shape differs and is handled
13
+ * separately by its own client.
14
+ *
15
+ * ASCII-only.
16
+ */
17
+ import type { BrainBehaviour } from '../core/brain_behaviour.js';
18
+ /** Cap one serialized tool result before it enters the conversation. 'head'
19
+ * keeps the first N bytes + a marker (the model still SEES the data); 'stub'
20
+ * hides it entirely (legacy blind behaviour). */
21
+ export declare function capToolResult(resultStr: string, b: BrainBehaviour): string;
22
+ interface OpenAiMsg {
23
+ role: string;
24
+ content?: unknown;
25
+ tool_calls?: unknown;
26
+ tool_call_id?: unknown;
27
+ }
28
+ /** Compact OLD tool-result messages IN PLACE: keep the `keep_recent` most
29
+ * recent role='tool' messages in full, replace the content of older ones with
30
+ * a short marker. Bounds both the RSS and the per-round payload. No-op when
31
+ * disabled or before the round trigger. Returns the number compacted (for
32
+ * telemetry/tests). */
33
+ export declare function compactOldToolResults(messages: OpenAiMsg[], b: BrainBehaviour, round: number): number;
34
+ export {};
35
+ //# sourceMappingURL=context_compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context_compaction.d.ts","sourceRoot":"","sources":["../../src/llm/context_compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;kDAEkD;AAClD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAS1E;AAED,UAAU,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE;AAErG;;;;wBAIwB;AACxB,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBrG"}
@@ -0,0 +1,45 @@
1
+ /** Cap one serialized tool result before it enters the conversation. 'head'
2
+ * keeps the first N bytes + a marker (the model still SEES the data); 'stub'
3
+ * hides it entirely (legacy blind behaviour). */
4
+ export function capToolResult(resultStr, b) {
5
+ const max = Math.max(1000, b.tool_result_max_bytes | 0);
6
+ if (resultStr.length <= max)
7
+ return resultStr;
8
+ if (b.tool_result_mode === 'stub') {
9
+ return JSON.stringify({ _truncated: true, _bytes: resultStr.length });
10
+ }
11
+ return resultStr.slice(0, max)
12
+ + '\n[...truncado: ' + resultStr.length + ' bytes en total; se muestran los primeros '
13
+ + max + '. Pedi un rango/paginado o filtra la consulta si necesitas mas.]';
14
+ }
15
+ /** Compact OLD tool-result messages IN PLACE: keep the `keep_recent` most
16
+ * recent role='tool' messages in full, replace the content of older ones with
17
+ * a short marker. Bounds both the RSS and the per-round payload. No-op when
18
+ * disabled or before the round trigger. Returns the number compacted (for
19
+ * telemetry/tests). */
20
+ export function compactOldToolResults(messages, b, round) {
21
+ if (!b.compaction.enabled)
22
+ return 0;
23
+ if (round < b.compaction.trigger_after_rounds)
24
+ return 0;
25
+ const keep = Math.max(1, b.compaction.keep_recent_tool_results | 0);
26
+ const toolIdx = [];
27
+ for (let i = 0; i < messages.length; i++)
28
+ if (messages[i].role === 'tool')
29
+ toolIdx.push(i);
30
+ if (toolIdx.length <= keep)
31
+ return 0;
32
+ const stale = toolIdx.slice(0, toolIdx.length - keep);
33
+ let compacted = 0;
34
+ for (const i of stale) {
35
+ const m = messages[i];
36
+ const c = typeof m.content === 'string' ? m.content : '';
37
+ if (c.length <= 400 || c.startsWith('[resultado previo compactado'))
38
+ continue; /* already tiny/done */
39
+ m.content = '[resultado previo compactado -- ' + c.length
40
+ + ' bytes; volve a consultar esa fuente si lo necesitas de nuevo]';
41
+ compacted++;
42
+ }
43
+ return compacted;
44
+ }
45
+ //# sourceMappingURL=context_compaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context_compaction.js","sourceRoot":"","sources":["../../src/llm/context_compaction.ts"],"names":[],"mappings":"AAkBA;;kDAEkD;AAClD,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,CAAiB;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;IACxD,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC,CAAC,gBAAgB,KAAK,MAAM,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;UAC1B,kBAAkB,GAAG,SAAS,CAAC,MAAM,GAAG,4CAA4C;UACpF,GAAG,GAAG,kEAAkE,CAAC;AAC/E,CAAC;AAID;;;;wBAIwB;AACxB,MAAM,UAAU,qBAAqB,CAAC,QAAqB,EAAE,CAAiB,EAAE,KAAa;IAC3F,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,oBAAoB;QAAE,OAAO,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAAE,SAAS,CAAG,uBAAuB;QACxG,CAAC,CAAC,OAAO,GAAG,kCAAkC,GAAG,CAAC,CAAC,MAAM;cACrD,gEAAgE,CAAC;QACrE,SAAS,EAAE,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek_client.d.ts","sourceRoot":"","sources":["../../src/llm/deepseek_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAajD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAClE,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA6BD,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,EAAE,MAAM,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,EAAE,qBAAqB;IASjC,IAAI,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAmNpE"}
1
+ {"version":3,"file":"deepseek_client.d.ts","sourceRoot":"","sources":["../../src/llm/deepseek_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAejD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAClE,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA6BD,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,MAAM,EAAE,MAAM,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,EAAE,qBAAqB;IASjC,IAAI,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA6NpE"}
@@ -1,4 +1,6 @@
1
1
  import { isTransientNetworkError, describeNetError } from '../chat/claude.js';
2
+ import { resolveBrainBehaviour } from '../core/brain_behaviour.js';
3
+ import { capToolResult, compactOldToolResults } from './context_compaction.js';
2
4
  const DEEPSEEK_BASE = 'https://api.deepseek.com/chat/completions';
3
5
  const DEFAULT_DEEPSEEK_MODEL = 'deepseek-chat';
4
6
  const DEFAULT_MAX_TOOL_ROUNDS = 5;
@@ -70,6 +72,10 @@ export class DeepSeekClient {
70
72
  let totalOut = 0;
71
73
  let serverModel = model;
72
74
  const toolRounds = [];
75
+ /* PND-156 -- per-brain behaviour: how big a single tool result may be and
76
+ * how aggressively to compact old ones as the turn grows. DeepSeek is a
77
+ * 'medium' brain, so compaction is on by default; overridable in config. */
78
+ const behaviour = await resolveBrainBehaviour('deepseek', model);
73
79
  for (let round = 0; round < maxRounds; round++) {
74
80
  void round;
75
81
  void DEFAULT_MAX_TOOL_ROUNDS;
@@ -222,15 +228,19 @@ export class DeepSeekClient {
222
228
  catch {
223
229
  resultStr = String(result);
224
230
  }
225
- if (resultStr.length > 200_000) {
226
- resultStr = JSON.stringify({ _truncated: true, _bytes: resultStr.length });
227
- }
231
+ /* PND-156 -- configurable cap (was a blind 200KB stub). Default 'head'
232
+ * keeps the first N bytes so the model still sees the data. */
233
+ resultStr = capToolResult(resultStr, behaviour);
228
234
  messages.push({
229
235
  role: 'tool',
230
236
  tool_call_id: tc.id,
231
237
  content: resultStr,
232
238
  });
233
239
  }
240
+ /* PND-156 -- compact OLD tool results once the turn is long, so we stop
241
+ * re-sending (and re-serializing) the whole growing history every round
242
+ * (the ~1GB RSS + event-loop stalls seen in rpa-osde's journald). */
243
+ compactOldToolResults(messages, behaviour, round + 1);
234
244
  }
235
245
  return {
236
246
  text: '[Alcance el limite de rondas (' + maxRounds + '/' + maxRounds +