@groundnuty/macf 0.2.16 → 0.2.18

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.
@@ -46,6 +46,7 @@ import { installGhTokenHook, installPluginSkillPermissions, installSandboxFdAllo
46
46
  import { detectStaleDist, detectUnknownFreshness } from '../build-info.js';
47
47
  import { fetchPluginToWorkspace, workspacePluginDir } from '../plugin-fetcher.js';
48
48
  import { writeClaudeSh } from '../claude-sh.js';
49
+ import { refreshEnvFiles, migrateMonolithicClaudeSh, detectSettingsLocalEnvKeys, formatDeprecationWarning, } from '../env-files-update.js';
49
50
  import { createClientFromConfig } from '../registry-helper.js';
50
51
  import { generateToken } from '@groundnuty/macf-core';
51
52
  import { promptPassword, PromptCancelled } from '../prompt.js';
@@ -226,14 +227,72 @@ export async function update(projectDir, opts) {
226
227
  // macf#211.
227
228
  installSandboxExcludedCommands(projectDir);
228
229
  console.log(`Refreshed sandbox excludedCommands in .claude/settings.json`);
229
- // Regenerate claude.sh unconditionally the launcher template changes
230
- // over time (e.g., #60 added --plugin-dir) and workspaces need those
231
- // changes without having to re-run `macf init` from scratch. The
232
- // generated file carries a managed-file header warning users not to
233
- // edit it. See #63. Doesn't depend on config.versions, so it runs even
234
- // for legacy configs (before the error-exit for missing versions).
235
- writeClaudeSh(projectDir, config);
236
- console.log(`Refreshed claude.sh from current launcher template`);
230
+ // macf#342 PR-C: monolithic→multi-file migration + claude.sh refresh
231
+ // + per-concern env-file refresh. The three steps run as a unit
232
+ // because they're tightly coupled the thin claude.sh template (PR-B)
233
+ // depends on the env files existing, so we never want claude.sh
234
+ // refreshed without the env files alongside it. Likewise, migration
235
+ // writes both in lockstep for workspaces upgrading from a pre-#342
236
+ // monolithic launcher.
237
+ //
238
+ // **Operator opt-out**: `--no-migrate-env-files` skips ALL THREE steps
239
+ // (migration, claude.sh refresh, env-file refresh). The flag is for
240
+ // operators with a hand-modified launcher who explicitly don't want
241
+ // it auto-rewritten; the trade-off is they also miss any unrelated
242
+ // launcher template evolution (e.g., a future #283-style endpoint
243
+ // fix) on runs where they pass the flag. Removing the flag on a
244
+ // subsequent run reapplies the canonical template + migration.
245
+ //
246
+ // **Migration order**: `migrateMonolithicClaudeSh` MUST run before
247
+ // `writeClaudeSh`, because writeClaudeSh emits the thin source-loop
248
+ // template that depends on env files; if writeClaudeSh ran first, the
249
+ // operator's claude.sh would become thin without env files on disk
250
+ // until refreshEnvFiles ran later — leaving a brief window where the
251
+ // launcher would source nothing. Migration writes both atomically.
252
+ if (!opts.noMigrateEnvFiles) {
253
+ const migration = migrateMonolithicClaudeSh(projectDir, config);
254
+ if (migration.migrated) {
255
+ console.log(`Migrated monolithic claude.sh → thin source-loop template + ` +
256
+ `per-concern env files (macf#342)`);
257
+ }
258
+ else if (migration.reason === 'unrecognized-template') {
259
+ // Operator-edited / third-party launcher. Don't auto-overwrite
260
+ // here, but `writeClaudeSh` below WILL overwrite per the existing
261
+ // #63 contract — surface the case so the operator can decide
262
+ // whether to re-run with `--no-migrate-env-files`.
263
+ console.warn(`Note: claude.sh did not match the canonical macf template. ` +
264
+ `Will be overwritten with the current template (managed-file contract).`);
265
+ }
266
+ // Regenerate claude.sh unconditionally — the launcher template
267
+ // changes over time (e.g., #60 added --plugin-dir, #283 fixed the
268
+ // retired :4318 OTLP endpoint) and workspaces need those changes
269
+ // without having to re-run `macf init` from scratch. The generated
270
+ // file carries a managed-file header warning users not to edit it.
271
+ // See #63. Doesn't depend on config.versions, so it runs even for
272
+ // legacy configs (before the error-exit for missing versions).
273
+ writeClaudeSh(projectDir, config);
274
+ console.log(`Refreshed claude.sh from current launcher template`);
275
+ // Env-file refresh: macf-managed files (env._helpers / env.identity
276
+ // / env.github / env.certs / env.registry) overwrite + warn-on-
277
+ // handedit; operator-managed files (env.telemetry, env.tmux)
278
+ // bootstrap-write if absent + preserve unconditionally otherwise.
279
+ const refresh = refreshEnvFiles(projectDir, config);
280
+ const summary = `Env: refreshed ${refresh.refreshed.length} macf-managed file(s); ` +
281
+ `preserved ${refresh.preserved.length} operator-managed file(s); ` +
282
+ `warned on ${refresh.warnedHandEdits.length} hand-edit(s)`;
283
+ console.log(summary);
284
+ }
285
+ // macf#342 PR-C deprecation surface: settings.local.json env keys
286
+ // matching MACF_* / OTEL_* are now redundant with the per-concern
287
+ // env files. Backward-compat preserved structurally (macf_settings_get
288
+ // still reads them at runtime); this warning gives operators a window
289
+ // to migrate. No automatic JSON-key migration in this PR — the risk
290
+ // surface is too broad (operator may intentionally have layered
291
+ // overrides). See env-files-update.ts for the full rationale.
292
+ const deprecatedKeys = detectSettingsLocalEnvKeys(projectDir);
293
+ if (deprecatedKeys.length > 0) {
294
+ process.stderr.write(formatDeprecationWarning(deprecatedKeys));
295
+ }
237
296
  // DR-011 rev2 auto-migrate: check for legacy v1 CA key backup and
238
297
  // upgrade it to v2 (JSON envelope at 600k iters) if found. One-time
239
298
  // per project, silent no-op if already v2 or no backup exists.
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import type { MacfAgentConfig } from './config.js';
2
+ /**
3
+ * Result of `refreshEnvFiles` — counts that the caller turns into a
4
+ * single-line summary log. Lists kept as readonly arrays of basenames
5
+ * (not absolute paths) so the summary message stays compact and
6
+ * stable across operator filesystems.
7
+ */
8
+ export interface RefreshEnvFilesResult {
9
+ readonly refreshed: readonly string[];
10
+ readonly preserved: readonly string[];
11
+ readonly bootstrapped: readonly string[];
12
+ readonly warnedHandEdits: readonly string[];
13
+ }
14
+ /**
15
+ * Refresh per-concern env files in `<projectDir>/.claude/.macf/`.
16
+ *
17
+ * Macf-managed files (env._helpers, env.identity, env.github,
18
+ * env.certs, env.registry):
19
+ * - Absent → write fresh from `generate()`.
20
+ * - Present + matches fresh output → silent no-op.
21
+ * - Present + drift → emit one-time warning to stderr (cites
22
+ * macf#342 + suggests env.local.* / settings.local.json for
23
+ * overrides) + overwrite with fresh output.
24
+ *
25
+ * Operator-managed files (env.telemetry, env.tmux):
26
+ * - Absent → bootstrap-write (one-time fresh write so the workspace
27
+ * starts with a sensible default — operator can edit thereafter).
28
+ * - Present → SILENT NO-OP. Operator's edits preserved unconditionally.
29
+ *
30
+ * **Why "drift = overwrite + warn" not "preserve + warn"**: the
31
+ * macf-managed files have a managed-file header reserving the right to
32
+ * regenerate them. If an operator hand-edits env.identity to change
33
+ * MACF_AGENT_NAME, the canonical place for that override is
34
+ * settings.local.json `env.MACF_AGENT_NAME` (read at runtime by
35
+ * `macf_settings_get`) — not the generated file. PR-C honors the
36
+ * managed-file contract; the warning gives operators time to move
37
+ * their edit.
38
+ *
39
+ * **Stderr write directly** (not via console.warn) so multiple warnings
40
+ * from one update run aren't intermingled with stdout summary logs.
41
+ * Uses `process.stderr.write` consistent with init.ts's existing
42
+ * stderr-diagnostic style.
43
+ *
44
+ * Creates `.claude/.macf/` if absent (mkdir -p). Returns the result
45
+ * record so the caller logs a summary; does not log itself (separation
46
+ * of concerns: this function decides + writes, caller decides how
47
+ * loudly to report).
48
+ */
49
+ export declare function refreshEnvFiles(projectDir: string, config: MacfAgentConfig): RefreshEnvFilesResult;
50
+ /**
51
+ * Result of `migrateMonolithicClaudeSh`. `migrated: true` means a
52
+ * monolithic claude.sh was detected and replaced with the thin
53
+ * source-loop template + per-concern env files were written.
54
+ * `migrated: false` carries a `reason` discriminator so the caller can
55
+ * log appropriately or short-circuit downstream work.
56
+ */
57
+ export type MigrationResult = {
58
+ readonly migrated: true;
59
+ } | {
60
+ readonly migrated: false;
61
+ readonly reason: 'already-migrated' | 'no-claude-sh' | string;
62
+ };
63
+ /**
64
+ * Detect whether `<projectDir>/claude.sh` is the pre-#342 monolithic
65
+ * template, and if so, migrate it in-place to the thin template +
66
+ * generate the per-concern env files.
67
+ *
68
+ * Detection rules:
69
+ * - No `claude.sh` at all → `{ migrated: false, reason: 'no-claude-sh' }`.
70
+ * (init hasn't run; nothing to migrate.)
71
+ * - `claude.sh` exists + has the source-loop marker (post-#342 thin)
72
+ * → `{ migrated: false, reason: 'already-migrated' }`.
73
+ * Silent no-op; downstream `refreshEnvFiles` still runs.
74
+ * - `claude.sh` exists + has the inline-MACF_AGENT_NAME marker (pre-#342
75
+ * monolithic) → migrate.
76
+ * - Anything else (operator-rewritten launcher, third-party edit) →
77
+ * `{ migrated: false, reason: 'unrecognized-template' }`. Conservative:
78
+ * don't auto-overwrite something we didn't author. Operator can
79
+ * run `macf init --force` to opt into the migration explicitly.
80
+ *
81
+ * Migration steps (when migrated=true):
82
+ * 1. `writeEnvFiles(projectDir, config)` — fresh per-concern env files
83
+ * from the config in `.macf/macf-agent.json`. The JSON is the
84
+ * source of truth post-migration; we do NOT extract values from
85
+ * the monolithic claude.sh (the JSON has them already, and parsing
86
+ * shell to recover values is fragile + unnecessary).
87
+ * 2. `writeClaudeSh(projectDir, config)` — overwrite with the thin
88
+ * template per PR-B. Thin template depends on env files written
89
+ * in step 1.
90
+ *
91
+ * **Migration is auto-detected, not opt-in.** Operators upgrading from
92
+ * a CLI carrying the monolithic template to one carrying this code
93
+ * get migrated transparently on first `macf update`. Opt-out is
94
+ * `--no-migrate-env-files` at the CLI layer (handled in update.ts).
95
+ *
96
+ * **Idempotent**: re-running on an already-migrated workspace returns
97
+ * `{ migrated: false, reason: 'already-migrated' }` without writing
98
+ * anything. Safe for repeated `macf update` calls.
99
+ */
100
+ export declare function migrateMonolithicClaudeSh(projectDir: string, config: MacfAgentConfig): MigrationResult;
101
+ /**
102
+ * Read `.claude/settings.local.json` and return the list of `env.*`
103
+ * keys whose names start with `MACF_` or `OTEL_`. These are the
104
+ * subset that the multi-file env layout (#342) is replacing —
105
+ * historically operators set them in the JSON env block as a
106
+ * settings-driven override; post-#342 the canonical location is per-
107
+ * concern env files (env.identity for MACF_AGENT_NAME, env.telemetry
108
+ * for OTEL_*, etc.) or the `env.local.*` operator override pattern.
109
+ *
110
+ * **Backward-compat preserved structurally**: `macf_settings_get` in
111
+ * env._helpers (PR-A / PR-B) still reads `env.MACF_*` and `env.OTEL_*`
112
+ * from settings.local.json at runtime. So existing operator overrides
113
+ * keep working — the deprecation warning is the SOFT signal giving
114
+ * operators a window to migrate. Hard removal would be a future PR
115
+ * (Option α §"clean break with deprecation shim" per #342 thread).
116
+ *
117
+ * **No automatic migration of JSON env keys** in this PR. The risk
118
+ * surface is too broad: operators may have intentional layered
119
+ * configurations where the JSON value differs from the file default
120
+ * (e.g., dev endpoint in JSON, prod default baked into file). Auto-
121
+ * moving the value loses that distinction. Manual migration after
122
+ * seeing the warning is the conservative choice; auto-migration can
123
+ * be a future enhancement once the patterns are well-understood.
124
+ *
125
+ * Returns a sorted, deduplicated list of keys (without the `env.`
126
+ * prefix — caller formats them). Empty when settings.local.json is
127
+ * absent / has no `env` block / has no matching keys / is malformed
128
+ * (silent on malformed: settings-writer.ts surfaces parse errors via
129
+ * its other code paths; we don't double-report).
130
+ */
131
+ export declare function detectSettingsLocalEnvKeys(projectDir: string): readonly string[];
132
+ /**
133
+ * Format the per-key deprecation warning lines for stderr. Returned as
134
+ * a single multi-line string the caller can emit in one
135
+ * `process.stderr.write`. Empty string when `keys` is empty (caller
136
+ * doesn't have to special-case).
137
+ */
138
+ export declare function formatDeprecationWarning(keys: readonly string[]): string;
139
+ //# sourceMappingURL=env-files-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-files-update.d.ts","sourceRoot":"","sources":["../../src/cli/env-files-update.ts"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4CnD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,qBAAqB,CAkDvB;AAMD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,GAAG,MAAM,CAAA;CAAE,CAAC;AAchG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,eAAe,CA0BjB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,GACjB,SAAS,MAAM,EAAE,CAqBnB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAexE"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Update + migration semantics for the per-concern env-file layout
3
+ * (groundnuty/macf#342). PR-C of the 4-PR sequence:
4
+ *
5
+ * PR-A — pure generators (env-files.ts) [merged ee4604d]
6
+ * PR-B — thin claude.sh + writeEnvFiles + init wiring [merged b75c7ff]
7
+ * PR-C (this PR) — `macf update` wiring + monolithic→multi-file
8
+ * migration tool + settings.local.json env block compat
9
+ * PR-D — operator docs
10
+ *
11
+ * Three concerns live here, kept in one module so the refresh pipeline
12
+ * is easy to read end-to-end:
13
+ *
14
+ * 1. `refreshEnvFiles()` — refresh-and-preserve semantics for
15
+ * macf-managed (overwrite + warn-on-handedit) and operator-managed
16
+ * (silent no-op when present) env files.
17
+ *
18
+ * 2. `migrateMonolithicClaudeSh()` — auto-migration from the
19
+ * pre-#342 monolithic claude.sh to the thin source-loop template
20
+ * + per-concern env files. Detection-gated; runs transparently on
21
+ * first `macf update` after upgrading to a CLI carrying this code.
22
+ *
23
+ * 3. `detectSettingsLocalEnvKeys()` — surfaces deprecated
24
+ * `env.MACF_*` / `env.OTEL_*` keys still living in
25
+ * `.claude/settings.local.json` per Option α (clean break with
26
+ * deprecation shim). The shim itself is structural — `macf_settings_get`
27
+ * in env._helpers continues to read these keys at runtime — so
28
+ * operators have a window to migrate; PR-C only emits the
29
+ * one-time warning.
30
+ *
31
+ * **Invariant**: this module never deletes operator state. Macf-managed
32
+ * files are overwritten only with the (single source of truth)
33
+ * generator output; operator-managed files (env.telemetry, env.tmux)
34
+ * are preserved unconditionally once they exist; settings.local.json
35
+ * is read-only here (the deprecation warning surfaces them, but no
36
+ * automatic JSON-key migration in this PR — the risk surface is too
37
+ * broad for one change. Operators see the warning and migrate by hand).
38
+ */
39
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
40
+ import { join, resolve } from 'node:path';
41
+ import { generateEnvCerts, generateEnvGitHub, generateEnvHelpers, generateEnvIdentity, generateEnvRegistry, generateEnvTelemetry, generateEnvTmux, writeEnvFiles, } from './env-files.js';
42
+ import { writeClaudeSh } from './claude-sh.js';
43
+ const MANAGED_ENV_FILES = [
44
+ { name: 'env._helpers', generate: () => generateEnvHelpers() },
45
+ { name: 'env.identity', generate: generateEnvIdentity },
46
+ { name: 'env.github', generate: generateEnvGitHub },
47
+ { name: 'env.certs', generate: generateEnvCerts },
48
+ { name: 'env.registry', generate: generateEnvRegistry },
49
+ ];
50
+ /**
51
+ * The set of operator-managed env files. Bootstrap-write on first
52
+ * `macf update` if absent, then preserved unconditionally on subsequent
53
+ * runs — operator's edits are theirs to own. The `generate` function
54
+ * is only called when the file doesn't exist yet.
55
+ */
56
+ const OPERATOR_ENV_FILES = [
57
+ { name: 'env.telemetry', generate: generateEnvTelemetry },
58
+ { name: 'env.tmux', generate: generateEnvTmux },
59
+ ];
60
+ /**
61
+ * Refresh per-concern env files in `<projectDir>/.claude/.macf/`.
62
+ *
63
+ * Macf-managed files (env._helpers, env.identity, env.github,
64
+ * env.certs, env.registry):
65
+ * - Absent → write fresh from `generate()`.
66
+ * - Present + matches fresh output → silent no-op.
67
+ * - Present + drift → emit one-time warning to stderr (cites
68
+ * macf#342 + suggests env.local.* / settings.local.json for
69
+ * overrides) + overwrite with fresh output.
70
+ *
71
+ * Operator-managed files (env.telemetry, env.tmux):
72
+ * - Absent → bootstrap-write (one-time fresh write so the workspace
73
+ * starts with a sensible default — operator can edit thereafter).
74
+ * - Present → SILENT NO-OP. Operator's edits preserved unconditionally.
75
+ *
76
+ * **Why "drift = overwrite + warn" not "preserve + warn"**: the
77
+ * macf-managed files have a managed-file header reserving the right to
78
+ * regenerate them. If an operator hand-edits env.identity to change
79
+ * MACF_AGENT_NAME, the canonical place for that override is
80
+ * settings.local.json `env.MACF_AGENT_NAME` (read at runtime by
81
+ * `macf_settings_get`) — not the generated file. PR-C honors the
82
+ * managed-file contract; the warning gives operators time to move
83
+ * their edit.
84
+ *
85
+ * **Stderr write directly** (not via console.warn) so multiple warnings
86
+ * from one update run aren't intermingled with stdout summary logs.
87
+ * Uses `process.stderr.write` consistent with init.ts's existing
88
+ * stderr-diagnostic style.
89
+ *
90
+ * Creates `.claude/.macf/` if absent (mkdir -p). Returns the result
91
+ * record so the caller logs a summary; does not log itself (separation
92
+ * of concerns: this function decides + writes, caller decides how
93
+ * loudly to report).
94
+ */
95
+ export function refreshEnvFiles(projectDir, config) {
96
+ const absDir = resolve(projectDir);
97
+ const envDir = join(absDir, '.claude', '.macf');
98
+ mkdirSync(envDir, { recursive: true });
99
+ const refreshed = [];
100
+ const preserved = [];
101
+ const bootstrapped = [];
102
+ const warnedHandEdits = [];
103
+ // Macf-managed files: overwrite + warn on hand-edit.
104
+ for (const { name, generate } of MANAGED_ENV_FILES) {
105
+ const path = join(envDir, name);
106
+ const fresh = generate(config);
107
+ if (!existsSync(path)) {
108
+ writeFileSync(path, fresh, { mode: 0o644 });
109
+ refreshed.push(name);
110
+ continue;
111
+ }
112
+ const current = readFileSync(path, 'utf-8');
113
+ if (current === fresh) {
114
+ // Silent no-op — no on-disk change, no log.
115
+ continue;
116
+ }
117
+ // Drift detected. Warn once, then overwrite to honor the
118
+ // managed-file contract.
119
+ process.stderr.write(`Warning: hand-edited macf-managed env file detected: .claude/.macf/${name}\n` +
120
+ ` Overwriting with the canonical generator output (macf#342).\n` +
121
+ ` To customize identity / endpoints, prefer:\n` +
122
+ ` - .claude/settings.local.json \`env\` block (read by macf_settings_get)\n` +
123
+ ` - .claude/.macf/env.local.<name> (sources after canonical files)\n`);
124
+ writeFileSync(path, fresh, { mode: 0o644 });
125
+ refreshed.push(name);
126
+ warnedHandEdits.push(name);
127
+ }
128
+ // Operator-managed files: bootstrap-write if absent; preserve otherwise.
129
+ for (const { name, generate } of OPERATOR_ENV_FILES) {
130
+ const path = join(envDir, name);
131
+ if (existsSync(path)) {
132
+ preserved.push(name);
133
+ continue;
134
+ }
135
+ writeFileSync(path, generate(config), { mode: 0o644 });
136
+ bootstrapped.push(name);
137
+ }
138
+ return { refreshed, preserved, bootstrapped, warnedHandEdits };
139
+ }
140
+ /**
141
+ * Marker for the pre-#342 monolithic claude.sh template: it inlines
142
+ * `export MACF_AGENT_NAME=` directly. The post-#342 thin template
143
+ * sources env files instead — MACF_AGENT_NAME is exported from
144
+ * `.claude/.macf/env.identity`, NOT inline in claude.sh. The
145
+ * source-loop sentinel below is the post-#342 marker for the
146
+ * inverse check (defensive — if both are present the file is in
147
+ * an inconsistent state we shouldn't auto-migrate).
148
+ */
149
+ const MONOLITHIC_CLAUDE_SH_MARKER = 'export MACF_AGENT_NAME=';
150
+ const THIN_CLAUDE_SH_MARKER = 'for f in "$SCRIPT_DIR/.claude/.macf"/env.*';
151
+ /**
152
+ * Detect whether `<projectDir>/claude.sh` is the pre-#342 monolithic
153
+ * template, and if so, migrate it in-place to the thin template +
154
+ * generate the per-concern env files.
155
+ *
156
+ * Detection rules:
157
+ * - No `claude.sh` at all → `{ migrated: false, reason: 'no-claude-sh' }`.
158
+ * (init hasn't run; nothing to migrate.)
159
+ * - `claude.sh` exists + has the source-loop marker (post-#342 thin)
160
+ * → `{ migrated: false, reason: 'already-migrated' }`.
161
+ * Silent no-op; downstream `refreshEnvFiles` still runs.
162
+ * - `claude.sh` exists + has the inline-MACF_AGENT_NAME marker (pre-#342
163
+ * monolithic) → migrate.
164
+ * - Anything else (operator-rewritten launcher, third-party edit) →
165
+ * `{ migrated: false, reason: 'unrecognized-template' }`. Conservative:
166
+ * don't auto-overwrite something we didn't author. Operator can
167
+ * run `macf init --force` to opt into the migration explicitly.
168
+ *
169
+ * Migration steps (when migrated=true):
170
+ * 1. `writeEnvFiles(projectDir, config)` — fresh per-concern env files
171
+ * from the config in `.macf/macf-agent.json`. The JSON is the
172
+ * source of truth post-migration; we do NOT extract values from
173
+ * the monolithic claude.sh (the JSON has them already, and parsing
174
+ * shell to recover values is fragile + unnecessary).
175
+ * 2. `writeClaudeSh(projectDir, config)` — overwrite with the thin
176
+ * template per PR-B. Thin template depends on env files written
177
+ * in step 1.
178
+ *
179
+ * **Migration is auto-detected, not opt-in.** Operators upgrading from
180
+ * a CLI carrying the monolithic template to one carrying this code
181
+ * get migrated transparently on first `macf update`. Opt-out is
182
+ * `--no-migrate-env-files` at the CLI layer (handled in update.ts).
183
+ *
184
+ * **Idempotent**: re-running on an already-migrated workspace returns
185
+ * `{ migrated: false, reason: 'already-migrated' }` without writing
186
+ * anything. Safe for repeated `macf update` calls.
187
+ */
188
+ export function migrateMonolithicClaudeSh(projectDir, config) {
189
+ const absDir = resolve(projectDir);
190
+ const claudeShPath = join(absDir, 'claude.sh');
191
+ if (!existsSync(claudeShPath)) {
192
+ return { migrated: false, reason: 'no-claude-sh' };
193
+ }
194
+ const content = readFileSync(claudeShPath, 'utf-8');
195
+ // Post-#342 thin template marker present → already migrated.
196
+ if (content.includes(THIN_CLAUDE_SH_MARKER)) {
197
+ return { migrated: false, reason: 'already-migrated' };
198
+ }
199
+ // Pre-#342 monolithic marker absent → unrecognized template (operator
200
+ // hand-edit, third-party launcher). Don't auto-overwrite something we
201
+ // didn't author. Operator can run `macf init --force` to opt into it.
202
+ if (!content.includes(MONOLITHIC_CLAUDE_SH_MARKER)) {
203
+ return { migrated: false, reason: 'unrecognized-template' };
204
+ }
205
+ // Monolithic detected. Migrate.
206
+ writeEnvFiles(absDir, config);
207
+ writeClaudeSh(absDir, config);
208
+ return { migrated: true };
209
+ }
210
+ // ---------------------------------------------------------------------------
211
+ // detectSettingsLocalEnvKeys — Option α deprecation surface
212
+ // ---------------------------------------------------------------------------
213
+ /**
214
+ * Read `.claude/settings.local.json` and return the list of `env.*`
215
+ * keys whose names start with `MACF_` or `OTEL_`. These are the
216
+ * subset that the multi-file env layout (#342) is replacing —
217
+ * historically operators set them in the JSON env block as a
218
+ * settings-driven override; post-#342 the canonical location is per-
219
+ * concern env files (env.identity for MACF_AGENT_NAME, env.telemetry
220
+ * for OTEL_*, etc.) or the `env.local.*` operator override pattern.
221
+ *
222
+ * **Backward-compat preserved structurally**: `macf_settings_get` in
223
+ * env._helpers (PR-A / PR-B) still reads `env.MACF_*` and `env.OTEL_*`
224
+ * from settings.local.json at runtime. So existing operator overrides
225
+ * keep working — the deprecation warning is the SOFT signal giving
226
+ * operators a window to migrate. Hard removal would be a future PR
227
+ * (Option α §"clean break with deprecation shim" per #342 thread).
228
+ *
229
+ * **No automatic migration of JSON env keys** in this PR. The risk
230
+ * surface is too broad: operators may have intentional layered
231
+ * configurations where the JSON value differs from the file default
232
+ * (e.g., dev endpoint in JSON, prod default baked into file). Auto-
233
+ * moving the value loses that distinction. Manual migration after
234
+ * seeing the warning is the conservative choice; auto-migration can
235
+ * be a future enhancement once the patterns are well-understood.
236
+ *
237
+ * Returns a sorted, deduplicated list of keys (without the `env.`
238
+ * prefix — caller formats them). Empty when settings.local.json is
239
+ * absent / has no `env` block / has no matching keys / is malformed
240
+ * (silent on malformed: settings-writer.ts surfaces parse errors via
241
+ * its other code paths; we don't double-report).
242
+ */
243
+ export function detectSettingsLocalEnvKeys(projectDir) {
244
+ const absDir = resolve(projectDir);
245
+ const path = join(absDir, '.claude', 'settings.local.json');
246
+ if (!existsSync(path))
247
+ return [];
248
+ let parsed;
249
+ try {
250
+ parsed = JSON.parse(readFileSync(path, 'utf-8'));
251
+ }
252
+ catch {
253
+ // Don't double-report parse errors here; settings-writer.ts
254
+ // surfaces them via its own paths when it touches the file.
255
+ return [];
256
+ }
257
+ const envBlock = parsed['env'];
258
+ if (envBlock === null || typeof envBlock !== 'object')
259
+ return [];
260
+ const keys = Object.keys(envBlock).filter((k) => k.startsWith('MACF_') || k.startsWith('OTEL_'));
261
+ return Array.from(new Set(keys)).sort();
262
+ }
263
+ /**
264
+ * Format the per-key deprecation warning lines for stderr. Returned as
265
+ * a single multi-line string the caller can emit in one
266
+ * `process.stderr.write`. Empty string when `keys` is empty (caller
267
+ * doesn't have to special-case).
268
+ */
269
+ export function formatDeprecationWarning(keys) {
270
+ if (keys.length === 0)
271
+ return '';
272
+ const lines = [
273
+ `Warning: deprecated env key(s) in .claude/settings.local.json (macf#342):`,
274
+ ];
275
+ for (const k of keys) {
276
+ lines.push(` env.${k}`);
277
+ }
278
+ lines.push(` These are still read at runtime by macf_settings_get (backward-compat),`, ` but the canonical location is now .claude/.macf/env.* (or env.local.*`, ` for operator overrides). See macf#342.`, '');
279
+ return lines.join('\n');
280
+ }
281
+ //# sourceMappingURL=env-files-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-files-update.js","sourceRoot":"","sources":["../../src/cli/env-files-update.ts"],"names":[],"mappings":"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"}