@nac3/forge-cli 1.8.6 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/doctrine_digest.d.ts.map +1 -1
- package/dist/chat/doctrine_digest.js +11 -0
- package/dist/chat/doctrine_digest.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +34 -2
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/config_write.d.ts +35 -0
- package/dist/chat/tools/config_write.d.ts.map +1 -0
- package/dist/chat/tools/config_write.js +381 -0
- package/dist/chat/tools/config_write.js.map +1 -0
- package/dist/chat/tools/db_query.d.ts +20 -0
- package/dist/chat/tools/db_query.d.ts.map +1 -1
- package/dist/chat/tools/db_query.js +3 -3
- package/dist/chat/tools/db_query.js.map +1 -1
- package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
- package/dist/chat/tools/nac3_invoke.js +19 -1
- package/dist/chat/tools/nac3_invoke.js.map +1 -1
- package/dist/chat/tools/orchestrator_write.d.ts +31 -0
- package/dist/chat/tools/orchestrator_write.d.ts.map +1 -0
- package/dist/chat/tools/orchestrator_write.js +508 -0
- package/dist/chat/tools/orchestrator_write.js.map +1 -0
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +28 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/commands/embed.d.ts +1 -0
- package/dist/commands/embed.d.ts.map +1 -1
- package/dist/commands/embed.js +5 -1
- package/dist/commands/embed.js.map +1 -1
- package/dist/core/config_formats.d.ts +45 -0
- package/dist/core/config_formats.d.ts.map +1 -0
- package/dist/core/config_formats.js +519 -0
- package/dist/core/config_formats.js.map +1 -0
- package/dist/core/db_write.d.ts +26 -0
- package/dist/core/db_write.d.ts.map +1 -0
- package/dist/core/db_write.js +262 -0
- package/dist/core/db_write.js.map +1 -0
- package/dist/core/forge_embed.d.ts +1 -0
- package/dist/core/forge_embed.d.ts.map +1 -1
- package/dist/core/forge_embed.js +132 -2
- package/dist/core/forge_embed.js.map +1 -1
- package/dist/core/forge_profile.d.ts +23 -0
- package/dist/core/forge_profile.d.ts.map +1 -1
- package/dist/core/forge_profile.js +56 -0
- package/dist/core/forge_profile.js.map +1 -1
- package/dist/core/operate_guard.d.ts +166 -0
- package/dist/core/operate_guard.d.ts.map +1 -0
- package/dist/core/operate_guard.js +603 -0
- package/dist/core/operate_guard.js.map +1 -0
- package/dist/docs/doctrine/operate-mode.md +140 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +187 -0
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/nac3/manifest_lazy.d.ts +5 -0
- package/dist/nac3/manifest_lazy.d.ts.map +1 -1
- package/dist/nac3/manifest_lazy.js +3 -1
- package/dist/nac3/manifest_lazy.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/doctrine/operate-mode.md +140 -0
- package/package.json +1 -1
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operate-mode ORCHESTRATOR verbs for the Forge Embedded assistant
|
|
3
|
+
* (Pablo 2026-10-10): create a new process in the attended system's
|
|
4
|
+
* orchestrator, and schedule it.
|
|
5
|
+
*
|
|
6
|
+
* yujin.orchestrator.process-create
|
|
7
|
+
* yujin.orchestrator.schedule-set
|
|
8
|
+
*
|
|
9
|
+
* Every system has its own orchestrator, so the SHAPE is declared once by the
|
|
10
|
+
* operator in the deployment profile (operate.orchestrator) and the brain only
|
|
11
|
+
* passes the intent ({name, command, cron}). Three adapters:
|
|
12
|
+
*
|
|
13
|
+
* db_table -- rows in the orchestrator's own tables (process_table +
|
|
14
|
+
* schedule_table) with a declared logical->real column map.
|
|
15
|
+
* The classic RPA orchestrator.
|
|
16
|
+
* http -- POST to the orchestrator's own API (base_url + paths, key
|
|
17
|
+
* from an env var). Preferred when the system validates and
|
|
18
|
+
* hot-reloads its schedules itself -- a direct row INSERT in
|
|
19
|
+
* an in-memory-hydrated engine would not take effect.
|
|
20
|
+
* cron_file -- a crontab fragment in a declared dir, from a declared
|
|
21
|
+
* command template. For systems whose "orchestrator" is cron.
|
|
22
|
+
*
|
|
23
|
+
* The URL / table / command TEMPLATE always comes from the profile, never from
|
|
24
|
+
* the brain: the assistant chooses WHAT to schedule, never WHERE to post or
|
|
25
|
+
* WHAT binary to run. Cron expressions are validated (5 Linux fields) and
|
|
26
|
+
* process names + templated args are sanitised before they reach a command
|
|
27
|
+
* line. Everything is journaled.
|
|
28
|
+
*
|
|
29
|
+
* ASCII-only.
|
|
30
|
+
*/
|
|
31
|
+
import { promises as fs } from 'node:fs';
|
|
32
|
+
import path from 'node:path';
|
|
33
|
+
import { operateConfig } from '../../core/forge_profile.js';
|
|
34
|
+
import { guardCommandArg, guardConfigTable, guardCron, guardIdentifier, guardProcessName, journalChange, journalDirShown, maxRows, resolveDefaultValue, } from '../../core/operate_guard.js';
|
|
35
|
+
import { execConfigTableWrite } from '../../core/db_write.js';
|
|
36
|
+
import { orchestratorTables } from './config_write.js';
|
|
37
|
+
const OFF = 'operate mode is OFF for this deployment: the orchestrator cannot be changed from here. '
|
|
38
|
+
+ 'Emit the precise instruction for the operator instead.';
|
|
39
|
+
const HTTP_TIMEOUT_MS = 15000;
|
|
40
|
+
function err(tool, msg) {
|
|
41
|
+
return { tool, is_error: true, result: { error: msg }, display: tool + ' <- ' + msg.slice(0, 70) };
|
|
42
|
+
}
|
|
43
|
+
function ok(tool, result, display) {
|
|
44
|
+
return { tool, is_error: false, result, display };
|
|
45
|
+
}
|
|
46
|
+
function orch(op) {
|
|
47
|
+
const o = op.orchestrator;
|
|
48
|
+
if (!o || !o.kind)
|
|
49
|
+
return null;
|
|
50
|
+
return o;
|
|
51
|
+
}
|
|
52
|
+
const NO_ORCH = 'this deployment has no orchestrator configured. Ask the operator to declare '
|
|
53
|
+
+ 'operate.orchestrator in .forge/profile.<env>.json (kind: db_table | http | cron_file, with its '
|
|
54
|
+
+ 'tables / endpoints / cron dir). Until then, emit the instruction for the operator.';
|
|
55
|
+
function buildIntent(args, o) {
|
|
56
|
+
const n = guardProcessName(String(args.name || ''));
|
|
57
|
+
if (!n.ok)
|
|
58
|
+
return { ok: false, reason: n.reason };
|
|
59
|
+
const command = String(args.command || '').trim();
|
|
60
|
+
if (command) {
|
|
61
|
+
/* the command reaches a table, an API or a crontab line: no shell operators */
|
|
62
|
+
if (!/^[A-Za-z0-9 ._,:=@/+-]*$/.test(command)) {
|
|
63
|
+
return { ok: false, reason: 'refused command "' + command + '": shell metacharacters (; | & $ ` > <) '
|
|
64
|
+
+ 'are not allowed. A process that needs them must be registered by the operator.' };
|
|
65
|
+
}
|
|
66
|
+
if (command.length > 400)
|
|
67
|
+
return { ok: false, reason: 'command too long (max 400).' };
|
|
68
|
+
}
|
|
69
|
+
const tk = String(args.target_kind || '').trim();
|
|
70
|
+
const ts = String(args.target_slug || '').trim();
|
|
71
|
+
for (const [label, v] of [['target_kind', tk], ['target_slug', ts]]) {
|
|
72
|
+
if (!v)
|
|
73
|
+
continue;
|
|
74
|
+
const c = guardCommandArg(v);
|
|
75
|
+
if (!c.ok)
|
|
76
|
+
return { ok: false, reason: label + ': ' + c.reason };
|
|
77
|
+
}
|
|
78
|
+
/* Some orchestrators have NO command column: the programs are compiled into
|
|
79
|
+
* the system and the row only ROUTES to one of them by its code (found on
|
|
80
|
+
* rpaosdeapligem: bot_tipo has codigo/nombre/habilitado and the bots live in
|
|
81
|
+
* Python). Demanding a command there would make the verb unusable, so the
|
|
82
|
+
* requirement follows the DECLARED mapping. */
|
|
83
|
+
const adapterTakesCommand = !(o.kind === 'db_table' && !(o.process_columns && o.process_columns.command));
|
|
84
|
+
if (adapterTakesCommand && !command && !ts) {
|
|
85
|
+
return { ok: false, reason: 'say WHAT the process runs: command (a program/script the orchestrator '
|
|
86
|
+
+ 'already has) or target_kind + target_slug (an entry of the system catalog).' };
|
|
87
|
+
}
|
|
88
|
+
let params = '';
|
|
89
|
+
if (args.params && typeof args.params === 'object') {
|
|
90
|
+
try {
|
|
91
|
+
params = JSON.stringify(args.params);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
params = '';
|
|
95
|
+
}
|
|
96
|
+
if (params.length > 4000)
|
|
97
|
+
return { ok: false, reason: 'params too large (max 4000 chars of JSON).' };
|
|
98
|
+
}
|
|
99
|
+
let cron = '';
|
|
100
|
+
if (args.cron !== undefined && String(args.cron).trim()) {
|
|
101
|
+
const cr = guardCron(String(args.cron));
|
|
102
|
+
if (!cr.ok)
|
|
103
|
+
return { ok: false, reason: cr.reason };
|
|
104
|
+
cron = cr.cron;
|
|
105
|
+
}
|
|
106
|
+
const desc = String(args.description || '').slice(0, 500);
|
|
107
|
+
return {
|
|
108
|
+
ok: true,
|
|
109
|
+
intent: {
|
|
110
|
+
name: n.name, description: desc, command, target_kind: tk, target_slug: ts,
|
|
111
|
+
params, enabled: args.enabled !== false, cron,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/** Map the logical intent onto the operator's real column names. */
|
|
116
|
+
function mapColumns(mapping, values, defaults) {
|
|
117
|
+
const row = {};
|
|
118
|
+
const skipped = [];
|
|
119
|
+
const map = mapping || {};
|
|
120
|
+
for (const [logical, value] of Object.entries(values)) {
|
|
121
|
+
const col = map[logical];
|
|
122
|
+
if (!col) {
|
|
123
|
+
if (value !== '' && value !== false)
|
|
124
|
+
skipped.push(logical);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const idc = guardIdentifier(col, 'column name');
|
|
128
|
+
if (!idc.ok)
|
|
129
|
+
return { ok: false, reason: 'orchestrator column map: ' + idc.reason };
|
|
130
|
+
if (value === '' || value === null)
|
|
131
|
+
continue;
|
|
132
|
+
row[col] = value;
|
|
133
|
+
}
|
|
134
|
+
for (const [col, value] of Object.entries(defaults || {})) {
|
|
135
|
+
const idc = guardIdentifier(col, 'column name');
|
|
136
|
+
if (!idc.ok)
|
|
137
|
+
return { ok: false, reason: 'orchestrator defaults: ' + idc.reason };
|
|
138
|
+
if (!(col in row))
|
|
139
|
+
row[col] = resolveDefaultValue(value);
|
|
140
|
+
}
|
|
141
|
+
if (Object.keys(row).length === 0) {
|
|
142
|
+
return { ok: false, reason: 'the orchestrator column map produced no columns: the operator must declare '
|
|
143
|
+
+ 'process_columns / schedule_columns (logical -> real) in operate.orchestrator.' };
|
|
144
|
+
}
|
|
145
|
+
return { ok: true, row, skipped };
|
|
146
|
+
}
|
|
147
|
+
async function postJson(url, keyEnv, headerName, body) {
|
|
148
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
149
|
+
if (keyEnv) {
|
|
150
|
+
const key = process.env[keyEnv];
|
|
151
|
+
if (!key || !key.trim()) {
|
|
152
|
+
return { ok: false, status: 0, text: '', reason: 'missing the orchestrator API key: set the env var '
|
|
153
|
+
+ keyEnv + ' in the service EnvironmentFile (never in the committed profile).' };
|
|
154
|
+
}
|
|
155
|
+
headers[(headerName && headerName.trim()) || 'X-API-Key'] = key.trim();
|
|
156
|
+
}
|
|
157
|
+
const ac = new AbortController();
|
|
158
|
+
const timer = setTimeout(() => ac.abort(), HTTP_TIMEOUT_MS);
|
|
159
|
+
try {
|
|
160
|
+
const r = await fetch(url, { method: 'POST', headers, body: JSON.stringify(body), signal: ac.signal });
|
|
161
|
+
const text = (await r.text()).slice(0, 2000);
|
|
162
|
+
return { ok: r.ok, status: r.status, text };
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
return { ok: false, status: 0, text: '', reason: 'the orchestrator API was unreachable: '
|
|
166
|
+
+ (e instanceof Error ? e.message : String(e)).slice(0, 160) };
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
clearTimeout(timer);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function cronFilePath(o, name) {
|
|
173
|
+
const dir = String(o.cron_dir || '');
|
|
174
|
+
const prefix = String(o.cron_prefix || 'forge-');
|
|
175
|
+
const slug = name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
176
|
+
return path.join(dir, prefix + slug);
|
|
177
|
+
}
|
|
178
|
+
function renderCommand(o, intent) {
|
|
179
|
+
const tpl = String(o.command_template || '').trim();
|
|
180
|
+
if (!tpl) {
|
|
181
|
+
return { ok: false, reason: 'the cron_file adapter needs operate.orchestrator.command_template '
|
|
182
|
+
+ '(e.g. "/usr/bin/python3 /opt/app/run.py --proc {name}"). Ask the operator to declare it.' };
|
|
183
|
+
}
|
|
184
|
+
const args = guardCommandArg(intent.command || intent.target_slug || '');
|
|
185
|
+
if (!args.ok)
|
|
186
|
+
return { ok: false, reason: args.reason };
|
|
187
|
+
const cmd = tpl.replace(/\{name\}/g, intent.name).replace(/\{args\}/g, args.value);
|
|
188
|
+
if (/[;|&`$><]/.test(cmd.replace(/\{[a-z_]+\}/g, ''))) {
|
|
189
|
+
/* the template itself may legitimately contain a redirect to a log file;
|
|
190
|
+
* refuse only when the SUBSTITUTED parts introduced metacharacters */
|
|
191
|
+
const substituted = intent.name + ' ' + args.value;
|
|
192
|
+
if (/[;|&`$><]/.test(substituted)) {
|
|
193
|
+
return { ok: false, reason: 'refused: the process name/args would inject shell metacharacters.' };
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return { ok: true, command: cmd };
|
|
197
|
+
}
|
|
198
|
+
/* ================ yujin.orchestrator.process-create ================ */
|
|
199
|
+
export async function runProcessCreate(args, ctx) {
|
|
200
|
+
const TOOL = 'yujin.orchestrator.process-create';
|
|
201
|
+
const op = operateConfig();
|
|
202
|
+
if (!op)
|
|
203
|
+
return err(TOOL, OFF);
|
|
204
|
+
const o = orch(op);
|
|
205
|
+
if (!o)
|
|
206
|
+
return err(TOOL, NO_ORCH);
|
|
207
|
+
const built = buildIntent(args, o);
|
|
208
|
+
if (!built.ok)
|
|
209
|
+
return err(TOOL, built.reason);
|
|
210
|
+
const intent = built.intent;
|
|
211
|
+
if (o.kind === 'db_table') {
|
|
212
|
+
const table = String(o.process_table || '');
|
|
213
|
+
if (!table)
|
|
214
|
+
return err(TOOL, 'operate.orchestrator.process_table is not declared in the profile.');
|
|
215
|
+
const gate = guardConfigTable(op, table, 'insert', { extraAllow: orchestratorTables(op) });
|
|
216
|
+
if (!gate.ok)
|
|
217
|
+
return err(TOOL, gate.reason);
|
|
218
|
+
const mapped = mapColumns(o.process_columns, {
|
|
219
|
+
name: intent.name, description: intent.description, command: intent.command,
|
|
220
|
+
target_kind: intent.target_kind, target_slug: intent.target_slug,
|
|
221
|
+
params: intent.params, enabled: intent.enabled,
|
|
222
|
+
}, o.process_defaults);
|
|
223
|
+
if (!mapped.ok)
|
|
224
|
+
return err(TOOL, mapped.reason);
|
|
225
|
+
const outcome = await execConfigTableWrite(ctx.projectRoot, {
|
|
226
|
+
table, op: 'insert', set: mapped.row, maxRows: maxRows(op),
|
|
227
|
+
});
|
|
228
|
+
if (!outcome.ok)
|
|
229
|
+
return err(TOOL, outcome.reason);
|
|
230
|
+
await journalChange(ctx.projectRoot, op, {
|
|
231
|
+
kind: 'orchestrator', verb: TOOL, target: table + ':' + intent.name,
|
|
232
|
+
reason: String(args.reason || ''),
|
|
233
|
+
detail: { adapter: 'db_table', row: mapped.row, sql: outcome.sql, insert_id: outcome.insert_id ?? null },
|
|
234
|
+
});
|
|
235
|
+
const res = {
|
|
236
|
+
created: true, adapter: 'db_table', table, name: intent.name,
|
|
237
|
+
row: mapped.row, insert_id: outcome.insert_id ?? null,
|
|
238
|
+
skipped_fields: mapped.skipped || [],
|
|
239
|
+
journal: journalDirShown(ctx.projectRoot, op) + '/changes.jsonl',
|
|
240
|
+
note: 'verify it with yujin.db.query, and tell the user whether the orchestrator re-reads its '
|
|
241
|
+
+ 'process table on its own or needs a reload (the restart command is the operator decision).',
|
|
242
|
+
};
|
|
243
|
+
if (intent.cron) {
|
|
244
|
+
const sched = await runScheduleSet({ name: intent.name, cron: intent.cron, enabled: intent.enabled, reason: args.reason }, ctx);
|
|
245
|
+
res.schedule = sched.result;
|
|
246
|
+
res.scheduled = sched.is_error !== true;
|
|
247
|
+
}
|
|
248
|
+
return ok(TOOL, res, TOOL + ' -> ' + intent.name + ' en ' + table
|
|
249
|
+
+ (intent.cron ? ' + cron ' + intent.cron : ''));
|
|
250
|
+
}
|
|
251
|
+
if (o.kind === 'http') {
|
|
252
|
+
const base = String(o.base_url || '').trim().replace(/\/+$/, '');
|
|
253
|
+
const p = String(o.process_path || '').trim();
|
|
254
|
+
if (!base || !p) {
|
|
255
|
+
return err(TOOL, 'the http adapter needs operate.orchestrator.base_url + process_path in the profile.');
|
|
256
|
+
}
|
|
257
|
+
const body = {
|
|
258
|
+
name: intent.name, description: intent.description, enabled: intent.enabled,
|
|
259
|
+
};
|
|
260
|
+
if (intent.command)
|
|
261
|
+
body.command = intent.command;
|
|
262
|
+
if (intent.target_kind)
|
|
263
|
+
body.target_kind = intent.target_kind;
|
|
264
|
+
if (intent.target_slug)
|
|
265
|
+
body.target_slug = intent.target_slug;
|
|
266
|
+
if (args.params && typeof args.params === 'object')
|
|
267
|
+
body.params = args.params;
|
|
268
|
+
if (intent.cron)
|
|
269
|
+
body.cron_expr = intent.cron;
|
|
270
|
+
const r = await postJson(base + (p.charAt(0) === '/' ? p : '/' + p), o.api_key_env, o.auth_header, body);
|
|
271
|
+
if (r.reason)
|
|
272
|
+
return err(TOOL, r.reason);
|
|
273
|
+
if (!r.ok) {
|
|
274
|
+
return err(TOOL, 'the orchestrator API rejected the process (HTTP ' + r.status + '): ' + r.text.slice(0, 300));
|
|
275
|
+
}
|
|
276
|
+
await journalChange(ctx.projectRoot, op, {
|
|
277
|
+
kind: 'orchestrator', verb: TOOL, target: base + p + ':' + intent.name,
|
|
278
|
+
reason: String(args.reason || ''),
|
|
279
|
+
detail: { adapter: 'http', body, status: r.status, response: r.text.slice(0, 800) },
|
|
280
|
+
});
|
|
281
|
+
return ok(TOOL, {
|
|
282
|
+
created: true, adapter: 'http', endpoint: base + p, name: intent.name,
|
|
283
|
+
status: r.status, response: r.text.slice(0, 800),
|
|
284
|
+
journal: journalDirShown(ctx.projectRoot, op) + '/changes.jsonl',
|
|
285
|
+
note: 'the system validated and stored it itself -- read it back through its own API or a query.',
|
|
286
|
+
}, TOOL + ' -> ' + intent.name + ' (HTTP ' + r.status + ')');
|
|
287
|
+
}
|
|
288
|
+
/* cron_file */
|
|
289
|
+
const dir = String(o.cron_dir || '').trim();
|
|
290
|
+
if (!dir)
|
|
291
|
+
return err(TOOL, 'the cron_file adapter needs operate.orchestrator.cron_dir in the profile.');
|
|
292
|
+
const rendered = renderCommand(o, intent);
|
|
293
|
+
if (!rendered.ok)
|
|
294
|
+
return err(TOOL, rendered.reason);
|
|
295
|
+
const file = cronFilePath(o, intent.name);
|
|
296
|
+
try {
|
|
297
|
+
await fs.access(file);
|
|
298
|
+
return err(TOOL, 'a cron entry already exists at "' + file + '": use '
|
|
299
|
+
+ 'yujin.orchestrator.schedule-set to change its schedule.');
|
|
300
|
+
}
|
|
301
|
+
catch { /* absent: good */ }
|
|
302
|
+
const user = String(o.cron_user || '').trim();
|
|
303
|
+
const line = (intent.cron || '# (sin agenda todavia) * * * * *') + (user ? ' ' + user : '') + ' ' + rendered.command;
|
|
304
|
+
const content = [
|
|
305
|
+
'# ' + intent.name + (intent.description ? ' -- ' + intent.description : ''),
|
|
306
|
+
'# creado por el asistente Forge residente (operate mode) ' + new Date().toISOString(),
|
|
307
|
+
(intent.enabled && intent.cron ? '' : '# ') + line,
|
|
308
|
+
'',
|
|
309
|
+
].join('\n');
|
|
310
|
+
try {
|
|
311
|
+
await fs.mkdir(dir, { recursive: true });
|
|
312
|
+
await fs.writeFile(file, content, 'utf8');
|
|
313
|
+
}
|
|
314
|
+
catch (e) {
|
|
315
|
+
return err(TOOL, 'could not write the cron entry "' + file + '": '
|
|
316
|
+
+ (e instanceof Error ? e.message : String(e)).slice(0, 160)
|
|
317
|
+
+ '. The dir may need operator permissions.');
|
|
318
|
+
}
|
|
319
|
+
await journalChange(ctx.projectRoot, op, {
|
|
320
|
+
kind: 'orchestrator', verb: TOOL, target: file,
|
|
321
|
+
reason: String(args.reason || ''),
|
|
322
|
+
detail: { adapter: 'cron_file', command: rendered.command, cron: intent.cron, enabled: intent.enabled },
|
|
323
|
+
});
|
|
324
|
+
return ok(TOOL, {
|
|
325
|
+
created: true, adapter: 'cron_file', file, cron: intent.cron || null,
|
|
326
|
+
enabled: intent.enabled && !!intent.cron, command: rendered.command,
|
|
327
|
+
journal: journalDirShown(ctx.projectRoot, op) + '/changes.jsonl',
|
|
328
|
+
note: intent.cron
|
|
329
|
+
? 'cron picks the file up on its own; confirm the next run with the operator.'
|
|
330
|
+
: 'the entry is commented out until you set a schedule with yujin.orchestrator.schedule-set.',
|
|
331
|
+
}, TOOL + ' -> ' + file);
|
|
332
|
+
}
|
|
333
|
+
/* ================= yujin.orchestrator.schedule-set ================= */
|
|
334
|
+
export async function runScheduleSet(args, ctx) {
|
|
335
|
+
const TOOL = 'yujin.orchestrator.schedule-set';
|
|
336
|
+
const op = operateConfig();
|
|
337
|
+
if (!op)
|
|
338
|
+
return err(TOOL, OFF);
|
|
339
|
+
const o = orch(op);
|
|
340
|
+
if (!o)
|
|
341
|
+
return err(TOOL, NO_ORCH);
|
|
342
|
+
const n = guardProcessName(String(args.name || ''));
|
|
343
|
+
if (!n.ok)
|
|
344
|
+
return err(TOOL, n.reason);
|
|
345
|
+
const name = n.name;
|
|
346
|
+
const cr = guardCron(String(args.cron || ''));
|
|
347
|
+
if (!cr.ok)
|
|
348
|
+
return err(TOOL, cr.reason);
|
|
349
|
+
const cron = cr.cron;
|
|
350
|
+
const enabled = args.enabled !== false;
|
|
351
|
+
if (o.kind === 'db_table') {
|
|
352
|
+
const table = String(o.schedule_table || o.process_table || '');
|
|
353
|
+
if (!table)
|
|
354
|
+
return err(TOOL, 'operate.orchestrator.schedule_table is not declared in the profile.');
|
|
355
|
+
const map = o.schedule_columns || {};
|
|
356
|
+
const nameCol = map.name || map.target_slug || '';
|
|
357
|
+
const cronCol = map.cron || '';
|
|
358
|
+
if (!nameCol || !cronCol) {
|
|
359
|
+
return err(TOOL, 'operate.orchestrator.schedule_columns must map at least "name" and "cron" to the '
|
|
360
|
+
+ 'real column names of ' + table + '.');
|
|
361
|
+
}
|
|
362
|
+
const gate = guardConfigTable(op, table, 'update', { extraAllow: orchestratorTables(op) });
|
|
363
|
+
if (!gate.ok)
|
|
364
|
+
return err(TOOL, gate.reason);
|
|
365
|
+
const set = { [cronCol]: cron };
|
|
366
|
+
if (map.enabled)
|
|
367
|
+
set[map.enabled] = enabled;
|
|
368
|
+
if (map.context && args.context && typeof args.context === 'object') {
|
|
369
|
+
try {
|
|
370
|
+
set[map.context] = JSON.stringify(args.context).slice(0, 4000);
|
|
371
|
+
}
|
|
372
|
+
catch { /* skip */ }
|
|
373
|
+
}
|
|
374
|
+
/* One process can own SEVERAL schedules. Keying only by name would rewrite
|
|
375
|
+
* all of them with the same cron -- silently collapsing two different
|
|
376
|
+
* windows into one -- so schedule_id targets exactly one row. */
|
|
377
|
+
const idCol = map.id || 'id';
|
|
378
|
+
let where = { [nameCol]: name };
|
|
379
|
+
if (args.schedule_id !== undefined && String(args.schedule_id).trim() !== '') {
|
|
380
|
+
const idc = guardIdentifier(idCol, 'column name');
|
|
381
|
+
if (!idc.ok)
|
|
382
|
+
return err(TOOL, 'orchestrator schedule_columns.id: ' + idc.reason);
|
|
383
|
+
const raw = String(args.schedule_id).trim();
|
|
384
|
+
if (!/^[0-9]+$/.test(raw))
|
|
385
|
+
return err(TOOL, 'schedule_id must be the numeric id of the schedule row.');
|
|
386
|
+
where = { [idCol]: Number(raw) };
|
|
387
|
+
}
|
|
388
|
+
let outcome = await execConfigTableWrite(ctx.projectRoot, { table, op: 'update', set, where, maxRows: maxRows(op) });
|
|
389
|
+
let created = false;
|
|
390
|
+
if (!outcome.ok && String(outcome.reason || '').indexOf('more than') >= 0
|
|
391
|
+
&& args.schedule_id === undefined) {
|
|
392
|
+
return err(TOOL, 'el proceso "' + name + '" tiene VARIAS agendas, asi que no se cual cambiar '
|
|
393
|
+
+ '(cambiarlas todas al mismo cron juntaria dos ventanas distintas en una). Consultalas con '
|
|
394
|
+
+ 'yujin.db.query (SELECT ' + idCol + ', ' + cronCol + ' FROM ' + table + ' WHERE ' + nameCol
|
|
395
|
+
+ ' = ...) y volve a llamar con schedule_id.');
|
|
396
|
+
}
|
|
397
|
+
if (!outcome.ok && String(outcome.reason || '').indexOf('matched NO rows') >= 0
|
|
398
|
+
&& args.schedule_id === undefined) {
|
|
399
|
+
/* no schedule row yet -> create it (that IS "cronear" a new process) */
|
|
400
|
+
const ins = guardConfigTable(op, table, 'insert', { extraAllow: orchestratorTables(op) });
|
|
401
|
+
if (!ins.ok)
|
|
402
|
+
return err(TOOL, ins.reason);
|
|
403
|
+
const row = { ...set, [nameCol]: name };
|
|
404
|
+
for (const [col, value] of Object.entries(o.schedule_defaults || {})) {
|
|
405
|
+
const idc = guardIdentifier(col, 'column name');
|
|
406
|
+
if (!idc.ok)
|
|
407
|
+
return err(TOOL, 'orchestrator schedule_defaults: ' + idc.reason);
|
|
408
|
+
if (!(col in row))
|
|
409
|
+
row[col] = resolveDefaultValue(value);
|
|
410
|
+
}
|
|
411
|
+
outcome = await execConfigTableWrite(ctx.projectRoot, { table, op: 'insert', set: row, maxRows: maxRows(op) });
|
|
412
|
+
created = true;
|
|
413
|
+
}
|
|
414
|
+
if (!outcome.ok)
|
|
415
|
+
return err(TOOL, outcome.reason);
|
|
416
|
+
await journalChange(ctx.projectRoot, op, {
|
|
417
|
+
kind: 'orchestrator', verb: TOOL, target: table + ':' + name,
|
|
418
|
+
reason: String(args.reason || ''),
|
|
419
|
+
detail: {
|
|
420
|
+
adapter: 'db_table', created, cron, enabled, sql: outcome.sql,
|
|
421
|
+
before_rows: outcome.before_rows, after_rows: outcome.after_rows,
|
|
422
|
+
rollback_sql: outcome.rollback_sql,
|
|
423
|
+
},
|
|
424
|
+
});
|
|
425
|
+
return ok(TOOL, {
|
|
426
|
+
scheduled: true, adapter: 'db_table', table, name, cron, enabled, created,
|
|
427
|
+
affected: outcome.affected, before_rows: outcome.before_rows, after_rows: outcome.after_rows,
|
|
428
|
+
rollback_sql: outcome.rollback_sql,
|
|
429
|
+
journal: journalDirShown(ctx.projectRoot, op) + '/changes.jsonl',
|
|
430
|
+
note: 'say whether the orchestrator re-reads its schedules live or needs a reload, and when the '
|
|
431
|
+
+ 'next run falls.',
|
|
432
|
+
}, TOOL + ' -> ' + name + ' ' + cron + (created ? ' (nueva agenda)' : ''));
|
|
433
|
+
}
|
|
434
|
+
if (o.kind === 'http') {
|
|
435
|
+
const base = String(o.base_url || '').trim().replace(/\/+$/, '');
|
|
436
|
+
const p = String(o.schedule_path || '').trim();
|
|
437
|
+
if (!base || !p) {
|
|
438
|
+
return err(TOOL, 'the http adapter needs operate.orchestrator.base_url + schedule_path in the profile.');
|
|
439
|
+
}
|
|
440
|
+
const body = { name, cron_expr: cron, cron, enabled };
|
|
441
|
+
if (args.context && typeof args.context === 'object')
|
|
442
|
+
body.context = args.context;
|
|
443
|
+
const r = await postJson(base + (p.charAt(0) === '/' ? p : '/' + p), o.api_key_env, o.auth_header, body);
|
|
444
|
+
if (r.reason)
|
|
445
|
+
return err(TOOL, r.reason);
|
|
446
|
+
if (!r.ok) {
|
|
447
|
+
return err(TOOL, 'the orchestrator API rejected the schedule (HTTP ' + r.status + '): ' + r.text.slice(0, 300));
|
|
448
|
+
}
|
|
449
|
+
await journalChange(ctx.projectRoot, op, {
|
|
450
|
+
kind: 'orchestrator', verb: TOOL, target: base + p + ':' + name,
|
|
451
|
+
reason: String(args.reason || ''),
|
|
452
|
+
detail: { adapter: 'http', body, status: r.status, response: r.text.slice(0, 800) },
|
|
453
|
+
});
|
|
454
|
+
return ok(TOOL, {
|
|
455
|
+
scheduled: true, adapter: 'http', endpoint: base + p, name, cron, enabled,
|
|
456
|
+
status: r.status, response: r.text.slice(0, 800),
|
|
457
|
+
journal: journalDirShown(ctx.projectRoot, op) + '/changes.jsonl',
|
|
458
|
+
}, TOOL + ' -> ' + name + ' ' + cron + ' (HTTP ' + r.status + ')');
|
|
459
|
+
}
|
|
460
|
+
/* cron_file */
|
|
461
|
+
const file = cronFilePath(o, name);
|
|
462
|
+
let current = '';
|
|
463
|
+
try {
|
|
464
|
+
current = await fs.readFile(file, 'utf8');
|
|
465
|
+
}
|
|
466
|
+
catch {
|
|
467
|
+
return err(TOOL, 'there is no cron entry for "' + name + '" at "' + file + '". '
|
|
468
|
+
+ 'Create the process first with yujin.orchestrator.process-create.');
|
|
469
|
+
}
|
|
470
|
+
const user = String(o.cron_user || '').trim();
|
|
471
|
+
const lines = current.split(/\r?\n/);
|
|
472
|
+
let replaced = false;
|
|
473
|
+
for (let i = 0; i < lines.length; i++) {
|
|
474
|
+
const raw = lines[i];
|
|
475
|
+
const body = raw.replace(/^#\s*/, '');
|
|
476
|
+
if (!body.trim() || body.indexOf('creado por el asistente') >= 0 || body.indexOf(name) === 0)
|
|
477
|
+
continue;
|
|
478
|
+
const m = body.match(/^(\S+\s+\S+\s+\S+\s+\S+\s+\S+)\s+(.*)$/);
|
|
479
|
+
if (!m)
|
|
480
|
+
continue;
|
|
481
|
+
lines[i] = (enabled ? '' : '# ') + cron + ' ' + m[2];
|
|
482
|
+
replaced = true;
|
|
483
|
+
break;
|
|
484
|
+
}
|
|
485
|
+
if (!replaced) {
|
|
486
|
+
return err(TOOL, 'could not find the cron line inside "' + file + '": it does not look like a crontab '
|
|
487
|
+
+ 'fragment written by this assistant. Give the operator the exact line instead.');
|
|
488
|
+
}
|
|
489
|
+
const content = lines.join('\n');
|
|
490
|
+
const before = current;
|
|
491
|
+
try {
|
|
492
|
+
await fs.writeFile(file, content, 'utf8');
|
|
493
|
+
}
|
|
494
|
+
catch (e) {
|
|
495
|
+
return err(TOOL, 'could not write "' + file + '": ' + (e instanceof Error ? e.message : String(e)).slice(0, 160));
|
|
496
|
+
}
|
|
497
|
+
await journalChange(ctx.projectRoot, op, {
|
|
498
|
+
kind: 'orchestrator', verb: TOOL, target: file,
|
|
499
|
+
reason: String(args.reason || ''),
|
|
500
|
+
detail: { adapter: 'cron_file', cron, enabled, user, before, after: content },
|
|
501
|
+
});
|
|
502
|
+
return ok(TOOL, {
|
|
503
|
+
scheduled: true, adapter: 'cron_file', file, cron, enabled,
|
|
504
|
+
journal: journalDirShown(ctx.projectRoot, op) + '/changes.jsonl',
|
|
505
|
+
note: 'cron re-reads the dir by itself; confirm the next run time with the operator.',
|
|
506
|
+
}, TOOL + ' -> ' + file + ' ' + cron);
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=orchestrator_write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator_write.js","sourceRoot":"","sources":["../../../src/chat/tools/orchestrator_write.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/chat/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/chat/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/chat/tools.js
CHANGED
|
@@ -909,6 +909,34 @@ export async function runForgeTool(name, args, ctx) {
|
|
|
909
909
|
const { runDbQuery } = await import('./tools/db_query.js');
|
|
910
910
|
return runDbQuery(args, ctx);
|
|
911
911
|
}
|
|
912
|
+
/* Operate mode (Pablo 2026-10-10) -- the embedded assistant CONFIGURING
|
|
913
|
+
* the system it attends. nac3_invoke rejects these profile-wide when
|
|
914
|
+
* operate mode is off; the handlers re-check and then enforce the
|
|
915
|
+
* allowlists (core/operate_guard). */
|
|
916
|
+
case 'yujin.config.file-set': {
|
|
917
|
+
const { runConfigFileSet } = await import('./tools/config_write.js');
|
|
918
|
+
return runConfigFileSet(args, ctx);
|
|
919
|
+
}
|
|
920
|
+
case 'yujin.config.file-write': {
|
|
921
|
+
const { runConfigFileWrite } = await import('./tools/config_write.js');
|
|
922
|
+
return runConfigFileWrite(args, ctx);
|
|
923
|
+
}
|
|
924
|
+
case 'yujin.config.file-revert': {
|
|
925
|
+
const { runConfigFileRevert } = await import('./tools/config_write.js');
|
|
926
|
+
return runConfigFileRevert(args, ctx);
|
|
927
|
+
}
|
|
928
|
+
case 'yujin.config.table-set': {
|
|
929
|
+
const { runConfigTableSet } = await import('./tools/config_write.js');
|
|
930
|
+
return runConfigTableSet(args, ctx);
|
|
931
|
+
}
|
|
932
|
+
case 'yujin.orchestrator.process-create': {
|
|
933
|
+
const { runProcessCreate } = await import('./tools/orchestrator_write.js');
|
|
934
|
+
return runProcessCreate(args, ctx);
|
|
935
|
+
}
|
|
936
|
+
case 'yujin.orchestrator.schedule-set': {
|
|
937
|
+
const { runScheduleSet } = await import('./tools/orchestrator_write.js');
|
|
938
|
+
return runScheduleSet(args, ctx);
|
|
939
|
+
}
|
|
912
940
|
/* F106 office verbs -- cross-platform Excel + Word. */
|
|
913
941
|
case 'office.excel.read': {
|
|
914
942
|
const { readExcel } = await import('../office/excel.js');
|