@context-forge/core 0.13.2 → 0.14.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 (37) hide show
  1. package/dist/config/ConfigKeys.d.ts.map +1 -1
  2. package/dist/config/ConfigKeys.js +4 -1
  3. package/dist/config/ConfigKeys.js.map +1 -1
  4. package/dist/guides/GuideDetector.d.ts +20 -2
  5. package/dist/guides/GuideDetector.d.ts.map +1 -1
  6. package/dist/guides/GuideDetector.js +41 -7
  7. package/dist/guides/GuideDetector.js.map +1 -1
  8. package/dist/guides/GuideManager.d.ts +58 -5
  9. package/dist/guides/GuideManager.d.ts.map +1 -1
  10. package/dist/guides/GuideManager.js +125 -28
  11. package/dist/guides/GuideManager.js.map +1 -1
  12. package/dist/guides/branchGuard.d.ts.map +1 -1
  13. package/dist/guides/branchGuard.js +32 -1
  14. package/dist/guides/branchGuard.js.map +1 -1
  15. package/dist/guides/gitExec.d.ts +13 -1
  16. package/dist/guides/gitExec.d.ts.map +1 -1
  17. package/dist/guides/gitExec.js +19 -3
  18. package/dist/guides/gitExec.js.map +1 -1
  19. package/dist/guides/index.d.ts +1 -1
  20. package/dist/guides/index.d.ts.map +1 -1
  21. package/dist/guides/index.js +1 -1
  22. package/dist/guides/index.js.map +1 -1
  23. package/dist/guides/strategies/SubmoduleStrategy.d.ts +17 -0
  24. package/dist/guides/strategies/SubmoduleStrategy.d.ts.map +1 -1
  25. package/dist/guides/strategies/SubmoduleStrategy.js +21 -2
  26. package/dist/guides/strategies/SubmoduleStrategy.js.map +1 -1
  27. package/dist/guides/strategies/TarballStrategy.js +4 -4
  28. package/dist/guides/strategies/TarballStrategy.js.map +1 -1
  29. package/dist/guides/types.d.ts +81 -1
  30. package/dist/guides/types.d.ts.map +1 -1
  31. package/dist/guides/types.js +76 -0
  32. package/dist/guides/types.js.map +1 -1
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -0
  36. package/dist/index.js.map +1 -1
  37. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigKeys.d.ts","sourceRoot":"","sources":["../../src/config/ConfigKeys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAChE;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAqH3D,CAAC"}
1
+ {"version":3,"file":"ConfigKeys.d.ts","sourceRoot":"","sources":["../../src/config/ConfigKeys.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAChE;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAwH3D,CAAC"}
@@ -19,7 +19,10 @@ export const CONFIG_KEYS = {
19
19
  type: 'string',
20
20
  default: 'submodule',
21
21
  description: 'Strategy for managing the AI project guide via git',
22
- enum: ['submodule', 'clone', 'manual'],
22
+ // 'manual' is a deprecated alias for 'tarball'. It stays in the enum so
23
+ // existing shared config files keep validating; normalizeGuideMethod()
24
+ // maps it to 'tarball' when the value is read.
25
+ enum: ['submodule', 'clone', 'tarball', 'manual'],
23
26
  scope: ConfigScope.Shared,
24
27
  },
25
28
  'workflow.auto_advance': {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigKeys.js","sourceRoot":"","sources":["../../src/config/ConfigKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigKeys.js","sourceRoot":"","sources":["../../src/config/ConfigKeys.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type GuideInfo } from './types.js';
1
+ import { type GuideInfo, type SubmoduleCheckoutState } from './types.js';
2
2
  /**
3
3
  * Compare two semver version strings. Returns true if latest > current.
4
4
  */
@@ -11,12 +11,30 @@ export declare class GuideDetector {
11
11
  * @param operationPath - worktree path for filesystem checks (defaults to projectPath)
12
12
  */
13
13
  detect(projectPath: string, source?: string, operationPath?: string): Promise<GuideInfo>;
14
+ /**
15
+ * Everything detect() reports except the remote's latest version, answered
16
+ * from the filesystem and local git alone — no `git ls-remote`. Read
17
+ * commands (`cf build`, `context_build`, ...) reach this through
18
+ * GuideManager.ensureCheckout() so a routine build never waits on the
19
+ * network (D10); status commands keep using detect().
20
+ */
21
+ detectLocal(projectPath: string, source?: string, operationPath?: string): Promise<GuideInfo>;
22
+ /**
23
+ * Checkout state for a submodule install, or null for other methods.
24
+ *
25
+ * Read-only: this reports what `git submodule status` says and never runs
26
+ * `git submodule update` (D1). An 'error' result means git is unavailable or
27
+ * the path is not a repository — surfaced rather than swallowed (D7),
28
+ * because silently reporting "in sync" would hide the very condition the
29
+ * caller needs to act on.
30
+ */
31
+ private resolveCheckout;
14
32
  /** Determine installation method by inspecting filesystem */
15
33
  private detectMethod;
16
34
  /** Detect current version based on method */
17
35
  private detectVersion;
18
36
  /** Check whether a worktree's submodule checkout is in sync with the committed pointer */
19
- checkSyncStatus(worktreePath: string): Promise<'in_sync' | 'out_of_sync' | 'not_initialized' | 'error'>;
37
+ checkSyncStatus(worktreePath: string): Promise<SubmoduleCheckoutState | 'error'>;
20
38
  /** Fetch latest version from remote. Returns null on any failure. */
21
39
  private fetchLatestVersion;
22
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GuideDetector.d.ts","sourceRoot":"","sources":["../../src/guides/GuideDetector.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,YAAY,CAAC;AAiCpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CASrF;AAED,qBAAa,aAAa;IACxB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAwC9F,6DAA6D;IAC7D,OAAO,CAAC,YAAY;IAuBpB,6CAA6C;YAC/B,aAAa;IAmB3B,0FAA0F;IACpF,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,aAAa,GAAG,iBAAiB,GAAG,OAAO,CAAC;IAe7G,qEAAqE;YACvD,kBAAkB;CAWjC"}
1
+ {"version":3,"file":"GuideDetector.d.ts","sourceRoot":"","sources":["../../src/guides/GuideDetector.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,sBAAsB,EAI5B,MAAM,YAAY,CAAC;AAiCpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CASrF;AAED,qBAAa,aAAa;IACxB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAU9F;;;;;;OAMG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,CAAC;IAuCrB;;;;;;;;OAQG;YACW,eAAe;IAe7B,6DAA6D;IAC7D,OAAO,CAAC,YAAY;IAuBpB,6CAA6C;YAC/B,aAAa;IAmB3B,0FAA0F;IACpF,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,OAAO,CAAC;IAetF,qEAAqE;YACvD,kBAAkB;CAWjC"}
@@ -54,12 +54,29 @@ export class GuideDetector {
54
54
  * @param operationPath - worktree path for filesystem checks (defaults to projectPath)
55
55
  */
56
56
  async detect(projectPath, source, operationPath) {
57
+ const info = await this.detectLocal(projectPath, source, operationPath);
58
+ const latestVersion = await this.fetchLatestVersion(info.source);
59
+ return {
60
+ ...info,
61
+ latestVersion,
62
+ updateAvailable: isNewerVersion(info.version, latestVersion),
63
+ };
64
+ }
65
+ /**
66
+ * Everything detect() reports except the remote's latest version, answered
67
+ * from the filesystem and local git alone — no `git ls-remote`. Read
68
+ * commands (`cf build`, `context_build`, ...) reach this through
69
+ * GuideManager.ensureCheckout() so a routine build never waits on the
70
+ * network (D10); status commands keep using detect().
71
+ */
72
+ async detectLocal(projectPath, source, operationPath) {
57
73
  const resolvedSource = source || DEFAULT_SOURCE_GIT;
58
74
  const effectivePath = operationPath || projectPath;
59
75
  const guidePath = join(effectivePath, GUIDE_RELATIVE_PATH);
60
76
  const baseInfo = {
61
77
  installed: false,
62
78
  method: null,
79
+ checkout: null,
63
80
  version: null,
64
81
  path: guidePath,
65
82
  source: resolvedSource,
@@ -68,26 +85,43 @@ export class GuideDetector {
68
85
  usingBundledPrompt: true,
69
86
  };
70
87
  if (!existsSync(guidePath)) {
71
- // Check latest version even when not installed
72
- baseInfo.latestVersion = await this.fetchLatestVersion(resolvedSource);
73
88
  return baseInfo;
74
89
  }
75
90
  // Guide directory exists — determine method (use projectPath for .gitmodules check)
76
91
  const method = this.detectMethod(projectPath, guidePath);
92
+ const checkout = await this.resolveCheckout(method, effectivePath);
77
93
  const version = await this.detectVersion(guidePath, method);
78
- const latestVersion = await this.fetchLatestVersion(resolvedSource);
79
- const updateAvailable = isNewerVersion(version, latestVersion);
80
94
  return {
81
95
  installed: true,
82
96
  method,
97
+ checkout,
83
98
  version,
84
99
  path: guidePath,
85
100
  source: resolvedSource,
86
- latestVersion,
87
- updateAvailable,
101
+ latestVersion: null,
102
+ updateAvailable: false,
88
103
  usingBundledPrompt: false,
89
104
  };
90
105
  }
106
+ /**
107
+ * Checkout state for a submodule install, or null for other methods.
108
+ *
109
+ * Read-only: this reports what `git submodule status` says and never runs
110
+ * `git submodule update` (D1). An 'error' result means git is unavailable or
111
+ * the path is not a repository — surfaced rather than swallowed (D7),
112
+ * because silently reporting "in sync" would hide the very condition the
113
+ * caller needs to act on.
114
+ */
115
+ async resolveCheckout(method, effectivePath) {
116
+ if (method !== 'submodule')
117
+ return null;
118
+ const state = await this.checkSyncStatus(effectivePath);
119
+ if (state === 'error') {
120
+ throw new Error(`Unable to read guide submodule status in ${effectivePath}. ` +
121
+ 'Ensure git is installed and the directory is a git repository.');
122
+ }
123
+ return state;
124
+ }
91
125
  /** Determine installation method by inspecting filesystem */
92
126
  detectMethod(projectPath, guidePath) {
93
127
  // Check .gitmodules first — submodules also have a .git entry inside
@@ -108,7 +142,7 @@ export class GuideDetector {
108
142
  if (existsSync(join(guidePath, '.git'))) {
109
143
  return 'clone';
110
144
  }
111
- return 'manual';
145
+ return 'tarball';
112
146
  }
113
147
  /** Detect current version based on method */
114
148
  async detectVersion(guidePath, method) {
@@ -1 +1 @@
1
- {"version":3,"file":"GuideDetector.js","sourceRoot":"","sources":["../../src/guides/GuideDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GuideDetector.js","sourceRoot":"","sources":["../../src/guides/GuideDetector.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,14 @@
1
1
  import type { ConfigManager } from '../config/ConfigManager.js';
2
- import type { GuideInfo, GuideMethod, InstallResult, UpdateResult, UninstallResult, SyncResult } from './types.js';
2
+ import type { GuideInfo, GuideMethod, InstallResult, UpdateResult, UninstallResult, SyncResult, EnsureCheckoutResult } from './types.js';
3
+ /**
4
+ * A strategy resolved from an input boundary, plus the original spelling when
5
+ * that input used a deprecated alias (D5). Used for both the config path and
6
+ * the explicit `--strategy` flag so callers warn identically for each.
7
+ */
8
+ export interface ResolvedStrategy {
9
+ method: GuideMethod;
10
+ deprecatedAlias?: string;
11
+ }
3
12
  export declare class GuideManager {
4
13
  private readonly projectPath;
5
14
  private readonly configManager?;
@@ -8,8 +17,39 @@ export declare class GuideManager {
8
17
  constructor(projectPath: string, configManager?: ConfigManager, operationPath?: string);
9
18
  /** Get current guide installation status */
10
19
  status(): Promise<GuideInfo>;
11
- /** Install the guide into the project */
12
- install(strategyOverride?: GuideMethod, sourceOverride?: string): Promise<InstallResult>;
20
+ /**
21
+ * Install the guide into the project.
22
+ *
23
+ * `strategyOverride` is a raw string from an input boundary (a `--strategy`
24
+ * flag or an MCP parameter), normalized here so the flag and the config path
25
+ * share one validation and one deprecation report. When either path supplied
26
+ * a deprecated alias, the returned result carries it in `deprecatedAlias` so
27
+ * the caller can warn (D5).
28
+ */
29
+ install(strategyOverride?: string, sourceOverride?: string): Promise<InstallResult>;
30
+ /**
31
+ * Normalize a strategy name supplied explicitly by a caller (CLI flag, MCP
32
+ * parameter). Same validation and same alias reporting as the config path.
33
+ */
34
+ private resolveStrategyOverride;
35
+ /**
36
+ * Make the guide readable before a command consumes it.
37
+ *
38
+ * Auto-acts on exactly one state: an uninitialized submodule, which has a
39
+ * single correct resolution — check out the commit the host pins (#80). An
40
+ * out-of-sync checkout may be deliberate, so it is reported and left alone
41
+ * rather than reset (D2). Every other case is a no-op, including a missing
42
+ * install, which the calling command still reports as it does today.
43
+ *
44
+ * Read-only for clone and tarball installs.
45
+ */
46
+ ensureCheckout(): Promise<EnsureCheckoutResult>;
47
+ /**
48
+ * Check out an uninitialized guide submodule, bounded so a read command
49
+ * cannot hang on an unresponsive remote (D10), and append the shared offline
50
+ * remediation text when the fetch cannot complete.
51
+ */
52
+ private initGuideCheckout;
13
53
  /** Update an existing guide installation */
14
54
  update(opts?: {
15
55
  confirmed?: boolean;
@@ -18,9 +58,22 @@ export declare class GuideManager {
18
58
  uninstall(): Promise<UninstallResult>;
19
59
  /** Sync guide submodule checkout in multiple worktrees */
20
60
  syncWorktrees(worktreePaths: string[]): Promise<SyncResult[]>;
21
- /** Resolve source URL from config or default */
61
+ /**
62
+ * Resolve the guide source URL from config.
63
+ *
64
+ * Config read errors propagate (D7): a malformed config file must fail the
65
+ * command rather than silently installing from the default source. Without a
66
+ * ConfigManager there is no config to read, so the module default applies.
67
+ */
22
68
  private resolveSource;
23
- /** Resolve strategy from config or default */
69
+ /**
70
+ * Resolve the install strategy from config.
71
+ *
72
+ * An unset key already yields the ConfigKeys default, so there is no
73
+ * fallback branch here. Config read errors propagate (D7). `deprecatedAlias`
74
+ * carries the original spelling when the config value was a deprecated name,
75
+ * so the caller can print the D5 deprecation warning.
76
+ */
24
77
  private resolveStrategy;
25
78
  /** Create user artifact directories alongside the guide */
26
79
  private createUserDirectories;
@@ -1 +1 @@
1
- {"version":3,"file":"GuideManager.d.ts","sourceRoot":"","sources":["../../src/guides/GuideManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAmB,UAAU,EAAE,MAAM,YAAY,CAAC;AAQpI,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAE5B,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,MAAM;IAOtF,4CAA4C;IACtC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAKlC,yCAAyC;IACnC,OAAO,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAsB9F,4CAA4C;IACtC,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCnE,2CAA2C;IACrC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAuD3C,0DAA0D;IACpD,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBnE,gDAAgD;YAClC,aAAa;IAc3B,8CAA8C;YAChC,eAAe;IAc7B,2DAA2D;IAC3D,OAAO,CAAC,qBAAqB;IAa7B,2CAA2C;IAC3C,OAAO,CAAC,WAAW;CAUpB"}
1
+ {"version":3,"file":"GuideManager.d.ts","sourceRoot":"","sources":["../../src/guides/GuideManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAmB,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAgB1J;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;gBAE5B,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,MAAM;IAOtF,4CAA4C;IACtC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAKlC;;;;;;;;OAQG;IACG,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA2BzF;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;;;;;;;;OAUG;IACG,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAqCrD;;;;OAIG;YACW,iBAAiB;IAmB/B,4CAA4C;IACtC,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCnE,2CAA2C;IACrC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAuD3C,0DAA0D;IACpD,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBnE;;;;;;OAMG;YACW,aAAa;IAW3B;;;;;;;OAOG;YACW,eAAe;IAgB7B,2DAA2D;IAC3D,OAAO,CAAC,qBAAqB;IAa7B,2CAA2C;IAC3C,OAAO,CAAC,WAAW;CAUpB"}
@@ -1,7 +1,9 @@
1
1
  // Orchestration layer for guide lifecycle management
2
2
  import { join } from 'path';
3
3
  import { mkdirSync, rmSync, existsSync } from 'fs';
4
- import { DEFAULT_SOURCE_GIT, GUIDE_RELATIVE_PATH } from './types.js';
4
+ import { DEFAULT_SOURCE_GIT, GUIDE_RELATIVE_PATH, GUIDE_INIT_TIMEOUT_MS, normalizeGuideMethod, isDeprecatedGuideMethodAlias, } from './types.js';
5
+ import { GUIDE_OFFLINE_REMEDIATION } from './gitExec.js';
6
+ import { CONFIG_KEYS } from '../config/ConfigKeys.js';
5
7
  import { GuideDetector } from './GuideDetector.js';
6
8
  import { SubmoduleStrategy } from './strategies/SubmoduleStrategy.js';
7
9
  import { CloneStrategy } from './strategies/CloneStrategy.js';
@@ -23,10 +25,21 @@ export class GuideManager {
23
25
  const source = await this.resolveSource();
24
26
  return this.detector.detect(this.projectPath, source, this.operationPath);
25
27
  }
26
- /** Install the guide into the project */
28
+ /**
29
+ * Install the guide into the project.
30
+ *
31
+ * `strategyOverride` is a raw string from an input boundary (a `--strategy`
32
+ * flag or an MCP parameter), normalized here so the flag and the config path
33
+ * share one validation and one deprecation report. When either path supplied
34
+ * a deprecated alias, the returned result carries it in `deprecatedAlias` so
35
+ * the caller can warn (D5).
36
+ */
27
37
  async install(strategyOverride, sourceOverride) {
28
38
  const source = sourceOverride || (await this.resolveSource());
29
- const method = strategyOverride || (await this.resolveStrategy());
39
+ const resolved = strategyOverride
40
+ ? this.resolveStrategyOverride(strategyOverride)
41
+ : await this.resolveStrategy();
42
+ const method = resolved.method;
30
43
  const targetDir = join(this.projectPath, GUIDE_RELATIVE_PATH);
31
44
  // Check if already installed
32
45
  const info = await this.detector.detect(this.projectPath, source);
@@ -37,7 +50,83 @@ export class GuideManager {
37
50
  const result = await strategy.install(this.projectPath, source, targetDir);
38
51
  // Create user artifact directories so the project is ready to use
39
52
  this.createUserDirectories();
40
- return result;
53
+ return resolved.deprecatedAlias
54
+ ? { ...result, deprecatedAlias: resolved.deprecatedAlias }
55
+ : result;
56
+ }
57
+ /**
58
+ * Normalize a strategy name supplied explicitly by a caller (CLI flag, MCP
59
+ * parameter). Same validation and same alias reporting as the config path.
60
+ */
61
+ resolveStrategyOverride(input) {
62
+ const method = normalizeGuideMethod(input);
63
+ return isDeprecatedGuideMethodAlias(input)
64
+ ? { method, deprecatedAlias: input.trim() }
65
+ : { method };
66
+ }
67
+ /**
68
+ * Make the guide readable before a command consumes it.
69
+ *
70
+ * Auto-acts on exactly one state: an uninitialized submodule, which has a
71
+ * single correct resolution — check out the commit the host pins (#80). An
72
+ * out-of-sync checkout may be deliberate, so it is reported and left alone
73
+ * rather than reset (D2). Every other case is a no-op, including a missing
74
+ * install, which the calling command still reports as it does today.
75
+ *
76
+ * Read-only for clone and tarball installs.
77
+ */
78
+ async ensureCheckout() {
79
+ const source = await this.resolveSource();
80
+ // Local detection only: this runs inside every read command, and the
81
+ // remote's latest version is not needed to decide whether to init (D10).
82
+ const info = await this.detector.detectLocal(this.projectPath, source, this.operationPath);
83
+ if (!info.installed || info.method !== 'submodule') {
84
+ return { action: 'none' };
85
+ }
86
+ // checkout was resolved by detect(); do not ask git a second time.
87
+ switch (info.checkout) {
88
+ case 'in_sync':
89
+ case null:
90
+ return { action: 'none' };
91
+ case 'out_of_sync':
92
+ return {
93
+ action: 'warned',
94
+ message: `The guide submodule at ${GUIDE_RELATIVE_PATH} is checked out at a different ` +
95
+ 'commit than this project pins. It was left unchanged. Run cf guides update ' +
96
+ '(or git submodule update) to match the pinned commit.',
97
+ };
98
+ case 'not_initialized': {
99
+ const operationPath = this.operationPath || this.projectPath;
100
+ const { commit } = await this.initGuideCheckout(operationPath);
101
+ return {
102
+ action: 'initialized',
103
+ commit,
104
+ message: `Initialized the guide submodule at ${GUIDE_RELATIVE_PATH} (${commit}).`,
105
+ };
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Check out an uninitialized guide submodule, bounded so a read command
111
+ * cannot hang on an unresponsive remote (D10), and append the shared offline
112
+ * remediation text when the fetch cannot complete.
113
+ */
114
+ async initGuideCheckout(operationPath) {
115
+ const strategy = new SubmoduleStrategy();
116
+ try {
117
+ return await strategy.init(operationPath, { timeoutMs: GUIDE_INIT_TIMEOUT_MS });
118
+ }
119
+ catch (err) {
120
+ // Re-thrown with remediation, never swallowed: proceeding against an
121
+ // empty guide tree would fail later with a far less useful message.
122
+ const message = err instanceof Error ? err.message : String(err);
123
+ // gitExec already appends the remediation for recognizable network
124
+ // failures (including our own timeout); add it only when it did not,
125
+ // so the user never reads the same guidance twice.
126
+ throw new Error(message.includes(GUIDE_OFFLINE_REMEDIATION)
127
+ ? message
128
+ : `${message}\n ${GUIDE_OFFLINE_REMEDIATION}`);
129
+ }
41
130
  }
42
131
  /** Update an existing guide installation */
43
132
  async update(opts) {
@@ -132,35 +221,43 @@ export class GuideManager {
132
221
  }
133
222
  return results;
134
223
  }
135
- /** Resolve source URL from config or default */
224
+ /**
225
+ * Resolve the guide source URL from config.
226
+ *
227
+ * Config read errors propagate (D7): a malformed config file must fail the
228
+ * command rather than silently installing from the default source. Without a
229
+ * ConfigManager there is no config to read, so the module default applies.
230
+ */
136
231
  async resolveSource() {
137
- if (this.configManager) {
138
- try {
139
- const result = await this.configManager.get('guide.source');
140
- if (result.value && typeof result.value === 'string' && result.value.length > 0) {
141
- return result.value;
142
- }
143
- }
144
- catch {
145
- // Fall through to default
146
- }
232
+ if (!this.configManager) {
233
+ return DEFAULT_SOURCE_GIT;
234
+ }
235
+ const result = await this.configManager.get('guide.source');
236
+ if (typeof result.value === 'string' && result.value.length > 0) {
237
+ return result.value;
147
238
  }
148
239
  return DEFAULT_SOURCE_GIT;
149
240
  }
150
- /** Resolve strategy from config or default */
241
+ /**
242
+ * Resolve the install strategy from config.
243
+ *
244
+ * An unset key already yields the ConfigKeys default, so there is no
245
+ * fallback branch here. Config read errors propagate (D7). `deprecatedAlias`
246
+ * carries the original spelling when the config value was a deprecated name,
247
+ * so the caller can print the D5 deprecation warning.
248
+ */
151
249
  async resolveStrategy() {
152
- if (this.configManager) {
153
- try {
154
- const result = await this.configManager.get('guide.git_strategy');
155
- if (result.value && typeof result.value === 'string') {
156
- return result.value;
157
- }
158
- }
159
- catch {
160
- // Fall through to default
161
- }
250
+ if (!this.configManager) {
251
+ return { method: normalizeGuideMethod(CONFIG_KEYS['guide.git_strategy'].default) };
252
+ }
253
+ const result = await this.configManager.get('guide.git_strategy');
254
+ if (typeof result.value !== 'string') {
255
+ throw new Error(`Config key 'guide.git_strategy' must be a string, got ${typeof result.value}.`);
162
256
  }
163
- return 'submodule';
257
+ const method = normalizeGuideMethod(result.value);
258
+ return isDeprecatedGuideMethodAlias(result.value)
259
+ ? { method, deprecatedAlias: result.value.trim() }
260
+ : { method };
164
261
  }
165
262
  /** Create user artifact directories alongside the guide */
166
263
  createUserDirectories() {
@@ -182,7 +279,7 @@ export class GuideManager {
182
279
  return new SubmoduleStrategy();
183
280
  case 'clone':
184
281
  return new CloneStrategy();
185
- case 'manual':
282
+ case 'tarball':
186
283
  return new TarballStrategy();
187
284
  }
188
285
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GuideManager.js","sourceRoot":"","sources":["../../src/guides/GuideManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GuideManager.js","sourceRoot":"","sources":["../../src/guides/GuideManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"branchGuard.d.ts","sourceRoot":"","sources":["../../src/guides/branchGuard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GACtB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAA;CAAE,CAAC;AAE5F;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBvE;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAU3C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC;gBAEhC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,WAAW;CAW/E;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAgC7B"}
1
+ {"version":3,"file":"branchGuard.d.ts","sourceRoot":"","sources":["../../src/guides/branchGuard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGhE,MAAM,MAAM,kBAAkB,GAC1B;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GACtB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAA;CAAE,CAAC;AAE5F;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBvE;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAU3C;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC;gBAEhC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,WAAW;CAW/E;AA2BD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAqC7B"}
@@ -52,6 +52,32 @@ export class BranchGuardWarnError extends Error {
52
52
  this.ancestry = ancestry;
53
53
  }
54
54
  }
55
+ /**
56
+ * Name the current branch, including one that has no commits yet.
57
+ *
58
+ * `rev-parse --abbrev-ref HEAD` fails in a repository straight after
59
+ * `git init` (an "unborn" branch: HEAD names a ref that does not exist), which
60
+ * is exactly the state `cf init` leaves a new project in. `symbolic-ref` still
61
+ * reads the branch name there. Any other rev-parse failure is re-thrown as is.
62
+ */
63
+ async function currentBranch(projectPath) {
64
+ try {
65
+ const { stdout } = await gitExec(['rev-parse', '--abbrev-ref', 'HEAD'], projectPath);
66
+ return { name: stdout, unborn: false };
67
+ }
68
+ catch (revParseError) {
69
+ let name;
70
+ try {
71
+ ({ stdout: name } = await gitExec(['symbolic-ref', '--short', '-q', 'HEAD'], projectPath));
72
+ }
73
+ catch {
74
+ // symbolic-ref failing too means the original failure was not an unborn
75
+ // branch (not a repository, git missing); surface that error, not this one.
76
+ throw revParseError;
77
+ }
78
+ return { name, unborn: true };
79
+ }
80
+ }
55
81
  /**
56
82
  * Resolves the configured trunk branch and the current branch, then applies the
57
83
  * guard decision table to determine whether a guide-update commit should proceed,
@@ -73,7 +99,7 @@ export async function evaluateBranchGuard(projectPath, configManager) {
73
99
  // resolveStrategy() fallback pattern for the same config source.
74
100
  }
75
101
  }
76
- const { stdout: current } = await gitExec(['rev-parse', '--abbrev-ref', 'HEAD'], projectPath);
102
+ const { name: current, unborn } = await currentBranch(projectPath);
77
103
  if (current === 'HEAD') {
78
104
  return { outcome: 'block', trunk, current: 'HEAD' };
79
105
  }
@@ -83,6 +109,11 @@ export async function evaluateBranchGuard(projectPath, configManager) {
83
109
  if (current === 'main' && trunk !== 'main') {
84
110
  return { outcome: 'block', trunk, current };
85
111
  }
112
+ if (unborn) {
113
+ // No commits yet, so there is no ancestry to test; the caller asks for
114
+ // confirmation exactly as it does for a branch with no common history.
115
+ return { outcome: 'warn', trunk, current, ancestry: 'unrelated' };
116
+ }
86
117
  const descends = await isAncestor(trunk, projectPath);
87
118
  return descends
88
119
  ? { outcome: 'warn', trunk, current, ancestry: 'descends' }
@@ -1 +1 @@
1
- {"version":3,"file":"branchGuard.js","sourceRoot":"","sources":["../../src/guides/branchGuard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"branchGuard.js","sourceRoot":"","sources":["../../src/guides/branchGuard.ts"],"names":[],"mappings":"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"}
@@ -10,12 +10,24 @@ export interface GitExecResult {
10
10
  export declare const GUIDE_OFFLINE_REMEDIATION: string;
11
11
  /** Append remediation guidance when a message looks like a network/DNS failure. */
12
12
  export declare function withNetworkErrorHint(message: string): string;
13
+ export interface GitExecOptions {
14
+ /**
15
+ * Kill the command after this many milliseconds. Omit for no bound.
16
+ *
17
+ * Only automatic operations inside a read command set this: a credential
18
+ * prompt is already prevented by GIT_NONINTERACTIVE_ENV, but a proxy that
19
+ * accepts a connection and never answers would otherwise block for the OS
20
+ * TCP timeout. User-initiated install and update stay unbounded (D10).
21
+ */
22
+ timeoutMs?: number;
23
+ }
13
24
  /**
14
25
  * Execute a git command safely using execFile (no shell injection).
15
26
  * @param args - arguments to pass to git (e.g., ['clone', url, dir])
16
27
  * @param cwd - working directory for the command
28
+ * @param opts - optional execution bounds
17
29
  */
18
- export declare function gitExec(args: string[], cwd: string): Promise<GitExecResult>;
30
+ export declare function gitExec(args: string[], cwd: string, opts?: GitExecOptions): Promise<GitExecResult>;
19
31
  /** Check whether git is available on the system */
20
32
  export declare function isGitAvailable(): Promise<boolean>;
21
33
  /** Check whether a directory is inside a git repository */
@@ -1 +1 @@
1
- {"version":3,"file":"gitExec.d.ts","sourceRoot":"","sources":["../../src/guides/gitExec.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAyBD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAE4B,CAAC;AAEnE,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB3E;AAED,mDAAmD;AACnD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAED,2DAA2D;AAC3D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7D"}
1
+ {"version":3,"file":"gitExec.d.ts","sourceRoot":"","sources":["../../src/guides/gitExec.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AA4BD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAE4B,CAAC;AAEnE,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED,mDAAmD;AACnD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAED,2DAA2D;AAC3D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7D"}
@@ -13,6 +13,9 @@ const NETWORK_ERROR_PATTERNS = [
13
13
  /could not resolve host/i,
14
14
  /could not connect to/i,
15
15
  /connection timed out/i,
16
+ // Our own timeout message (see GitExecOptions.timeoutMs). The existing
17
+ // 'connection timed out' pattern is git's wording and does not match it.
18
+ /timed out after \d+s/i,
16
19
  /network is unreachable/i,
17
20
  /ssl certificate problem/i,
18
21
  /failed to connect/i,
@@ -39,12 +42,25 @@ export function withNetworkErrorHint(message) {
39
42
  * Execute a git command safely using execFile (no shell injection).
40
43
  * @param args - arguments to pass to git (e.g., ['clone', url, dir])
41
44
  * @param cwd - working directory for the command
45
+ * @param opts - optional execution bounds
42
46
  */
43
- export function gitExec(args, cwd) {
47
+ export function gitExec(args, cwd, opts) {
44
48
  return new Promise((resolve, reject) => {
45
- execFile('git', args, { cwd, env: { ...process.env, ...GIT_NONINTERACTIVE_ENV } }, (error, stdout, stderr) => {
49
+ const timeoutMs = opts?.timeoutMs;
50
+ execFile('git', args, {
51
+ cwd,
52
+ env: { ...process.env, ...GIT_NONINTERACTIVE_ENV },
53
+ ...(timeoutMs ? { timeout: timeoutMs, killSignal: 'SIGTERM' } : {}),
54
+ }, (error, stdout, stderr) => {
46
55
  if (error) {
47
- const detail = stderr.trim() || error.message;
56
+ // execFile reports a timeout kill via `killed`; surface it as a
57
+ // timeout so withNetworkErrorHint's /timed out/i pattern appends the
58
+ // offline remediation text.
59
+ const killedByTimeout = timeoutMs !== undefined &&
60
+ error.killed === true;
61
+ const detail = killedByTimeout
62
+ ? `timed out after ${Math.round(timeoutMs / 1000)}s`
63
+ : stderr.trim() || error.message;
48
64
  reject(new Error(withNetworkErrorHint(`git ${redactCredentials(args)} failed in ${cwd}: ${detail}`)));
49
65
  return;
50
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gitExec.js","sourceRoot":"","sources":["../../src/guides/gitExec.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,oFAAoF;AACpF,kFAAkF;AAClF,mFAAmF;AACnF,MAAM,sBAAsB,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AAEtF,6GAA6G;AAC7G,SAAS,iBAAiB,CAAC,IAAc;IACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,2EAA2E;AAC3E,MAAM,sBAAsB,GAAG;IAC7B,yBAAyB;IACzB,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,0BAA0B;IAC1B,oBAAoB;IACpB,YAAY;IACZ,eAAe;IACf,YAAY;CACb,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,+EAA+E;IAC/E,gEAAgE,CAAC;AAEnE,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,CACL,GAAG,OAAO,IAAI;QACd,gEAAgE,yBAAyB,EAAE,CAC5F,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,GAAW;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,KAAK,EACL,IAAI,EACJ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,sBAAsB,EAAE,EAAE,EAC3D,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC;gBAC9C,MAAM,CACJ,IAAI,KAAK,CAAC,oBAAoB,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC,CAC9F,CAAC;gBACF,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"gitExec.js","sourceRoot":"","sources":["../../src/guides/gitExec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { GuideManager } from './GuideManager.js';
2
2
  export { GuideDetector } from './GuideDetector.js';
3
- export { type GuideInfo, type GuideMethod, type InstallResult, type UpdateResult, type DetectionResult, type InstallStrategy, DEFAULT_SOURCE_GIT, DEFAULT_SOURCE_API, GUIDE_RELATIVE_PATH, VERSION_MARKER_FILE, } from './types.js';
3
+ export { type GuideInfo, type GuideMethod, type InstallResult, type UpdateResult, type DetectionResult, type InstallStrategy, type SubmoduleCheckoutState, type EnsureCheckoutResult, CHECKOUT_STATE_LABELS, GUIDE_INIT_TIMEOUT_MS, GUIDE_MANAGED_NOTICE, GUIDE_METHODS, GUIDE_METHOD_DEPRECATED_ALIASES, normalizeGuideMethod, isDeprecatedGuideMethodAlias, DEFAULT_SOURCE_GIT, DEFAULT_SOURCE_API, GUIDE_RELATIVE_PATH, VERSION_MARKER_FILE, GUIDE_STRATEGIES, guideMethodDeprecationMessage, } from './types.js';
4
4
  export { GUIDE_OFFLINE_REMEDIATION } from './gitExec.js';
5
5
  export { type BranchGuardVerdict, evaluateBranchGuard, BranchGuardBlockedError, BranchGuardWarnError, } from './branchGuard.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guides/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guides/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,+BAA+B,EAC/B,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,KAAK,kBAAkB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  // Guide management — public exports
2
2
  export { GuideManager } from './GuideManager.js';
3
3
  export { GuideDetector } from './GuideDetector.js';
4
- export { DEFAULT_SOURCE_GIT, DEFAULT_SOURCE_API, GUIDE_RELATIVE_PATH, VERSION_MARKER_FILE, } from './types.js';
4
+ export { CHECKOUT_STATE_LABELS, GUIDE_INIT_TIMEOUT_MS, GUIDE_MANAGED_NOTICE, GUIDE_METHODS, GUIDE_METHOD_DEPRECATED_ALIASES, normalizeGuideMethod, isDeprecatedGuideMethodAlias, DEFAULT_SOURCE_GIT, DEFAULT_SOURCE_API, GUIDE_RELATIVE_PATH, VERSION_MARKER_FILE, GUIDE_STRATEGIES, guideMethodDeprecationMessage, } from './types.js';
5
5
  // gitExec itself stays internal; only the shared remediation text is public (#78).
6
6
  export { GUIDE_OFFLINE_REMEDIATION } from './gitExec.js';
7
7
  export { evaluateBranchGuard, BranchGuardBlockedError, BranchGuardWarnError, } from './branchGuard.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guides/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAOL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,mFAAmF;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guides/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EASL,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,+BAA+B,EAC/B,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AACpB,mFAAmF;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
@@ -10,5 +10,22 @@ export declare class SubmoduleStrategy implements InstallStrategy {
10
10
  * where `git submodule update` would only sync to the worktree's own index.
11
11
  */
12
12
  sync(worktreePath: string, projectPath: string): Promise<void>;
13
+ /**
14
+ * Check out an uninitialized guide submodule at the commit the host repo
15
+ * pins, and report that commit.
16
+ *
17
+ * Only touches the submodule working tree: it runs no `git add` and makes no
18
+ * host commit, so it cannot trip the branch guard. Safe to call when the
19
+ * submodule is already initialized, in which case git does nothing.
20
+ *
21
+ * @param operationPath - repo (or worktree) whose submodule to initialize
22
+ * @param opts.timeoutMs - bound the fetch; callers on a read path set this,
23
+ * install and update leave it unset (D10)
24
+ */
25
+ init(operationPath: string, opts?: {
26
+ timeoutMs?: number;
27
+ }): Promise<{
28
+ commit: string;
29
+ }>;
13
30
  }
14
31
  //# sourceMappingURL=SubmoduleStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubmoduleStrategy.d.ts","sourceRoot":"","sources":["../../../src/guides/strategies/SubmoduleStrategy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIjG,qBAAa,iBAAkB,YAAW,eAAe;IACjD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA2B/E,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCvF,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsC3E;;;;;OAKG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBrE"}
1
+ {"version":3,"file":"SubmoduleStrategy.d.ts","sourceRoot":"","sources":["../../../src/guides/strategies/SubmoduleStrategy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAIjG,qBAAa,iBAAkB,YAAW,eAAe;IACjD,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA2B/E,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCvF,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsC3E;;;;;OAKG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBpE;;;;;;;;;;;OAWG;IACG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAW9F"}
@@ -100,12 +100,31 @@ export class SubmoduleStrategy {
100
100
  throw new Error('Could not read submodule commit from project HEAD');
101
101
  }
102
102
  const targetCommit = match[1];
103
- // Ensure submodule is initialized in the worktree
104
- await gitExec(['submodule', 'update', '--init', GUIDE_RELATIVE_PATH], worktreePath);
103
+ // Ensure submodule is initialized in the worktree. No timeout: sync() is
104
+ // reached from user-initiated update, which stays unbounded (D10).
105
+ await this.init(worktreePath);
105
106
  // Fetch latest objects so the target commit is available, then checkout
106
107
  const guidePath = join(worktreePath, GUIDE_RELATIVE_PATH);
107
108
  await gitExec(['fetch', 'origin'], guidePath);
108
109
  await gitExec(['checkout', targetCommit], guidePath);
109
110
  }
111
+ /**
112
+ * Check out an uninitialized guide submodule at the commit the host repo
113
+ * pins, and report that commit.
114
+ *
115
+ * Only touches the submodule working tree: it runs no `git add` and makes no
116
+ * host commit, so it cannot trip the branch guard. Safe to call when the
117
+ * submodule is already initialized, in which case git does nothing.
118
+ *
119
+ * @param operationPath - repo (or worktree) whose submodule to initialize
120
+ * @param opts.timeoutMs - bound the fetch; callers on a read path set this,
121
+ * install and update leave it unset (D10)
122
+ */
123
+ async init(operationPath, opts) {
124
+ await gitExec(['submodule', 'update', '--init', GUIDE_RELATIVE_PATH], operationPath, opts?.timeoutMs ? { timeoutMs: opts.timeoutMs } : undefined);
125
+ const guidePath = join(operationPath, GUIDE_RELATIVE_PATH);
126
+ const { stdout } = await gitExec(['rev-parse', '--short', 'HEAD'], guidePath);
127
+ return { commit: stdout };
128
+ }
110
129
  }
111
130
  //# sourceMappingURL=SubmoduleStrategy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubmoduleStrategy.js","sourceRoot":"","sources":["../../../src/guides/strategies/SubmoduleStrategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubmoduleStrategy.js","sourceRoot":"","sources":["../../../src/guides/strategies/SubmoduleStrategy.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export class TarballStrategy {
25
25
  return null;
26
26
  try {
27
27
  const version = readFileSync(markerPath, 'utf-8').trim() || null;
28
- return { method: 'manual', version, source: null };
28
+ return { method: 'tarball', version, source: null };
29
29
  }
30
30
  catch {
31
31
  return null;
@@ -39,7 +39,7 @@ export class TarballStrategy {
39
39
  }
40
40
  await this.downloadAndExtract(resolvedSource, latestTag, targetDir);
41
41
  writeFileSync(join(targetDir, VERSION_MARKER_FILE), latestTag, 'utf-8');
42
- return { success: true, version: latestTag, method: 'manual', path: targetDir };
42
+ return { success: true, version: latestTag, method: 'tarball', path: targetDir };
43
43
  }
44
44
  async update(_projectPath, targetDir) {
45
45
  const markerPath = join(targetDir, VERSION_MARKER_FILE);
@@ -57,13 +57,13 @@ export class TarballStrategy {
57
57
  throw new Error('Could not determine latest version from remote.');
58
58
  }
59
59
  if (previousVersion === latestTag) {
60
- return { success: true, previousVersion, newVersion: latestTag, method: 'manual' };
60
+ return { success: true, previousVersion, newVersion: latestTag, method: 'tarball' };
61
61
  }
62
62
  // Remove existing contents and re-download
63
63
  rmSync(targetDir, { recursive: true, force: true });
64
64
  await this.downloadAndExtract(source, latestTag, targetDir);
65
65
  writeFileSync(join(targetDir, VERSION_MARKER_FILE), latestTag, 'utf-8');
66
- return { success: true, previousVersion, newVersion: latestTag, method: 'manual' };
66
+ return { success: true, previousVersion, newVersion: latestTag, method: 'tarball' };
67
67
  }
68
68
  /**
69
69
  * Fetch latest tag from remote using git ls-remote. Real failures (network,
@@ -1 +1 @@
1
- {"version":3,"file":"TarballStrategy.js","sourceRoot":"","sources":["../../../src/guides/strategies/TarballStrategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TarballStrategy.js","sourceRoot":"","sources":["../../../src/guides/strategies/TarballStrategy.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,64 @@
1
1
  /** Installation method used for the ai-project-guide */
2
- export type GuideMethod = 'submodule' | 'clone' | 'manual';
2
+ export type GuideMethod = 'submodule' | 'clone' | 'tarball';
3
+ /** Canonical guide methods, in the order they are presented to users. */
4
+ export declare const GUIDE_METHODS: readonly GuideMethod[];
5
+ /**
6
+ * Deprecated strategy names accepted on input, mapped to their canonical
7
+ * replacement. Callers check this to emit a deprecation warning without
8
+ * re-comparing strings. This is the only place an alias is spelled in core
9
+ * source outside the ConfigKeys enum (which keeps `manual` so existing
10
+ * shared config files still validate).
11
+ */
12
+ export declare const GUIDE_METHOD_DEPRECATED_ALIASES: Readonly<Record<string, GuideMethod>>;
13
+ /**
14
+ * Normalize a strategy name from any input boundary (config value, CLI
15
+ * `--strategy` flag, MCP tool parameter) into a canonical GuideMethod.
16
+ * Throws when the input is neither canonical nor a known deprecated alias.
17
+ */
18
+ export declare function normalizeGuideMethod(input: string): GuideMethod;
19
+ /**
20
+ * True when `input` is a deprecated alias rather than a canonical method.
21
+ * Lets a boundary decide whether to print the D5 deprecation warning.
22
+ */
23
+ export declare function isDeprecatedGuideMethodAlias(input: string): boolean;
24
+ /**
25
+ * The one spelling of the D5 deprecation warning. The CLI prints it to stderr
26
+ * and the MCP server returns it as a notice, so the sentence lives here rather
27
+ * than at each boundary.
28
+ */
29
+ export declare function guideMethodDeprecationMessage(alias: string, method: GuideMethod): string;
30
+ /**
31
+ * The installation strategies offered to users, with the one-line trade-off
32
+ * shown for each. `cf init --help`, `cf guides install --help` and the MCP
33
+ * `guide_install` description all render from this single descriptor (D8),
34
+ * so the wording cannot drift between surfaces. Adding a GuideMethod without
35
+ * an entry here is a compile error.
36
+ */
37
+ export declare const GUIDE_STRATEGIES: Record<GuideMethod, {
38
+ summary: string;
39
+ }>;
40
+ /**
41
+ * Checkout state of a submodule-installed guide, as `git submodule status`
42
+ * reports it. Only meaningful for the submodule method.
43
+ */
44
+ export type SubmoduleCheckoutState = 'in_sync' | 'out_of_sync' | 'not_initialized';
45
+ /** Human-readable labels for each checkout state, used in CLI and tool output. */
46
+ export declare const CHECKOUT_STATE_LABELS: Record<SubmoduleCheckoutState, string>;
47
+ /**
48
+ * Upper bound on the automatic `git submodule update --init` performed by a
49
+ * read command. A blackholed proxy would otherwise block for the OS TCP
50
+ * timeout. User-initiated install and update stay unbounded (D10).
51
+ */
52
+ export declare const GUIDE_INIT_TIMEOUT_MS = 60000;
3
53
  /** Full status of a guide installation */
4
54
  export interface GuideInfo {
5
55
  installed: boolean;
6
56
  method: GuideMethod | null;
57
+ /**
58
+ * Submodule checkout state; null for clone/tarball installs and when no
59
+ * guide is installed.
60
+ */
61
+ checkout: SubmoduleCheckoutState | null;
7
62
  version: string | null;
8
63
  path: string;
9
64
  source: string;
@@ -11,12 +66,32 @@ export interface GuideInfo {
11
66
  updateAvailable: boolean;
12
67
  usingBundledPrompt: boolean;
13
68
  }
69
+ /**
70
+ * Outcome of GuideManager.ensureCheckout().
71
+ *
72
+ * `none` means nothing needed doing; `initialized` means an uninitialized
73
+ * submodule was checked out; `warned` means the checkout differs from the
74
+ * pinned commit and was deliberately left alone (D2).
75
+ */
76
+ export interface EnsureCheckoutResult {
77
+ action: 'none' | 'initialized' | 'warned';
78
+ /** Short SHA of the checked-out guide commit, when action is 'initialized'. */
79
+ commit?: string;
80
+ /** Human-readable notice, present whenever action is not 'none'. */
81
+ message?: string;
82
+ }
14
83
  /** Result of a guide installation */
15
84
  export interface InstallResult {
16
85
  success: boolean;
17
86
  version: string | null;
18
87
  method: GuideMethod;
19
88
  path: string;
89
+ /**
90
+ * Set when the requested strategy was named by a deprecated alias (e.g.
91
+ * `manual`), carrying the original spelling. Callers print a deprecation
92
+ * warning; absent when the canonical name was used (D5).
93
+ */
94
+ deprecatedAlias?: string;
20
95
  }
21
96
  /** Result of a guide update */
22
97
  export interface UpdateResult {
@@ -55,6 +130,11 @@ export interface InstallStrategy {
55
130
  update(projectPath: string, targetDir: string): Promise<UpdateResult>;
56
131
  detect(projectPath: string, targetDir: string): Promise<DetectionResult | null>;
57
132
  }
133
+ /**
134
+ * Stated wherever the guide directory is described, so a user learns the rule
135
+ * before `cf guides update` overwrites an edit they made in place (D9, #82).
136
+ */
137
+ export declare const GUIDE_MANAGED_NOTICE: string;
58
138
  export declare const DEFAULT_SOURCE_GIT = "https://github.com/ecorkran/ai-project-guide.git";
59
139
  export declare const DEFAULT_SOURCE_API = "https://api.github.com/repos/ecorkran/ai-project-guide";
60
140
  export declare const GUIDE_RELATIVE_PATH = "project-documents/ai-project-guide";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guides/types.ts"],"names":[],"mappings":"AAEA,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3D,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxF,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACjF;AAGD,eAAO,MAAM,kBAAkB,qDAAqD,CAAC;AACrF,eAAO,MAAM,kBAAkB,2DAA2D,CAAC;AAC3F,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,mBAAmB,iCAAiC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guides/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,81 @@
1
1
  // Guide management types and strategy interface
2
+ /** Canonical guide methods, in the order they are presented to users. */
3
+ export const GUIDE_METHODS = ['submodule', 'clone', 'tarball'];
4
+ /**
5
+ * Deprecated strategy names accepted on input, mapped to their canonical
6
+ * replacement. Callers check this to emit a deprecation warning without
7
+ * re-comparing strings. This is the only place an alias is spelled in core
8
+ * source outside the ConfigKeys enum (which keeps `manual` so existing
9
+ * shared config files still validate).
10
+ */
11
+ export const GUIDE_METHOD_DEPRECATED_ALIASES = {
12
+ manual: 'tarball',
13
+ };
14
+ /**
15
+ * Normalize a strategy name from any input boundary (config value, CLI
16
+ * `--strategy` flag, MCP tool parameter) into a canonical GuideMethod.
17
+ * Throws when the input is neither canonical nor a known deprecated alias.
18
+ */
19
+ export function normalizeGuideMethod(input) {
20
+ const candidate = input.trim();
21
+ const canonical = GUIDE_METHODS.find((method) => method === candidate);
22
+ if (canonical) {
23
+ return canonical;
24
+ }
25
+ const aliased = GUIDE_METHOD_DEPRECATED_ALIASES[candidate];
26
+ if (aliased) {
27
+ return aliased;
28
+ }
29
+ throw new Error(`Invalid guide strategy '${input}'. Valid values: ${GUIDE_METHODS.join(', ')}.`);
30
+ }
31
+ /**
32
+ * True when `input` is a deprecated alias rather than a canonical method.
33
+ * Lets a boundary decide whether to print the D5 deprecation warning.
34
+ */
35
+ export function isDeprecatedGuideMethodAlias(input) {
36
+ return input.trim() in GUIDE_METHOD_DEPRECATED_ALIASES;
37
+ }
38
+ /**
39
+ * The one spelling of the D5 deprecation warning. The CLI prints it to stderr
40
+ * and the MCP server returns it as a notice, so the sentence lives here rather
41
+ * than at each boundary.
42
+ */
43
+ export function guideMethodDeprecationMessage(alias, method) {
44
+ return `Strategy '${alias}' is deprecated; use '${method}' instead.`;
45
+ }
46
+ /**
47
+ * The installation strategies offered to users, with the one-line trade-off
48
+ * shown for each. `cf init --help`, `cf guides install --help` and the MCP
49
+ * `guide_install` description all render from this single descriptor (D8),
50
+ * so the wording cannot drift between surfaces. Adding a GuideMethod without
51
+ * an entry here is a compile error.
52
+ */
53
+ export const GUIDE_STRATEGIES = {
54
+ submodule: {
55
+ summary: 'version-pinned and updatable, but teammates must run git submodule update',
56
+ },
57
+ clone: { summary: 'a full working copy you can commit to, larger checkout' },
58
+ tarball: { summary: 'plain files with no git wiring, simplest for teams' },
59
+ };
60
+ /** Human-readable labels for each checkout state, used in CLI and tool output. */
61
+ export const CHECKOUT_STATE_LABELS = {
62
+ in_sync: 'in sync',
63
+ out_of_sync: 'out of sync',
64
+ not_initialized: 'not initialized',
65
+ };
66
+ /**
67
+ * Upper bound on the automatic `git submodule update --init` performed by a
68
+ * read command. A blackholed proxy would otherwise block for the OS TCP
69
+ * timeout. User-initiated install and update stay unbounded (D10).
70
+ */
71
+ export const GUIDE_INIT_TIMEOUT_MS = 60_000;
2
72
  // Constants
73
+ /**
74
+ * Stated wherever the guide directory is described, so a user learns the rule
75
+ * before `cf guides update` overwrites an edit they made in place (D9, #82).
76
+ */
77
+ export const GUIDE_MANAGED_NOTICE = 'This directory is managed by cf and overwritten on `cf guides update`. ' +
78
+ 'Put project-specific customizations under `project-documents/user/`.';
3
79
  export const DEFAULT_SOURCE_GIT = 'https://github.com/ecorkran/ai-project-guide.git';
4
80
  export const DEFAULT_SOURCE_API = 'https://api.github.com/repos/ecorkran/ai-project-guide';
5
81
  export const GUIDE_RELATIVE_PATH = 'project-documents/ai-project-guide';
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guides/types.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAmEhD,YAAY;AACZ,MAAM,CAAC,MAAM,kBAAkB,GAAG,kDAAkD,CAAC;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG,wDAAwD,CAAC;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guides/types.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAKhD,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAEvF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAA0C;IACpF,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACvE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CACb,2BAA2B,KAAK,oBAAoB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,+BAA+B,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAa,EAAE,MAAmB;IAC9E,OAAO,aAAa,KAAK,yBAAyB,MAAM,YAAY,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6C;IACxE,SAAS,EAAE;QACT,OAAO,EAAE,2EAA2E;KACrF;IACD,KAAK,EAAE,EAAE,OAAO,EAAE,wDAAwD,EAAE;IAC5E,OAAO,EAAE,EAAE,OAAO,EAAE,oDAAoD,EAAE;CAC3E,CAAC;AAQF,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAA2C;IAC3E,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AA0F5C,YAAY;AAEZ;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,yEAAyE;IACzE,sEAAsE,CAAC;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,kDAAkD,CAAC;AACrF,MAAM,CAAC,MAAM,kBAAkB,GAAG,wDAAwD,CAAC;AAC3F,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,8 @@ export * from './types/index.js';
2
2
  export * from './services/index.js';
3
3
  export type { IProjectStore, IStorageService, StorageReadResult } from './storage/interfaces.js';
4
4
  export * from './introspection/index.js';
5
- export type { GuideInfo, GuideMethod, InstallResult, UninstallResult, UpdateResult, SyncResult } from './guides/types.js';
5
+ export type { GuideInfo, GuideMethod, InstallResult, UninstallResult, UpdateResult, SyncResult, SubmoduleCheckoutState, EnsureCheckoutResult } from './guides/types.js';
6
+ export { CHECKOUT_STATE_LABELS, GUIDE_MANAGED_NOTICE, GUIDE_METHODS, GUIDE_METHOD_DEPRECATED_ALIASES, GUIDE_STRATEGIES, guideMethodDeprecationMessage, } from './guides/types.js';
6
7
  export * from './schema/projectSchema.js';
7
8
  export { FRONTMATTER_SCHEMAS, VALID_STATUSES, validateFrontmatter, inferDocTypeFromPath, inferFieldsFromPath, type FrontmatterFieldDef, type DocTypeSchema, type FrontmatterFinding, } from './schema/frontmatterSchema.js';
8
9
  export { GitWorktreeDiscovery, parseWorktreeListOutput } from './git/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjG,cAAc,0BAA0B,CAAC;AAGzC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG1H,cAAc,2BAA2B,CAAC;AAG1C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAGpC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjG,cAAc,0BAA0B,CAAC;AAGzC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACxK,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,+BAA+B,EAC/B,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,7 @@ export * from './types/index.js';
3
3
  export * from './services/index.js';
4
4
  // Introspection types and interfaces (browser-safe — no fs dependencies)
5
5
  export * from './introspection/index.js';
6
+ export { CHECKOUT_STATE_LABELS, GUIDE_MANAGED_NOTICE, GUIDE_METHODS, GUIDE_METHOD_DEPRECATED_ALIASES, GUIDE_STRATEGIES, guideMethodDeprecationMessage, } from './guides/types.js';
6
7
  // Project schema (field metadata, aliases, phase maps)
7
8
  export * from './schema/projectSchema.js';
8
9
  // Frontmatter schema registry (per-docType field validation)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAKpC,yEAAyE;AACzE,cAAc,0BAA0B,CAAC;AAKzC,uDAAuD;AACvD,cAAc,2BAA2B,CAAC;AAE1C,6DAA6D;AAC7D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GAIpB,MAAM,+BAA+B,CAAC;AAEvC,gBAAgB;AAChB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,iEAAiE;AACjE,4FAA4F;AAC5F,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,GAG7B,MAAM,uBAAuB,CAAC;AAE/B,oEAAoE;AACpE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAKpC,yEAAyE;AACzE,cAAc,0BAA0B,CAAC;AAIzC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,+BAA+B,EAC/B,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B,uDAAuD;AACvD,cAAc,2BAA2B,CAAC;AAE1C,6DAA6D;AAC7D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GAIpB,MAAM,+BAA+B,CAAC;AAEvC,gBAAgB;AAChB,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,iEAAiE;AACjE,4FAA4F;AAC5F,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,GAG7B,MAAM,uBAAuB,CAAC;AAE/B,oEAAoE;AACpE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-forge/core",
3
- "version": "0.13.2",
3
+ "version": "0.14.0",
4
4
  "description": "Core context generation engine for Context Forge — template processing, project state, prompt assembly",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",