@entelligentsia/forgecli 0.9.3 → 0.10.0

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 (54) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +38 -0
  3. package/dist/bin/config.js +7 -2
  4. package/dist/bin/config.js.map +1 -1
  5. package/dist/bin/forge.js +81 -68
  6. package/dist/bin/forge.js.map +1 -1
  7. package/dist/extensions/forgecli/config-command.js +1 -0
  8. package/dist/extensions/forgecli/config-command.js.map +1 -1
  9. package/dist/extensions/forgecli/config-layer.js +3 -4
  10. package/dist/extensions/forgecli/config-layer.js.map +1 -1
  11. package/dist/extensions/forgecli/config-tui/component.js +6 -0
  12. package/dist/extensions/forgecli/config-tui/component.js.map +1 -1
  13. package/dist/extensions/forgecli/config-tui/handler.d.ts +4 -0
  14. package/dist/extensions/forgecli/config-tui/handler.js +17 -9
  15. package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
  16. package/dist/extensions/forgecli/config-tui/screens/override-editor.js +114 -47
  17. package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -1
  18. package/dist/extensions/forgecli/config-tui/screens/persona-editor.js +73 -50
  19. package/dist/extensions/forgecli/config-tui/screens/persona-editor.js.map +1 -1
  20. package/dist/extensions/forgecli/config-tui/screens/shared.d.ts +32 -0
  21. package/dist/extensions/forgecli/config-tui/screens/shared.js +74 -1
  22. package/dist/extensions/forgecli/config-tui/screens/shared.js.map +1 -1
  23. package/dist/extensions/forgecli/config-tui/screens/tier-picker.js +69 -28
  24. package/dist/extensions/forgecli/config-tui/screens/tier-picker.js.map +1 -1
  25. package/dist/extensions/forgecli/config-tui/state/model.d.ts +8 -0
  26. package/dist/extensions/forgecli/config-tui/state/reducer.js +18 -1
  27. package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -1
  28. package/dist/extensions/forgecli/config-writer.js +7 -6
  29. package/dist/extensions/forgecli/config-writer.js.map +1 -1
  30. package/dist/extensions/forgecli/forge-update-command.js +2 -3
  31. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  32. package/dist/extensions/forgecli/foundry-collision.js +5 -3
  33. package/dist/extensions/forgecli/foundry-collision.js.map +1 -1
  34. package/dist/extensions/forgecli/index.js +16 -9
  35. package/dist/extensions/forgecli/index.js.map +1 -1
  36. package/dist/extensions/forgecli/paths/migrator.d.ts +24 -0
  37. package/dist/extensions/forgecli/paths/migrator.js +150 -0
  38. package/dist/extensions/forgecli/paths/migrator.js.map +1 -0
  39. package/dist/extensions/forgecli/paths/paths.d.ts +36 -0
  40. package/dist/extensions/forgecli/paths/paths.js +144 -0
  41. package/dist/extensions/forgecli/paths/paths.js.map +1 -0
  42. package/dist/extensions/forgecli/subagent/agents.d.ts +9 -0
  43. package/dist/extensions/forgecli/subagent/agents.js +12 -2
  44. package/dist/extensions/forgecli/subagent/agents.js.map +1 -1
  45. package/dist/extensions/forgecli/subagent/index.d.ts +9 -0
  46. package/dist/extensions/forgecli/subagent/index.js +12 -4
  47. package/dist/extensions/forgecli/subagent/index.js.map +1 -1
  48. package/dist/extensions/forgecli/update-check.js +2 -3
  49. package/dist/extensions/forgecli/update-check.js.map +1 -1
  50. package/dist/extensions/forgecli/whats-new-widget.js +2 -3
  51. package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
  52. package/dist/extensions/forgecli/whats-new.js +7 -6
  53. package/dist/extensions/forgecli/whats-new.js.map +1 -1
  54. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"foundry-collision.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/foundry-collision.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,2EAA2E;AAC3E,6DAA6D;AAC7D,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAWlC;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB;IACrC,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE;YAC5C,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,iDAAiD;YACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAE/D,4CAA4C;QAC5C,IAAI,aAAqB,CAAC;QAC1B,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACJ,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC3C,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACR,sDAAsD;YACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;YACpC,4CAA4C;YAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;AACF,CAAC;AAUD,SAAS,YAAY;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,YAAY;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YACpE,OAAO,MAAkB,CAAC;QAC3B,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,wCAAwC;IACzC,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACpD,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACrD,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACrC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACR,eAAe;IAChB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"foundry-collision.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/foundry-collision.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import { existsSync, readFileSync } from "node:fs";
14
14
  import * as fs from "node:fs";
15
15
  import * as path from "node:path";
16
16
  import { fileURLToPath } from "node:url";
17
- import { VERSION as PI_VERSION, getAgentDir } from "@earendil-works/pi-coding-agent";
17
+ import { VERSION as PI_VERSION } from "@earendil-works/pi-coding-agent";
18
18
  import { registerAskUserTool } from "./ask-user-tool.js";
19
19
  import { createForgeHeader } from "./forge-header.js";
20
20
  import { readProjectMeta } from "./banner.js";
@@ -54,6 +54,7 @@ import { registerThreadSwitcher } from "./thread-switcher.js";
54
54
  import { registerRunWorkflow } from "./wf-engine/register.js";
55
55
  import { registerPostInitHook } from "./hooks/post-init-hook.js";
56
56
  import { registerPostSprintHook } from "./hooks/post-sprint-hook.js";
57
+ import { ensureForgeCliPathsReady, getPiAgentThemesDir } from "./paths/paths.js";
57
58
  // Resolve the vendored prompts directory at module load. After build, this
58
59
  // file lives at <pkg>/dist/extensions/forgecli/index.js — go up three levels
59
60
  // to <pkg>/, then into prompts/. In the source tree (vitest runs raw .ts), the
@@ -78,6 +79,12 @@ function readPkgVersions() {
78
79
  const PKG_VERSIONS = readPkgVersions();
79
80
  let notified = false;
80
81
  export default async function forgecli(pi) {
82
+ // ── Lazy one-shot user-data layout migration (FORGE-S20-T11) ─────────────
83
+ // Runs at most once per process. Moves pre-v0.10.0 user data from
84
+ // ~/.pi/agent/forge-cli/ + ~/.cache/forgecli/ into ~/.pi/forge-cli/.
85
+ // Idempotent and fail-silent — every downstream path read goes through
86
+ // the resolver in ./paths/paths.ts so post-migration paths "just work".
87
+ ensureForgeCliPathsReady();
81
88
  // ── Spike R2 (env-gated) ──────────────────────────────────────────────────
82
89
  // Validates that the vendored subagent module resolves cleanly from the
83
90
  // installed tarball path. No-op in production.
@@ -139,13 +146,13 @@ export default async function forgecli(pi) {
139
146
  // Spawns an in-process pi AgentSession via runForgeSubagent and delegates
140
147
  // the user-supplied prompt. Multi-turn allowed. Status updates streamed.
141
148
  registerTestOrchestrate(pi);
142
- // ── Install bundled themes into ~/.pi/agent/themes/ ──────────────────────
143
- // Themes in that directory are loaded by pi BEFORE initTheme() runs, so
144
- // pi's /settings > theme picker lists them and setTheme(name) finds them
145
- // by name in session_start. We ship one or more JSON themes under
146
- // forge-cli/themes/ and copy each one into the global theme directory.
149
+ // ── Install bundled themes into pi's theme namespace ─────────────────────
150
+ // Themes live under pi's getAgentDir()/themes/ (NOT forge-cli's user root)
151
+ // because pi loads them before initTheme() runs its /settings > theme
152
+ // picker reads from that exact path. The resolver re-exports the path so
153
+ // call sites stay funneled through paths.ts.
147
154
  const bundledThemesDir = path.join(PKG_ROOT, "themes");
148
- const globalThemesDir = path.join(getAgentDir(), "themes");
155
+ const globalThemesDir = getPiAgentThemesDir();
149
156
  try {
150
157
  fs.mkdirSync(globalThemesDir, { recursive: true });
151
158
  const themeFiles = fs.readdirSync(bundledThemesDir).filter((f) => f.endsWith(".json"));
@@ -167,7 +174,7 @@ export default async function forgecli(pi) {
167
174
  // activators while mounted.
168
175
  const router = getInputRouter();
169
176
  ctx.ui.onTerminalInput((data) => router.dispatch(data));
170
- // Apply forge-dark as default. The theme is in ~/.pi/agent/themes/ so
177
+ // Apply forge-dark as default. The theme is in pi's themes namespace so
171
178
  // loadThemeJson finds it by name. Only apply if user hasn't saved a
172
179
  // custom preference (setTheme also persists via settingsManager).
173
180
  const currentTheme = ctx.ui.theme.name;
@@ -256,7 +263,7 @@ export default async function forgecli(pi) {
256
263
  }
257
264
  }
258
265
  // 6. Model registry seed + missing-credentials banner (FORGE-S16-T16, issue #17).
259
- // Project-scope only; never reads or writes ~/.pi/agent/settings.json.
266
+ // Project-scope only; never reads or writes pi's global settings.json.
260
267
  if (forgeRoot && forgeConfig) {
261
268
  try {
262
269
  const projectRoot = path.dirname(path.dirname(forgeConfig.configPath));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface MigrationResult {
2
+ /** Whether the migrator ran (false when marker present or no work to do). */
3
+ ran: boolean;
4
+ /** Files successfully moved. */
5
+ moved: string[];
6
+ /** Files that failed to move along with the error message. */
7
+ failures: Array<{
8
+ from: string;
9
+ to: string;
10
+ error: string;
11
+ }>;
12
+ /** Whether the idempotency marker was written this run. */
13
+ markerWritten: boolean;
14
+ }
15
+ export interface MigrateOptions {
16
+ /** Sink for one-line-per-file progress messages. Defaults to console.error. */
17
+ log?: (line: string) => void;
18
+ }
19
+ /**
20
+ * Run the migrator once. Returns details of what happened so callers
21
+ * (tests, debug logging) can assert behavior; production callers may
22
+ * safely ignore the return value.
23
+ */
24
+ export declare function migrateLegacyData(opts?: MigrateOptions): MigrationResult;
@@ -0,0 +1,150 @@
1
+ // One-shot, idempotent forge-cli data migrator — FORGE-S20-T11.
2
+ //
3
+ // Moves pre-v0.10.0 user-level files into the new ~/.pi/forge-cli/
4
+ // layout. Safe to invoke on every startup:
5
+ // - The presence of the `.migrated-from-legacy` marker short-circuits
6
+ // subsequent runs with no filesystem stat work beyond a single
7
+ // marker check.
8
+ // - When legacy files are absent the run is a no-op.
9
+ // - When some files move and others fail the marker is NOT written
10
+ // and the migrator retries on the next run.
11
+ //
12
+ // Migration policy:
13
+ // - Legacy global config (~/.pi/agent/forge-cli/config.json) →
14
+ // ~/.pi/forge-cli/config.json (only if new path is absent).
15
+ // - Legacy cache files (~/.cache/forgecli/<file>) →
16
+ // ~/.pi/forge-cli/cache/<file> (only if new path is absent).
17
+ // - Existing new-path files are left untouched (no overwrite).
18
+ // - Legacy directories are not removed (manual cleanup is safer).
19
+ //
20
+ // One human-readable line per file moved is forwarded to the supplied
21
+ // logger; defaults to console.error so it surfaces in non-TTY runs
22
+ // without polluting stdout output.
23
+ import * as fs from "node:fs";
24
+ import * as path from "node:path";
25
+ import { getGlobalConfigPath, getLegacyPaths, getMigrationMarkerPath, getUserCacheDir, getForgeCliUserRoot, } from "./paths.js";
26
+ /** Cache filenames that may live under the legacy ~/.cache/forgecli/ root. */
27
+ const LEGACY_CACHE_FILES = [
28
+ "update-banner.json",
29
+ "whats-new-seen.json",
30
+ "seen.json",
31
+ "drift-seen.json",
32
+ ];
33
+ function exists(p) {
34
+ try {
35
+ fs.accessSync(p);
36
+ return true;
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ }
42
+ /**
43
+ * Move src → dst, creating dst's parent directory as needed. Falls back
44
+ * to copy+unlink when rename fails across devices (EXDEV — common when
45
+ * XDG_CACHE_HOME is on a different filesystem from $HOME).
46
+ */
47
+ function moveFile(src, dst) {
48
+ fs.mkdirSync(path.dirname(dst), { recursive: true });
49
+ try {
50
+ fs.renameSync(src, dst);
51
+ }
52
+ catch (err) {
53
+ const code = err.code;
54
+ if (code !== "EXDEV")
55
+ throw err;
56
+ // Cross-device — copy then unlink.
57
+ fs.copyFileSync(src, dst);
58
+ fs.unlinkSync(src);
59
+ }
60
+ }
61
+ /**
62
+ * Run the migrator once. Returns details of what happened so callers
63
+ * (tests, debug logging) can assert behavior; production callers may
64
+ * safely ignore the return value.
65
+ */
66
+ export function migrateLegacyData(opts = {}) {
67
+ const log = opts.log ?? ((line) => console.error(line));
68
+ const marker = getMigrationMarkerPath();
69
+ const result = {
70
+ ran: false,
71
+ moved: [],
72
+ failures: [],
73
+ markerWritten: false,
74
+ };
75
+ // Short-circuit: marker present → migration already complete.
76
+ if (exists(marker))
77
+ return result;
78
+ const legacy = getLegacyPaths();
79
+ const userRoot = getForgeCliUserRoot();
80
+ const newCacheDir = getUserCacheDir();
81
+ const newConfigPath = getGlobalConfigPath();
82
+ // Determine whether there is any legacy work to do at all.
83
+ const hasLegacyConfig = exists(legacy.globalConfig);
84
+ const hasLegacyCache = exists(legacy.cacheDir);
85
+ if (!hasLegacyConfig && !hasLegacyCache) {
86
+ // Nothing to migrate. Write the marker so subsequent runs skip
87
+ // even this much filesystem work.
88
+ try {
89
+ fs.mkdirSync(userRoot, { recursive: true });
90
+ fs.writeFileSync(marker, `${new Date().toISOString()}\n`, "utf8");
91
+ result.markerWritten = true;
92
+ }
93
+ catch {
94
+ // Best-effort — if we cannot write the marker, the next run
95
+ // will reach this no-op path again. Not a correctness issue.
96
+ }
97
+ return result;
98
+ }
99
+ result.ran = true;
100
+ // 1. Legacy global config → new config.json
101
+ if (hasLegacyConfig && !exists(newConfigPath)) {
102
+ try {
103
+ moveFile(legacy.globalConfig, newConfigPath);
104
+ result.moved.push(newConfigPath);
105
+ log(`forge-cli migrate: moved ${legacy.globalConfig} → ${newConfigPath}`);
106
+ }
107
+ catch (err) {
108
+ const msg = err instanceof Error ? err.message : String(err);
109
+ result.failures.push({ from: legacy.globalConfig, to: newConfigPath, error: msg });
110
+ log(`forge-cli migrate: FAILED ${legacy.globalConfig} → ${newConfigPath} (${msg})`);
111
+ }
112
+ }
113
+ // 2. Legacy cache files → new cache dir
114
+ if (hasLegacyCache) {
115
+ for (const file of LEGACY_CACHE_FILES) {
116
+ const src = path.join(legacy.cacheDir, file);
117
+ if (!exists(src))
118
+ continue;
119
+ const dst = path.join(newCacheDir, file);
120
+ if (exists(dst))
121
+ continue; // never overwrite
122
+ try {
123
+ moveFile(src, dst);
124
+ result.moved.push(dst);
125
+ log(`forge-cli migrate: moved ${src} → ${dst}`);
126
+ }
127
+ catch (err) {
128
+ const msg = err instanceof Error ? err.message : String(err);
129
+ result.failures.push({ from: src, to: dst, error: msg });
130
+ log(`forge-cli migrate: FAILED ${src} → ${dst} (${msg})`);
131
+ }
132
+ }
133
+ }
134
+ // Write idempotency marker only on full success. Partial-success
135
+ // runs are retried on next startup so the operator does not need
136
+ // to intervene.
137
+ if (result.failures.length === 0) {
138
+ try {
139
+ fs.mkdirSync(userRoot, { recursive: true });
140
+ fs.writeFileSync(marker, `${new Date().toISOString()}\n`, "utf8");
141
+ result.markerWritten = true;
142
+ }
143
+ catch (err) {
144
+ const msg = err instanceof Error ? err.message : String(err);
145
+ log(`forge-cli migrate: marker write failed (${msg}); will retry next run`);
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/paths/migrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export declare function ensureForgeCliPathsReady(): void;
2
+ /** Test-only: reset the in-process migration guard. */
3
+ export declare function __resetMigrationGuardForTests(): void;
4
+ /** ~/.pi/forge-cli/ (or FORGE_CLI_HOME override) */
5
+ export declare function getForgeCliUserRoot(): string;
6
+ /** ~/.pi/forge-cli/config.json — L1 global routing config */
7
+ export declare function getGlobalConfigPath(): string;
8
+ /** ~/.pi/forge-cli/cache/ — probe + dismissal caches */
9
+ export declare function getUserCacheDir(): string;
10
+ /** ~/.pi/forge-cli/state/ — reserved for future state markers */
11
+ export declare function getUserStateDir(): string;
12
+ /** ~/.pi/forge-cli/.migrated-from-legacy — migrator idempotency marker */
13
+ export declare function getMigrationMarkerPath(): string;
14
+ /** <cwd>/.pi/forge-cli/ */
15
+ export declare function getProjectForgeCliDir(cwd: string): string;
16
+ /** <cwd>/.pi/forge-cli/config.json */
17
+ export declare function getProjectConfigPath(cwd: string): string;
18
+ /** ~/.pi/agent/themes/ — pi loads bundled themes from here */
19
+ export declare function getPiAgentThemesDir(): string;
20
+ /** ~/.pi/agent/agents/ — pi's standard agent directory */
21
+ export declare function getPiAgentAgentsDir(): string;
22
+ export interface LegacyPaths {
23
+ /** ~/.pi/agent/forge-cli/config.json — pre-v0.10.0 global config */
24
+ globalConfig: string;
25
+ /** ${XDG_CACHE_HOME:-~/.cache}/forgecli/ — pre-v0.10.0 cache dir */
26
+ cacheDir: string;
27
+ }
28
+ export declare function getLegacyPaths(): LegacyPaths;
29
+ /**
30
+ * Replace a leading $HOME prefix with `~` for display. Pure string op.
31
+ * Mirrors the helper that previously lived inline in vendored subagent
32
+ * code; centralizing here keeps it discoverable and lets future call
33
+ * sites pick it up. Always uses the real os.homedir() — does NOT honor
34
+ * FORGE_CLI_HOME, because display paths describe physical locations.
35
+ */
36
+ export declare function shortenPath(p: string): string;
@@ -0,0 +1,144 @@
1
+ // Central path resolver for forge-cli user-level and project-level data — FORGE-S20-T11.
2
+ //
3
+ // Single source of truth for every filesystem location forge-cli reads or
4
+ // writes. Call sites MUST import from this module instead of hardcoding
5
+ // `os.homedir()`, `XDG_CACHE_HOME`, `.pi/forge-cli`, `.cache/forgecli`, etc.
6
+ //
7
+ // Layout (post v0.10.0):
8
+ // ~/.pi/forge-cli/ user root (override via FORGE_CLI_HOME)
9
+ // ├── config.json L1 global routing config
10
+ // ├── cache/ probe + dismiss caches
11
+ // │ ├── update-banner.json
12
+ // │ ├── whats-new-seen.json
13
+ // │ ├── seen.json foundry-collision dismissal
14
+ // │ └── drift-seen.json
15
+ // ├── state/ reserved for future state markers
16
+ // └── .migrated-from-legacy idempotency marker (set by migrator)
17
+ //
18
+ // <cwd>/.pi/forge-cli/ project root (unchanged)
19
+ //
20
+ // Themes and agents stay in pi's namespace (~/.pi/agent/themes/,
21
+ // ~/.pi/agent/agents/) because pi loads them from getAgentDir() before
22
+ // forge-cli's extension hook runs. Those paths are re-exported from this
23
+ // module for architectural consistency — call sites still go through
24
+ // the resolver, never through a direct pi import.
25
+ //
26
+ // Legacy paths intentionally derive from the real os.homedir() /
27
+ // XDG_CACHE_HOME and ignore FORGE_CLI_HOME: legacy data lives at its
28
+ // physical location on disk, and a test-time override of the new root
29
+ // must not make the migrator a no-op on real systems.
30
+ import * as os from "node:os";
31
+ import * as path from "node:path";
32
+ import { getAgentDir } from "@earendil-works/pi-coding-agent";
33
+ import { migrateLegacyData } from "./migrator.js";
34
+ // ── One-shot lazy migration trigger ─────────────────────────────────────────
35
+ //
36
+ // `ensureForgeCliPathsReady()` runs the migrator exactly once per process
37
+ // and is invoked from every forge-cli entry point (extension activate,
38
+ // `bin/config.ts`, headless bin). Path getters do NOT trigger it on
39
+ // each call — that would re-stat the filesystem on every read.
40
+ //
41
+ // The import cycle paths↔migrator is safe: migrator only calls path
42
+ // getters at function-invocation time (not at module load), and getters
43
+ // do not call back into the migrator.
44
+ //
45
+ // Tests can disable the trigger entirely via FORGE_CLI_SKIP_MIGRATION=1.
46
+ let migrationAttempted = false;
47
+ export function ensureForgeCliPathsReady() {
48
+ if (migrationAttempted)
49
+ return;
50
+ migrationAttempted = true;
51
+ if (process.env.FORGE_CLI_SKIP_MIGRATION === "1")
52
+ return;
53
+ try {
54
+ migrateLegacyData();
55
+ }
56
+ catch {
57
+ // Migration failures must never block path resolution; the
58
+ // migrator records its own failures and retries next run.
59
+ }
60
+ }
61
+ /** Test-only: reset the in-process migration guard. */
62
+ export function __resetMigrationGuardForTests() {
63
+ migrationAttempted = false;
64
+ }
65
+ // ── User root resolution ────────────────────────────────────────────────────
66
+ /**
67
+ * Resolve the forge-cli user root. Honors FORGE_CLI_HOME for tests/CI;
68
+ * otherwise defaults to `~/.pi/forge-cli/`.
69
+ */
70
+ function userRoot() {
71
+ const override = process.env.FORGE_CLI_HOME;
72
+ if (override && override.length > 0)
73
+ return override;
74
+ return path.join(os.homedir(), ".pi", "forge-cli");
75
+ }
76
+ // ── New-layout (post-v0.10.0) accessors ─────────────────────────────────────
77
+ /** ~/.pi/forge-cli/ (or FORGE_CLI_HOME override) */
78
+ export function getForgeCliUserRoot() {
79
+ return userRoot();
80
+ }
81
+ /** ~/.pi/forge-cli/config.json — L1 global routing config */
82
+ export function getGlobalConfigPath() {
83
+ return path.join(userRoot(), "config.json");
84
+ }
85
+ /** ~/.pi/forge-cli/cache/ — probe + dismissal caches */
86
+ export function getUserCacheDir() {
87
+ return path.join(userRoot(), "cache");
88
+ }
89
+ /** ~/.pi/forge-cli/state/ — reserved for future state markers */
90
+ export function getUserStateDir() {
91
+ return path.join(userRoot(), "state");
92
+ }
93
+ /** ~/.pi/forge-cli/.migrated-from-legacy — migrator idempotency marker */
94
+ export function getMigrationMarkerPath() {
95
+ return path.join(userRoot(), ".migrated-from-legacy");
96
+ }
97
+ // ── Project-level accessors (unchanged) ─────────────────────────────────────
98
+ /** <cwd>/.pi/forge-cli/ */
99
+ export function getProjectForgeCliDir(cwd) {
100
+ return path.join(cwd, ".pi", "forge-cli");
101
+ }
102
+ /** <cwd>/.pi/forge-cli/config.json */
103
+ export function getProjectConfigPath(cwd) {
104
+ return path.join(getProjectForgeCliDir(cwd), "config.json");
105
+ }
106
+ // ── Pi-namespace accessors (themes, agents — re-exported for boundary discipline) ─
107
+ /** ~/.pi/agent/themes/ — pi loads bundled themes from here */
108
+ export function getPiAgentThemesDir() {
109
+ return path.join(getAgentDir(), "themes");
110
+ }
111
+ /** ~/.pi/agent/agents/ — pi's standard agent directory */
112
+ export function getPiAgentAgentsDir() {
113
+ return path.join(getAgentDir(), "agents");
114
+ }
115
+ // ── Legacy paths (used by migrator + nothing else) ──────────────────────────
116
+ //
117
+ // These intentionally derive from os.homedir() / XDG_CACHE_HOME directly,
118
+ // NOT from userRoot(). FORGE_CLI_HOME must not leak into legacy resolution
119
+ // or the migrator becomes a no-op on the very systems that need it.
120
+ function legacyHome() {
121
+ return os.homedir();
122
+ }
123
+ function legacyXdgCacheBase() {
124
+ return process.env.XDG_CACHE_HOME ?? path.join(legacyHome(), ".cache");
125
+ }
126
+ export function getLegacyPaths() {
127
+ return {
128
+ globalConfig: path.join(legacyHome(), ".pi", "agent", "forge-cli", "config.json"),
129
+ cacheDir: path.join(legacyXdgCacheBase(), "forgecli"),
130
+ };
131
+ }
132
+ // ── Helpers ─────────────────────────────────────────────────────────────────
133
+ /**
134
+ * Replace a leading $HOME prefix with `~` for display. Pure string op.
135
+ * Mirrors the helper that previously lived inline in vendored subagent
136
+ * code; centralizing here keeps it discoverable and lets future call
137
+ * sites pick it up. Always uses the real os.homedir() — does NOT honor
138
+ * FORGE_CLI_HOME, because display paths describe physical locations.
139
+ */
140
+ export function shortenPath(p) {
141
+ const home = os.homedir();
142
+ return p.startsWith(home) ? `~${p.slice(home.length)}` : p;
143
+ }
144
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/paths/paths.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,15 @@
7
7
  * License: MIT (Copyright (c) 2025 Mario Zechner) — see pi-mono/LICENSE
8
8
  * Notes: Imports rewritten @entelligentsia/* → @entelligentsia/*.
9
9
  * Upstream promotion: see forge-cli/architectural-review.md §R2.
10
+ *
11
+ * Forge-cli divergence (FORGE-S20-T11, must be re-applied on every pi-mono sync):
12
+ * - `discoverAgents` derives the user agents directory via
13
+ * `getPiAgentAgentsDir()` from `../paths/paths.js` instead of inlining
14
+ * `path.join(getAgentDir(), "agents")`. The resolver re-exports pi's
15
+ * getAgentDir so the resulting path is identical — this is a pure
16
+ * centralization refactor that keeps AC #1 honest (no `getAgentDir()`
17
+ * call sites in forge-cli outside the resolver).
18
+ * - See `forge-cli/vendor-pi/DIVERGENCE.md` (sync-pi-upstream picks it up).
10
19
  */
11
20
  export type AgentScope = "user" | "project" | "both";
12
21
  export interface AgentConfig {
@@ -7,13 +7,23 @@
7
7
  * License: MIT (Copyright (c) 2025 Mario Zechner) — see pi-mono/LICENSE
8
8
  * Notes: Imports rewritten @entelligentsia/* → @entelligentsia/*.
9
9
  * Upstream promotion: see forge-cli/architectural-review.md §R2.
10
+ *
11
+ * Forge-cli divergence (FORGE-S20-T11, must be re-applied on every pi-mono sync):
12
+ * - `discoverAgents` derives the user agents directory via
13
+ * `getPiAgentAgentsDir()` from `../paths/paths.js` instead of inlining
14
+ * `path.join(getAgentDir(), "agents")`. The resolver re-exports pi's
15
+ * getAgentDir so the resulting path is identical — this is a pure
16
+ * centralization refactor that keeps AC #1 honest (no `getAgentDir()`
17
+ * call sites in forge-cli outside the resolver).
18
+ * - See `forge-cli/vendor-pi/DIVERGENCE.md` (sync-pi-upstream picks it up).
10
19
  */
11
20
  /**
12
21
  * Agent discovery and configuration
13
22
  */
14
23
  import * as fs from "node:fs";
15
24
  import * as path from "node:path";
16
- import { getAgentDir, parseFrontmatter } from "@earendil-works/pi-coding-agent";
25
+ import { parseFrontmatter } from "@earendil-works/pi-coding-agent";
26
+ import { getPiAgentAgentsDir } from "../paths/paths.js";
17
27
  function loadAgentsFromDir(dir, source) {
18
28
  const agents = [];
19
29
  if (!fs.existsSync(dir)) {
@@ -80,7 +90,7 @@ function findNearestProjectAgentsDir(cwd) {
80
90
  }
81
91
  }
82
92
  export function discoverAgents(cwd, scope) {
83
- const userDir = path.join(getAgentDir(), "agents");
93
+ const userDir = getPiAgentAgentsDir();
84
94
  const projectAgentsDir = findNearestProjectAgentsDir(cwd);
85
95
  const userAgents = scope === "project" ? [] : loadAgentsFromDir(userDir, "user");
86
96
  const projectAgents = scope === "user" || !projectAgentsDir ? [] : loadAgentsFromDir(projectAgentsDir, "project");
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/subagent/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/subagent/agents.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,15 @@
7
7
  * License: MIT (Copyright (c) 2025 Mario Zechner) — see pi-mono/LICENSE
8
8
  * Notes: Imports rewritten @entelligentsia/* → @entelligentsia/*.
9
9
  * Upstream promotion: see forge-cli/architectural-review.md §R2.
10
+ *
11
+ * Forge-cli divergence (FORGE-S20-T11, must be re-applied on every pi-mono sync):
12
+ * - The local `shortenPath` helper inside `formatToolCall` is replaced
13
+ * by `shortenPath` imported from `../paths/paths.js` so every
14
+ * home-prefix replacement in forge-cli funnels through the central
15
+ * resolver (AC #1: no `os.homedir()` outside the resolver).
16
+ * - This is a pure implementation refactor — behaviour is unchanged.
17
+ * - The `os` import is dropped because the only consumer was that helper.
18
+ * - See `forge-cli/vendor-pi/DIVERGENCE.md` (sync-pi-upstream picks it up).
10
19
  */
11
20
  import { type ExtensionAPI } from "@earendil-works/pi-coding-agent";
12
21
  export default function (pi: ExtensionAPI): void;