@nac3/forge-cli 1.0.5 → 1.0.10

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 (64) hide show
  1. package/dist/bin/yf.d.ts.map +1 -1
  2. package/dist/bin/yf.js +4 -0
  3. package/dist/bin/yf.js.map +1 -1
  4. package/dist/chat/board_artifacts.d.ts +21 -0
  5. package/dist/chat/board_artifacts.d.ts.map +1 -0
  6. package/dist/chat/board_artifacts.js +308 -0
  7. package/dist/chat/board_artifacts.js.map +1 -0
  8. package/dist/chat/completion_hallucination_detector.d.ts +8 -0
  9. package/dist/chat/completion_hallucination_detector.d.ts.map +1 -1
  10. package/dist/chat/completion_hallucination_detector.js +22 -0
  11. package/dist/chat/completion_hallucination_detector.js.map +1 -1
  12. package/dist/chat/doctrine_digest.js +1 -1
  13. package/dist/chat/doctrine_digest.js.map +1 -1
  14. package/dist/chat/panel.d.ts.map +1 -1
  15. package/dist/chat/panel.js +26 -14
  16. package/dist/chat/panel.js.map +1 -1
  17. package/dist/chat/server.d.ts.map +1 -1
  18. package/dist/chat/server.js +99 -11
  19. package/dist/chat/server.js.map +1 -1
  20. package/dist/chat/tools/design.d.ts +26 -0
  21. package/dist/chat/tools/design.d.ts.map +1 -0
  22. package/dist/chat/tools/design.js +161 -0
  23. package/dist/chat/tools/design.js.map +1 -0
  24. package/dist/chat/tools/pending.d.ts.map +1 -1
  25. package/dist/chat/tools/pending.js +17 -2
  26. package/dist/chat/tools/pending.js.map +1 -1
  27. package/dist/chat/tools.d.ts.map +1 -1
  28. package/dist/chat/tools.js +29 -0
  29. package/dist/chat/tools.js.map +1 -1
  30. package/dist/commands/doctor.d.ts.map +1 -1
  31. package/dist/commands/doctor.js +12 -0
  32. package/dist/commands/doctor.js.map +1 -1
  33. package/dist/commands/upgrade.d.ts +14 -0
  34. package/dist/commands/upgrade.d.ts.map +1 -0
  35. package/dist/commands/upgrade.js +61 -0
  36. package/dist/commands/upgrade.js.map +1 -0
  37. package/dist/core/brain_config.d.ts +1 -1
  38. package/dist/core/brain_config.d.ts.map +1 -1
  39. package/dist/core/brain_config.js +4 -0
  40. package/dist/core/brain_config.js.map +1 -1
  41. package/dist/core/cost_router.js +1 -1
  42. package/dist/core/cost_router.js.map +1 -1
  43. package/dist/core/provider_models.d.ts.map +1 -1
  44. package/dist/core/provider_models.js +7 -0
  45. package/dist/core/provider_models.js.map +1 -1
  46. package/dist/core/self_update.d.ts +36 -0
  47. package/dist/core/self_update.d.ts.map +1 -0
  48. package/dist/core/self_update.js +159 -0
  49. package/dist/core/self_update.js.map +1 -0
  50. package/dist/llm/multi_provider_client.d.ts.map +1 -1
  51. package/dist/llm/multi_provider_client.js +7 -0
  52. package/dist/llm/multi_provider_client.js.map +1 -1
  53. package/dist/llm/ollama_client.d.ts +63 -0
  54. package/dist/llm/ollama_client.d.ts.map +1 -0
  55. package/dist/llm/ollama_client.js +198 -0
  56. package/dist/llm/ollama_client.js.map +1 -0
  57. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  58. package/dist/nac3/internal_manifest.js +24 -0
  59. package/dist/nac3/internal_manifest.js.map +1 -1
  60. package/dist/version.d.ts +1 -1
  61. package/dist/version.d.ts.map +1 -1
  62. package/dist/version.js +1 -1
  63. package/dist/version.js.map +1 -1
  64. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"multi_provider_client.js","sourceRoot":"","sources":["../../src/llm/multi_provider_client.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA8BxD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAmB;IACnD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,YAAY,EAAE,GAAG,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,YAAY,EAAE,GAAG,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;YAC9B,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,YAAY,EAAE,GAAG,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC;YAC5B,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,YAAY,EAAE,GAAG,CAAC,KAAK;SACxB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QACrC;;kDAE0C;QAC1C,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;YACrC,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,IAAI,CACX,UAMI,EACJ,GAAmB;IAEnB,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,GAAuB;YAChC,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;gBAC9B,GAAG,GAAG;gBACN;;2EAE2D;aAC5D,CAAC,CAAC;YACH;0CAC8B;YAC9B,MAAM,eAAe,CAAC;gBACpB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC;YACH,OAAO;gBACL,GAAG,CAAC;gBACJ,KAAK,EAAE,GAAG;aACX,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"multi_provider_client.js","sourceRoot":"","sources":["../../src/llm/multi_provider_client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Ollama brain client (PND-109) -- a LOCAL, open-weight brain.
3
+ *
4
+ * Same unified chat() shape as ClaudeClient / OpenAIClient / DeepSeekClient so
5
+ * the multi-provider router swaps it transparently. Ollama exposes an
6
+ * OpenAI-compatible Chat Completions API at
7
+ *
8
+ * POST http://localhost:11434/v1/chat/completions
9
+ *
10
+ * with NO auth (it is your own machine). That makes it the most private +
11
+ * zero-cost brain option: nothing leaves the laptop, no BYOK key, no worker.
12
+ * Tool/function calling uses the OpenAI tools/tool_calls shape (supported by
13
+ * tool-capable local models, e.g. llama3.1 / qwen2.5 / mistral-nemo).
14
+ *
15
+ * Base URL override: opts.baseUrl or env YF_OLLAMA_BASE_URL (so an Ollama on
16
+ * the LAN or a custom port, or an LM Studio / vLLM OpenAI-compatible server,
17
+ * works too). Default model from config; "llama3.1" is a safe tool-capable
18
+ * default.
19
+ *
20
+ * ASCII-only.
21
+ */
22
+ import type { ToolRound, ChatMessage } from '../chat/claude.js';
23
+ import type { ToolSpec } from '../chat/tools.js';
24
+ /** Resolve the base URL: explicit opt > env > localhost default. Accepts an
25
+ * origin or a full completions URL; a bare origin gets the path appended. */
26
+ export declare function resolveOllamaBase(explicit?: string): string;
27
+ export interface OllamaChatRequest {
28
+ messages: ChatMessage[];
29
+ system?: string;
30
+ maxTokens?: number;
31
+ model?: string;
32
+ tools?: ToolSpec[];
33
+ runTool?: (name: string, input: Record<string, unknown>) => Promise<{
34
+ result: unknown;
35
+ is_error?: boolean;
36
+ }>;
37
+ maxToolRounds?: number;
38
+ }
39
+ export interface OllamaChatResponse {
40
+ text: string;
41
+ tokensIn: number;
42
+ tokensOut: number;
43
+ model: string;
44
+ toolRounds: ToolRound[];
45
+ }
46
+ export interface OllamaClientOptions {
47
+ /** Optional base URL override (origin or full completions URL). */
48
+ baseUrl?: string;
49
+ defaultModel?: string;
50
+ fetchImpl?: typeof fetch;
51
+ }
52
+ export declare class OllamaApiError extends Error {
53
+ status: number;
54
+ constructor(message: string, status: number);
55
+ }
56
+ export declare class OllamaClient {
57
+ private base;
58
+ private fetchImpl;
59
+ private defaultModel;
60
+ constructor(opts?: OllamaClientOptions);
61
+ chat(req: OllamaChatRequest): Promise<OllamaChatResponse>;
62
+ }
63
+ //# sourceMappingURL=ollama_client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama_client.d.ts","sourceRoot":"","sources":["../../src/llm/ollama_client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD;8EAC8E;AAC9E,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,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;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,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,mBAAmB;IAClC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA6BD,qBAAa,cAAe,SAAQ,KAAK;IACvC,MAAM,EAAE,MAAM,CAAC;gBACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,GAAE,mBAAwB;IAMpC,IAAI,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2KhE"}
@@ -0,0 +1,198 @@
1
+ const DEFAULT_OLLAMA_BASE = 'http://localhost:11434/v1/chat/completions';
2
+ const DEFAULT_OLLAMA_MODEL = 'llama3.1';
3
+ /** Resolve the base URL: explicit opt > env > localhost default. Accepts an
4
+ * origin or a full completions URL; a bare origin gets the path appended. */
5
+ export function resolveOllamaBase(explicit) {
6
+ const raw = (explicit || process.env.YF_OLLAMA_BASE_URL || '').trim();
7
+ if (!raw)
8
+ return DEFAULT_OLLAMA_BASE;
9
+ if (/\/chat\/completions$/.test(raw))
10
+ return raw;
11
+ const origin = raw.replace(/\/+$/, '');
12
+ return /\/v1$/.test(origin) ? origin + '/chat/completions' : origin + '/v1/chat/completions';
13
+ }
14
+ export class OllamaApiError extends Error {
15
+ status;
16
+ constructor(message, status) {
17
+ super(message);
18
+ this.name = 'OllamaApiError';
19
+ this.status = status;
20
+ }
21
+ }
22
+ export class OllamaClient {
23
+ base;
24
+ fetchImpl;
25
+ defaultModel;
26
+ constructor(opts = {}) {
27
+ this.base = resolveOllamaBase(opts.baseUrl);
28
+ this.fetchImpl = opts.fetchImpl ?? fetch;
29
+ this.defaultModel = opts.defaultModel ?? DEFAULT_OLLAMA_MODEL;
30
+ }
31
+ async chat(req) {
32
+ if (req.tools && !req.runTool) {
33
+ throw new Error('OllamaChatRequest.tools requires a runTool callback');
34
+ }
35
+ const model = req.model ?? this.defaultModel;
36
+ const maxTokens = req.maxTokens ?? 1024;
37
+ const { readLimitsConfig, classifyVerbFamily, getMaxToolRoundsForFamily } = await import('../core/limits_config.js');
38
+ const limits = await readLimitsConfig();
39
+ const callerSpecifiedCap = req.maxToolRounds !== undefined;
40
+ const autonomousMode = limits.danger_zone && limits.danger_zone.auto_approve_all === true;
41
+ const baseCap = autonomousMode
42
+ ? limits.max_tool_rounds.autonomous
43
+ : limits.max_tool_rounds.default;
44
+ let maxRounds = req.maxToolRounds ?? baseCap;
45
+ let familyResolved = null;
46
+ const messages = [];
47
+ if (req.system && req.system.trim() !== '') {
48
+ messages.push({ role: 'system', content: req.system });
49
+ }
50
+ for (const m of req.messages) {
51
+ messages.push({ role: m.role, content: m.content });
52
+ }
53
+ const tools = (req.tools ?? []).map((t) => ({
54
+ type: 'function',
55
+ function: {
56
+ name: t.name,
57
+ description: t.description,
58
+ parameters: t.input_schema,
59
+ },
60
+ }));
61
+ let totalIn = 0;
62
+ let totalOut = 0;
63
+ let serverModel = model;
64
+ const toolRounds = [];
65
+ for (let round = 0; round < maxRounds; round++) {
66
+ void round;
67
+ const body = {
68
+ model,
69
+ messages,
70
+ max_tokens: maxTokens,
71
+ temperature: 0.7,
72
+ };
73
+ if (tools.length > 0) {
74
+ body.tools = tools;
75
+ body.tool_choice = 'auto';
76
+ }
77
+ let res;
78
+ try {
79
+ res = await this.fetchImpl(this.base, {
80
+ method: 'POST',
81
+ headers: { 'content-type': 'application/json' },
82
+ body: JSON.stringify(body),
83
+ });
84
+ }
85
+ catch (err) {
86
+ /* connection refused = Ollama not running. Friendly message. */
87
+ throw new OllamaApiError('No pude conectar con Ollama en ' + this.base + '. Esta corriendo? '
88
+ + '(instalalo en ollama.com, abrilo, y `ollama pull ' + model + '`). '
89
+ + 'Detalle: ' + (err instanceof Error ? err.message : String(err)), 0);
90
+ }
91
+ const json = await res.json();
92
+ if (!res.ok || json.error) {
93
+ const msg = json.error?.message || ('HTTP ' + res.status);
94
+ throw new OllamaApiError('Ollama API error: ' + msg, res.status);
95
+ }
96
+ if (json.model)
97
+ serverModel = json.model;
98
+ const usage = json.usage || {};
99
+ totalIn += usage.prompt_tokens ?? 0;
100
+ totalOut += usage.completion_tokens ?? 0;
101
+ const choice = json.choices && json.choices[0];
102
+ if (!choice) {
103
+ throw new OllamaApiError('Ollama returned no choices', 502);
104
+ }
105
+ const aMessage = choice.message;
106
+ const finishReason = choice.finish_reason;
107
+ if (!aMessage.tool_calls || aMessage.tool_calls.length === 0 || finishReason !== 'tool_calls') {
108
+ return {
109
+ text: aMessage.content || '',
110
+ tokensIn: totalIn,
111
+ tokensOut: totalOut,
112
+ model: serverModel,
113
+ toolRounds,
114
+ };
115
+ }
116
+ if (familyResolved === null && aMessage.tool_calls.length > 0) {
117
+ const firstTc = aMessage.tool_calls[0];
118
+ if (firstTc) {
119
+ let firstArgs = {};
120
+ try {
121
+ firstArgs = JSON.parse(firstTc.function.arguments || '{}');
122
+ }
123
+ catch { /* */ }
124
+ const firstVerb = firstArgs.verb_id || firstTc.function.name || '';
125
+ const fam = classifyVerbFamily(firstVerb);
126
+ familyResolved = fam;
127
+ if (!callerSpecifiedCap) {
128
+ const famCap = getMaxToolRoundsForFamily(limits.max_tool_rounds, fam);
129
+ if (famCap > maxRounds)
130
+ maxRounds = famCap;
131
+ }
132
+ }
133
+ }
134
+ messages.push({
135
+ role: 'assistant',
136
+ content: aMessage.content ?? null,
137
+ tool_calls: aMessage.tool_calls,
138
+ });
139
+ for (const tc of aMessage.tool_calls) {
140
+ let parsedArgs = {};
141
+ try {
142
+ parsedArgs = JSON.parse(tc.function.arguments || '{}');
143
+ }
144
+ catch {
145
+ parsedArgs = {};
146
+ }
147
+ let result;
148
+ let isError = false;
149
+ try {
150
+ const r = await req.runTool(tc.function.name, parsedArgs);
151
+ result = r.result;
152
+ isError = r.is_error === true;
153
+ }
154
+ catch (err) {
155
+ result = { error: err instanceof Error ? err.message : String(err) };
156
+ isError = true;
157
+ }
158
+ const display = typeof result === 'object' && result !== null && 'display' in result
159
+ ? String(result.display)
160
+ : undefined;
161
+ toolRounds.push({
162
+ tool: tc.function.name,
163
+ tool_use_id: tc.id,
164
+ input: parsedArgs,
165
+ ...(display ? { display } : {}),
166
+ ...(isError ? { is_error: true } : {}),
167
+ result,
168
+ });
169
+ let resultStr;
170
+ try {
171
+ resultStr = typeof result === 'string' ? result : JSON.stringify(result);
172
+ }
173
+ catch {
174
+ resultStr = String(result);
175
+ }
176
+ if (resultStr.length > 200_000) {
177
+ resultStr = JSON.stringify({ _truncated: true, _bytes: resultStr.length });
178
+ }
179
+ messages.push({
180
+ role: 'tool',
181
+ tool_call_id: tc.id,
182
+ content: resultStr,
183
+ });
184
+ }
185
+ }
186
+ return {
187
+ text: '[Alcance el limite de rondas (' + maxRounds + '/' + maxRounds +
188
+ ') en esta tarea (familia=' + (familyResolved ?? 'default') +
189
+ '). Decime "continua" y sigo desde aca, o sube el cap en ' +
190
+ '`yf limits set max_tool_rounds.' + (familyResolved ?? 'default') + ' <N>`.]',
191
+ tokensIn: totalIn,
192
+ tokensOut: totalOut,
193
+ model: serverModel,
194
+ toolRounds,
195
+ };
196
+ }
197
+ }
198
+ //# sourceMappingURL=ollama_client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama_client.js","sourceRoot":"","sources":["../../src/llm/ollama_client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"internal_manifest.d.ts","sourceRoot":"","sources":["../../src/nac3/internal_manifest.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,oBAAoB,CAAC;AAEzB,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,KAAK,GACL,YAAY,GACZ,SAAS,GACT,SAAS,GACT,cAAc,GACd,KAAK,CAAC;AAEV,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB;;;4BAGwB;IACxB,YAAY,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC;;;;;;qCAMiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAgnFD,wBAAgB,QAAQ,IAAI,YAAY,CAOvC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGzD;AAED;gEACgE;AAChE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO9D;AAED;;;uDAGuD;AACvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAgCzF;AAED;;sEAEsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,EAAE,CAO/D"}
1
+ {"version":3,"file":"internal_manifest.d.ts","sourceRoot":"","sources":["../../src/nac3/internal_manifest.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,oBAAoB,CAAC;AAEzB,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,KAAK,GACL,YAAY,GACZ,SAAS,GACT,SAAS,GACT,cAAc,GACd,KAAK,CAAC;AAEV,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB;;;4BAGwB;IACxB,YAAY,EAAE,OAAO,GAAG,QAAQ,CAAC;IACjC;;;;;;qCAMiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAyoFD,wBAAgB,QAAQ,IAAI,YAAY,CAOvC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGzD;AAED;gEACgE;AAChE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO9D;AAED;;;uDAGuD;AACvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAgCzF;AAED;;sEAEsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,EAAE,CAO/D"}
@@ -2071,6 +2071,30 @@ const VERBS = [
2071
2071
  visible: false,
2072
2072
  handler_side: 'server',
2073
2073
  },
2074
+ {
2075
+ id: 'yujin.design.select-variant',
2076
+ role: 'action',
2077
+ action: 'select_variant',
2078
+ label: 'Seleccionar la variante del Yujin DS (sumi-e / art deco)',
2079
+ description: 'PND-112. Select which Yujin Design System VARIANT this '
2080
+ + 'project uses: "default" (sumi-e ink) or "artdeco" (pastel '
2081
+ + 'art deco). Persists to <root>/.forge/design.json so every '
2082
+ + 'later yujin.design.* call AND the DS-aware code you write '
2083
+ + 'resolve against it. Use when the user picks a look ("usa el '
2084
+ + 'estilo art deco", "volve al sumi-e"). Distinct from '
2085
+ + 'design.override (which leaves Yujin DS for a 3rd-party system).',
2086
+ schema: {
2087
+ type: 'object',
2088
+ properties: {
2089
+ variant: { type: 'string', enum: ['default', 'artdeco'], description: 'Yujin DS variant to activate.' },
2090
+ },
2091
+ required: ['variant'],
2092
+ },
2093
+ policy: 'unrestricted',
2094
+ side_effects: ['filesystem'],
2095
+ visible: false,
2096
+ handler_side: 'server',
2097
+ },
2074
2098
  {
2075
2099
  id: 'yujin.agent.delegate',
2076
2100
  role: 'action',