@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.
Files changed (60) hide show
  1. package/dist/chat/doctrine_digest.d.ts.map +1 -1
  2. package/dist/chat/doctrine_digest.js +11 -0
  3. package/dist/chat/doctrine_digest.js.map +1 -1
  4. package/dist/chat/server.d.ts.map +1 -1
  5. package/dist/chat/server.js +34 -2
  6. package/dist/chat/server.js.map +1 -1
  7. package/dist/chat/tools/config_write.d.ts +35 -0
  8. package/dist/chat/tools/config_write.d.ts.map +1 -0
  9. package/dist/chat/tools/config_write.js +381 -0
  10. package/dist/chat/tools/config_write.js.map +1 -0
  11. package/dist/chat/tools/db_query.d.ts +20 -0
  12. package/dist/chat/tools/db_query.d.ts.map +1 -1
  13. package/dist/chat/tools/db_query.js +3 -3
  14. package/dist/chat/tools/db_query.js.map +1 -1
  15. package/dist/chat/tools/nac3_invoke.d.ts.map +1 -1
  16. package/dist/chat/tools/nac3_invoke.js +19 -1
  17. package/dist/chat/tools/nac3_invoke.js.map +1 -1
  18. package/dist/chat/tools/orchestrator_write.d.ts +31 -0
  19. package/dist/chat/tools/orchestrator_write.d.ts.map +1 -0
  20. package/dist/chat/tools/orchestrator_write.js +508 -0
  21. package/dist/chat/tools/orchestrator_write.js.map +1 -0
  22. package/dist/chat/tools.d.ts.map +1 -1
  23. package/dist/chat/tools.js +28 -0
  24. package/dist/chat/tools.js.map +1 -1
  25. package/dist/commands/embed.d.ts +1 -0
  26. package/dist/commands/embed.d.ts.map +1 -1
  27. package/dist/commands/embed.js +5 -1
  28. package/dist/commands/embed.js.map +1 -1
  29. package/dist/core/config_formats.d.ts +45 -0
  30. package/dist/core/config_formats.d.ts.map +1 -0
  31. package/dist/core/config_formats.js +519 -0
  32. package/dist/core/config_formats.js.map +1 -0
  33. package/dist/core/db_write.d.ts +26 -0
  34. package/dist/core/db_write.d.ts.map +1 -0
  35. package/dist/core/db_write.js +262 -0
  36. package/dist/core/db_write.js.map +1 -0
  37. package/dist/core/forge_embed.d.ts +1 -0
  38. package/dist/core/forge_embed.d.ts.map +1 -1
  39. package/dist/core/forge_embed.js +132 -2
  40. package/dist/core/forge_embed.js.map +1 -1
  41. package/dist/core/forge_profile.d.ts +23 -0
  42. package/dist/core/forge_profile.d.ts.map +1 -1
  43. package/dist/core/forge_profile.js +56 -0
  44. package/dist/core/forge_profile.js.map +1 -1
  45. package/dist/core/operate_guard.d.ts +166 -0
  46. package/dist/core/operate_guard.d.ts.map +1 -0
  47. package/dist/core/operate_guard.js +603 -0
  48. package/dist/core/operate_guard.js.map +1 -0
  49. package/dist/docs/doctrine/operate-mode.md +140 -0
  50. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  51. package/dist/nac3/internal_manifest.js +187 -0
  52. package/dist/nac3/internal_manifest.js.map +1 -1
  53. package/dist/nac3/manifest_lazy.d.ts +5 -0
  54. package/dist/nac3/manifest_lazy.d.ts.map +1 -1
  55. package/dist/nac3/manifest_lazy.js +3 -1
  56. package/dist/nac3/manifest_lazy.js.map +1 -1
  57. package/dist/version.d.ts +1 -1
  58. package/dist/version.js +1 -1
  59. package/docs/doctrine/operate-mode.md +140 -0
  60. package/package.json +1 -1
@@ -130,6 +130,27 @@ export function initProfile(projectRoot) {
130
130
  /** For tests. */
131
131
  export function _resetProfileForTest() { ACTIVE = { profile: null, mission: '', systemMap: '', systemMapPath: '', root: '' }; }
132
132
  export function activeProfile() { return ACTIVE.profile; }
133
+ /**
134
+ * The effective OPERATE config for this deployment (null when operate mode is
135
+ * off or there is no profile). `full_config: true` is honoured as the legacy
136
+ * shorthand for operate.enabled -- a deployment that carries it still needs
137
+ * the allowlists to be able to change anything.
138
+ */
139
+ export function operateConfig() {
140
+ const p = ACTIVE.profile;
141
+ if (!p)
142
+ return null;
143
+ const op = { ...(p.operate || {}) };
144
+ if (op.enabled !== true && p.full_config === true)
145
+ op.enabled = true;
146
+ return op.enabled === true ? op : null;
147
+ }
148
+ /** True when operate mode is active for this deployment. */
149
+ export function operateEnabled() { return operateConfig() !== null; }
150
+ /** Verb families that exist ONLY to serve operate mode. */
151
+ export function isOperateVerb(verbId) {
152
+ return verbId.indexOf('yujin.config.') === 0 || verbId.indexOf('yujin.orchestrator.') === 0;
153
+ }
133
154
  /** System-prompt lines for the active profile (empty array when none).
134
155
  * Mission text first (operator voice), then -- when read_only -- the
135
156
  * diagnostic posture. The identity invariant is NOT replaceable. */
@@ -163,6 +184,24 @@ export function profilePromptLines() {
163
184
  + 'pending with the full analysis (no tickets API configured in the profile).'), ' 5. Record findings as pendings (yujin.pending.add) so nothing is lost.', ' 6. WRITE REPORTS -- part of your PRIMARY function. You MAY write reports of', ' any type (HTML/md/csv/...) under: '
164
185
  + reportDirs(p).map((d) => '"' + d + '/"').join(', ') + '.', ' Everything else on disk stays read-only.', '');
165
186
  }
187
+ /* OPERATE MODE (Pablo 2026-10-10) -- the bounded exit from read-only. The
188
+ * posture OVERRIDES step 3 above: inside the declared scope the assistant
189
+ * APPLIES the change itself (and verifies it); outside it, it still only
190
+ * emits the operator instruction. Enumerating the actual allowlists here is
191
+ * deliberate: the brain must know its real surface, not guess it. */
192
+ const op = operateConfig();
193
+ if (op) {
194
+ const files = Array.isArray(op.config_files?.allow) ? op.config_files.allow : [];
195
+ const tables = Array.isArray(op.config_tables?.allow) ? op.config_tables.allow : [];
196
+ const orch = op.orchestrator && op.orchestrator.kind ? String(op.orchestrator.kind) : '';
197
+ lines.push('=================================================================', 'OPERATE MODE: you may CONFIGURE this system (mechanically bounded)', '=================================================================', '', 'This deployment is authorised to change the CONFIGURATION of this system -- and', 'ONLY its configuration. Three things, each through its own native verb:', '', ' 1. CONFIGURATION DATA FILES (json/xml/txt/ini/env/yaml/toml/vault):', ' yujin.config.file-set -- change ONE value (preferred: it keeps the', ' rest of the file byte-for-byte, backs it up', ' and VERIFIES the new value by reading it back).', ' yujin.config.file-write -- full new content, for a format the targeted', ' editor cannot handle. Read the file first.', ' yujin.config.file-revert -- restore a backup (backup_id from the journal).', (files.length
198
+ ? ' Allowlisted: ' + files.join(', ')
199
+ : ' NO files allowlisted yet -- ask the operator for operate.config_files.allow.'), '', ' 2. CONFIGURATION TABLES: yujin.config.table-set {table, op, set, where}.', ' Structured only -- there is NO verb that runs arbitrary SQL writes.', ' UPDATE/DELETE need a WHERE; the rows are preflighted and capped; the', ' before-image + a rollback statement go to the journal.', (tables.length
200
+ ? ' Allowlisted tables: ' + tables.join(', ')
201
+ : ' NO tables allowlisted yet -- ask the operator for operate.config_tables.allow.'), '', ' 3. ORCHESTRATOR: yujin.orchestrator.process-create (register a new', ' process) + yujin.orchestrator.schedule-set (cron it, 5 Linux fields).', (orch
202
+ ? ' Adapter configured: ' + orch + '.'
203
+ : ' NO orchestrator configured yet -- ask the operator for operate.orchestrator.'), '', 'HARD LIMITS (enforced at the dispatcher, not negotiable -- do not try):', ' - The DATA tables of this system are OFF LIMITS. Only the allowlisted', ' CONFIGURATION tables can change. A data fix = operator instruction or ticket.', ' - The SOFTWARE of this system is OFF LIMITS: no source, binaries, units, build', ' or dependency files -- any extension that is code is refused whatever the', ' allowlist says. A code change = ticket + pending with your analysis.', ' - The .forge/ control surface of Forge itself (profile, db.json, mission) is OFF LIMITS.', '', 'HOW TO WORK a configuration request:', ' a. Confirm the need against the SYSTEM MAP, and read the CURRENT value first', ' (yujin.fs.read-file / yujin.db.query). Never write blind.', ' b. State to the user, in one line, WHAT you are about to change and WHERE.', ' c. Apply it with the verb above (one value at a time).', ' d. VERIFY: re-read the file / re-query the row, and report the before -> after.', ' e. Say what has to happen for it to take effect (reload / restart / next tick)', ' -- restarting a service is NOT yours: give the operator the exact command.', ' f. Every change is journaled with a backup. If something looks wrong, revert', ' (file-revert) or hand the operator the rollback statement from the journal.', ' g. Outside this scope you are still the DIAGNOSTIC assistant: precise', ' instruction for the operator, pending, or ticket.', '');
204
+ }
166
205
  return lines;
167
206
  }
168
207
  /* ------------------------- read-only verb gate ------------------------- */
@@ -221,6 +260,23 @@ export function profileVerbGate(verbId, args) {
221
260
  reason: 'this deployment is pinned to its system (pinned_root): the project root cannot be re-anchored.',
222
261
  };
223
262
  }
263
+ /* OPERATE MODE verbs (yujin.config.* / yujin.orchestrator.*) exist only to
264
+ * serve a deployment that was authorised to configure its system. With
265
+ * operate off they are refused HERE, before any handler runs -- so an
266
+ * un-authorised embed cannot change anything even if the brain tries. With
267
+ * operate on they pass, and operate_guard does the fine-grained allowlist
268
+ * enforcement inside each handler. */
269
+ if (isOperateVerb(verbId)) {
270
+ if (!operateConfig()) {
271
+ return {
272
+ action: 'reject',
273
+ reason: 'operate mode is OFF in this deployment profile: verb "' + verbId + '" would change this system configuration. '
274
+ + 'Diagnose and emit the precise instruction for the operator instead '
275
+ + '(the operator enables it with an "operate" block in .forge/profile.<env>.json).',
276
+ };
277
+ }
278
+ return { action: 'pass' };
279
+ }
224
280
  if (p.read_only !== true)
225
281
  return { action: 'pass' };
226
282
  if (verbId === 'yujin.shell.exec')
@@ -1 +1 @@
1
- {"version":3,"file":"forge_profile.js","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forge_profile.js","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ export interface OperateFilesConfig {
2
+ /** Globs (project-relative or absolute) of the config files that MAY change. */
3
+ allow?: string[];
4
+ /** Globs excluded from the allowlist (checked after allow). */
5
+ deny?: string[];
6
+ /** Max content size for a single file write. Default 512 KB. */
7
+ max_bytes?: number;
8
+ }
9
+ export interface OperateTablesConfig {
10
+ /** Table names (optionally db-qualified) that MAY change. Default deny. */
11
+ allow?: string[];
12
+ deny?: string[];
13
+ /** Columns that can never be set. Default ['id', 'created_at']. */
14
+ immutable_columns?: string[];
15
+ /** Max rows a single statement may affect. Default 25. */
16
+ max_rows?: number;
17
+ /** INSERT into an allowlisted config table. Default true. */
18
+ allow_insert?: boolean;
19
+ /** DELETE from an allowlisted config table. Default FALSE (deliberate). */
20
+ allow_delete?: boolean;
21
+ }
22
+ export interface OperateOrchestratorConfig {
23
+ /** How this system's orchestrator is driven. */
24
+ kind?: 'db_table' | 'http' | 'cron_file';
25
+ process_table?: string;
26
+ /** Logical -> real column names, e.g. {name:'nombre', command:'script'}. */
27
+ process_columns?: Record<string, string>;
28
+ /** Fixed column values applied to every created process. */
29
+ process_defaults?: Record<string, string | number | boolean | null>;
30
+ schedule_table?: string;
31
+ /** Logical -> real column names. `id` names the primary key used by
32
+ * schedule_id when a process owns several schedules (default 'id'). */
33
+ schedule_columns?: Record<string, string>;
34
+ schedule_defaults?: Record<string, string | number | boolean | null>;
35
+ base_url?: string;
36
+ api_key_env?: string;
37
+ auth_header?: string;
38
+ process_path?: string;
39
+ schedule_path?: string;
40
+ cron_dir?: string;
41
+ cron_user?: string;
42
+ cron_prefix?: string;
43
+ /** Command template; {name} and {args} are substituted (both sanitised). */
44
+ command_template?: string;
45
+ }
46
+ export interface OperateConfig {
47
+ enabled?: boolean;
48
+ config_files?: OperateFilesConfig;
49
+ config_tables?: OperateTablesConfig;
50
+ orchestrator?: OperateOrchestratorConfig;
51
+ /** Where backups + changes.jsonl live. Default '.forge/changes'. */
52
+ journal_dir?: string;
53
+ /** Show the R8 approval modal before each change. Default TRUE. */
54
+ require_approval?: boolean;
55
+ }
56
+ export declare const DEFAULT_JOURNAL_DIR = ".forge/changes";
57
+ export declare const DEFAULT_MAX_BYTES: number;
58
+ export declare const DEFAULT_MAX_ROWS = 25;
59
+ export declare const DEFAULT_IMMUTABLE_COLUMNS: readonly ["id", "created_at"];
60
+ export declare function shortHash(text: string): string;
61
+ export interface Decision {
62
+ ok: boolean;
63
+ /** Why it was refused -- written for the brain to relay to the operator. */
64
+ reason?: string;
65
+ }
66
+ export interface PathDecision extends Decision {
67
+ /** Absolute, resolved target (only when ok). */
68
+ abs?: string;
69
+ /** Project-relative when inside the root, else the absolute path. */
70
+ shown?: string;
71
+ }
72
+ /**
73
+ * Decide whether `rawPath` may be WRITTEN as configuration data.
74
+ *
75
+ * Order: resolve -> hard invariants (segments, OS prefixes, Forge control
76
+ * surface, software extensions) -> operator allowlist -> deny list ->
77
+ * extension class. Returns the absolute path when ok.
78
+ */
79
+ export declare function guardConfigFile(projectRoot: string, op: OperateConfig | null | undefined, rawPath: string): PathDecision;
80
+ /** Size + text-only cap for a config-file write. */
81
+ export declare function guardConfigSize(op: OperateConfig | null | undefined, content: string): Decision;
82
+ /** Validate a table/column name, optionally db-qualified ("db.table"). */
83
+ export declare function guardIdentifier(name: string, what?: string): Decision;
84
+ export type TableOp = 'update' | 'insert' | 'delete';
85
+ export interface TableGuardOptions {
86
+ /** Tables the orchestrator config contributes to the allowlist. */
87
+ extraAllow?: string[];
88
+ }
89
+ /**
90
+ * Decide whether a structured write on `table` is allowed. Pablo's rule 4
91
+ * (never touch the system's DATA tables) is enforced as DEFAULT DENY: only
92
+ * the tables the operator declared as configuration may change.
93
+ */
94
+ export declare function guardConfigTable(op: OperateConfig | null | undefined, table: string, tableOp: TableOp, opts?: TableGuardOptions): Decision;
95
+ /** Columns that can never be set: the profile's list, or the default. */
96
+ export declare function immutableColumns(op: OperateConfig | null | undefined): string[];
97
+ export declare function maxRows(op: OperateConfig | null | undefined): number;
98
+ export type SqlScalar = string | number | boolean | null;
99
+ /** Validate a {column: value} map: identifiers, scalars only, immutability. */
100
+ export declare function guardColumnMap(op: OperateConfig | null | undefined, map: Record<string, unknown> | undefined, what: 'set' | 'where' | 'values'): {
101
+ ok: boolean;
102
+ reason?: string;
103
+ clean?: Record<string, SqlScalar>;
104
+ };
105
+ /**
106
+ * Validate a 5-field Linux cron expression (the grammar the orchestrators in
107
+ * this ecosystem speak: '*', value, lists, ranges, steps). Returns the
108
+ * normalised expression. Macros (@daily) are refused on purpose: the
109
+ * orchestrators store 5 fields.
110
+ */
111
+ export declare function guardCron(expr: string): {
112
+ ok: boolean;
113
+ reason?: string;
114
+ cron?: string;
115
+ };
116
+ /** A process name must be a plain slug: it ends up in a table, in a cron file
117
+ * name and (templated) on a command line. No shell metacharacters, ever. */
118
+ export declare function guardProcessName(name: string): {
119
+ ok: boolean;
120
+ reason?: string;
121
+ name?: string;
122
+ };
123
+ /** Sanitise one templated command argument. */
124
+ export declare function guardCommandArg(value: string): {
125
+ ok: boolean;
126
+ reason?: string;
127
+ value?: string;
128
+ };
129
+ export interface ChangeRecord {
130
+ ts?: string;
131
+ kind: 'config_file' | 'config_table' | 'orchestrator' | 'revert';
132
+ verb: string;
133
+ target: string;
134
+ reason?: string;
135
+ detail?: Record<string, unknown>;
136
+ backup_id?: string;
137
+ before_hash?: string;
138
+ after_hash?: string;
139
+ }
140
+ export declare function journalDirAbs(root: string, op: OperateConfig | null | undefined): string;
141
+ /** Copy a file into the journal's backup dir. Returns null when absent. */
142
+ export declare function backupFile(root: string, op: OperateConfig | null | undefined, abs: string): Promise<{
143
+ backup_id: string;
144
+ backup_path: string;
145
+ before: string;
146
+ } | null>;
147
+ export declare const REDACTED = "<redactado>";
148
+ /** Mask credential-looking values in a journal payload. Best effort BY NAME:
149
+ * it protects the journal from the obvious leak, it is NOT a reason to
150
+ * allowlist a credentials table (the operator decides that). */
151
+ export declare function redactSecrets(value: unknown, depth?: number): unknown;
152
+ /** Append one record to <journal_dir>/changes.jsonl. Never throws. */
153
+ export declare function journalChange(root: string, op: OperateConfig | null | undefined, rec: ChangeRecord): Promise<string>;
154
+ /** Resolve the sentinels allowed in operate.orchestrator.*_defaults.
155
+ * `__now__` -> local ISO seconds (2026-10-10T14:30:00), which is the shape
156
+ * these orchestrator tables store in their text timestamp columns -- several
157
+ * are NOT NULL with no DB default, so an INSERT without them fails. */
158
+ export declare function resolveDefaultValue(v: SqlScalar): SqlScalar;
159
+ /** Read back a journal record by backup id (for file-revert). */
160
+ export declare function findBackup(root: string, op: OperateConfig | null | undefined, backupId: string): Promise<{
161
+ rec: ChangeRecord;
162
+ backup_path: string;
163
+ } | null>;
164
+ /** The journal dir as shown to humans (project-relative when inside root). */
165
+ export declare function journalDirShown(root: string, op: OperateConfig | null | undefined): string;
166
+ //# sourceMappingURL=operate_guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operate_guard.d.ts","sourceRoot":"","sources":["../../src/core/operate_guard.ts"],"names":[],"mappings":"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"}