@principled/cairn 1.0.0-beta → 1.0.1-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -161,6 +161,42 @@ coverage:
161
161
  | decision | D | no | rationale |
162
162
  | milestone | M | no | description |
163
163
 
164
+ ## Cross-Repo Inheritance
165
+
166
+ GVP libraries can inherit from other libraries hosted in git repositories.
167
+ Documents reference external sources in `meta.inherits`:
168
+
169
+ ```yaml
170
+ meta:
171
+ name: my-project
172
+ inherits:
173
+ - source: "@github:company/org-gvp@v1.0.0"
174
+ as: org
175
+ - source: "@azure:myorg/myproject/shared-gvp@v2.1.0"
176
+ as: shared
177
+ ```
178
+
179
+ Supported providers:
180
+
181
+ | Provider | Format | Resolves to |
182
+ |----------|--------|-------------|
183
+ | GitHub | `@github:user/repo@tag` | `https://github.com/user/repo.git` |
184
+ | Azure DevOps | `@azure:org/project/repo@tag` | `https://dev.azure.com/org/project/_git/repo` |
185
+ | GitLab | `@gitlab:user/repo@tag` | `https://gitlab.com/user/repo.git` |
186
+ | Bitbucket | `@bitbucket:user/repo@tag` | `https://bitbucket.org/user/repo.git` |
187
+
188
+ The commit-ish must be an immutable reference (tag or SHA) — branches are not
189
+ allowed. Sources are cached at `~/.cache/cairn/sources/` and only cloned once.
190
+
191
+ Elements in inherited libraries are accessible via aliased references:
192
+
193
+ ```yaml
194
+ decisions:
195
+ - id: D1
196
+ name: Follow org coding standards
197
+ maps_to: [org:values:V1, my-project:G1]
198
+ ```
199
+
164
200
  ## Refs — Linking Decisions to Artifacts
165
201
 
166
202
  Any element can have `refs` linking it to external files:
@@ -16,11 +16,25 @@ export declare class LocalSourceResolver implements SourceResolver {
16
16
  resolve(source: string): string;
17
17
  }
18
18
  /**
19
- * Stub resolver for git-based sources (DEC-1.9).
20
- * Validates commit-ish is present. Full git fetching deferred for alpha.
19
+ * Resolver for git-based sources (DEC-1.9).
20
+ * Clones repos to a local cache and returns the library path.
21
+ *
22
+ * Flow:
23
+ * 0. Check cache — if already cloned at this commitish, return cached path
24
+ * 1. Parse @provider:path@commitish
25
+ * 2. Map provider to git URL
26
+ * 3. Clone (shallow) to cache directory
27
+ * 4. Return library path within clone (dual lookup: gvp/ then .gvp/library/)
21
28
  */
22
29
  export declare class GitSourceResolver implements SourceResolver {
30
+ private readonly cacheDir;
31
+ constructor(cacheDir?: string);
23
32
  resolve(source: string): string;
33
+ /**
34
+ * Find the library directory within a cloned repo.
35
+ * Dual lookup per DEC-1.2, DEC-1.10: gvp/ wins over .gvp/library/
36
+ */
37
+ private findLibraryDir;
24
38
  }
25
39
  /**
26
40
  * Factory that creates the appropriate resolver based on source format.
@@ -1 +1 @@
1
- {"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAmChC;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAiChC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAYvE"}
1
+ {"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAE5C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAmChC;AA+BD;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,QAAQ,CAAC,EAAE,MAAM;IAI7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAgE/B;;;OAGG;IACH,OAAO,CAAC,cAAc;CAcvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAYvE"}
@@ -1,5 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
+ import * as os from 'os';
4
+ import { execSync } from 'child_process';
3
5
  import { InheritanceError } from '../errors.js';
4
6
  /**
5
7
  * Resolves local filesystem source paths (DEC-1.7).
@@ -40,12 +42,48 @@ export class LocalSourceResolver {
40
42
  }
41
43
  }
42
44
  /**
43
- * Stub resolver for git-based sources (DEC-1.9).
44
- * Validates commit-ish is present. Full git fetching deferred for alpha.
45
+ * Provider git URL templates.
46
+ * Each template receives the parsed path segments and produces a clone URL.
47
+ */
48
+ const GIT_PROVIDERS = {
49
+ github: (repoPath) => `https://github.com/${repoPath}.git`,
50
+ gitlab: (repoPath) => `https://gitlab.com/${repoPath}.git`,
51
+ bitbucket: (repoPath) => `https://bitbucket.org/${repoPath}.git`,
52
+ azure: (repoPath) => {
53
+ // @azure:org/project/repo → https://dev.azure.com/org/project/_git/repo
54
+ const parts = repoPath.split('/');
55
+ if (parts.length < 3) {
56
+ throw new InheritanceError(`Azure DevOps source requires org/project/repo format, got '${repoPath}'`);
57
+ }
58
+ const [org, project, ...repoParts] = parts;
59
+ const repo = repoParts.join('/');
60
+ return `https://dev.azure.com/${org}/${project}/_git/${repo}`;
61
+ },
62
+ };
63
+ /**
64
+ * Default cache directory for cloned git sources.
65
+ */
66
+ function defaultCacheDir() {
67
+ return path.join(os.homedir(), '.cache', 'cairn', 'sources');
68
+ }
69
+ /**
70
+ * Resolver for git-based sources (DEC-1.9).
71
+ * Clones repos to a local cache and returns the library path.
72
+ *
73
+ * Flow:
74
+ * 0. Check cache — if already cloned at this commitish, return cached path
75
+ * 1. Parse @provider:path@commitish
76
+ * 2. Map provider to git URL
77
+ * 3. Clone (shallow) to cache directory
78
+ * 4. Return library path within clone (dual lookup: gvp/ then .gvp/library/)
45
79
  */
46
80
  export class GitSourceResolver {
81
+ cacheDir;
82
+ constructor(cacheDir) {
83
+ this.cacheDir = cacheDir ?? defaultCacheDir();
84
+ }
47
85
  resolve(source) {
48
- // Parse @github:user/repo@commitish or @azure:org/project@commitish
86
+ // Parse @provider:path@commitish
49
87
  const match = source.match(/^@(\w+):(.+?)@(.+)$/);
50
88
  if (!match) {
51
89
  // Check if it's a git source without commit-ish
@@ -57,16 +95,51 @@ export class GitSourceResolver {
57
95
  throw new InheritanceError(`Invalid git source format: '${source}'`);
58
96
  }
59
97
  const [, provider, repoPath, commitish] = match;
60
- // Reject branch-like references (no slashes, starts with letter, no dots)
61
- // This is a heuristic — exact validation would require git
62
- // For alpha, just ensure something is there
63
98
  if (!commitish || commitish.length === 0) {
64
99
  throw new InheritanceError(`Git source '${source}' requires a commit-ish after '@'`);
65
100
  }
66
- // For alpha: throw not-implemented
67
- throw new InheritanceError(`Git source resolution not yet implemented. ` +
68
- `Source: @${provider}:${repoPath}@${commitish}. ` +
69
- `For now, use local filesystem paths or clone the repo manually.`);
101
+ // Step 0: Check cache
102
+ const cacheKey = `${provider}/${repoPath.replace(/\//g, '--')}/${commitish}`;
103
+ const cachedPath = path.join(this.cacheDir, cacheKey);
104
+ if (fs.existsSync(cachedPath)) {
105
+ return this.findLibraryDir(cachedPath, source);
106
+ }
107
+ // Step 1: Map provider to git URL
108
+ const urlBuilder = GIT_PROVIDERS[provider];
109
+ if (!urlBuilder) {
110
+ throw new InheritanceError(`Unknown git provider '${provider}' in source '${source}'. ` +
111
+ `Supported: ${Object.keys(GIT_PROVIDERS).join(', ')}`);
112
+ }
113
+ const gitUrl = urlBuilder(repoPath);
114
+ // Step 2: Clone to cache
115
+ fs.mkdirSync(cachedPath, { recursive: true });
116
+ try {
117
+ execSync(`git clone --depth 1 --branch ${commitish} ${gitUrl} ${cachedPath}`, { stdio: ['pipe', 'pipe', 'pipe'], encoding: 'utf-8' });
118
+ }
119
+ catch (e) {
120
+ // Clean up failed clone
121
+ fs.rmSync(cachedPath, { recursive: true, force: true });
122
+ const errMsg = e instanceof Error ? e.message : String(e);
123
+ throw new InheritanceError(`Failed to clone git source '${source}' from ${gitUrl}: ${errMsg}`);
124
+ }
125
+ // Step 3: Return library path
126
+ return this.findLibraryDir(cachedPath, source);
127
+ }
128
+ /**
129
+ * Find the library directory within a cloned repo.
130
+ * Dual lookup per DEC-1.2, DEC-1.10: gvp/ wins over .gvp/library/
131
+ */
132
+ findLibraryDir(repoDir, source) {
133
+ const gvpDir = path.join(repoDir, 'gvp');
134
+ if (fs.existsSync(gvpDir) && fs.statSync(gvpDir).isDirectory()) {
135
+ return gvpDir;
136
+ }
137
+ const dotGvpLibrary = path.join(repoDir, '.gvp', 'library');
138
+ if (fs.existsSync(dotGvpLibrary) && fs.statSync(dotGvpLibrary).isDirectory()) {
139
+ return dotGvpLibrary;
140
+ }
141
+ // Fall back to repo root (maybe the whole repo IS the library)
142
+ return repoDir;
70
143
  }
71
144
  }
72
145
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACD;IAA7B,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEhD,OAAO,CAAC,MAAc;QACpB,yBAAyB;QACzB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,gBAAgB,CACxB,qDAAqD,MAAM,2BAA2B,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBACvB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzC,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7E,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,sEAAsE;QACtE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACnE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,gBAAgB,CACxB,0BAA0B,MAAM,qCAAqC,QAAQ,KAAK;YAClF,YAAY,MAAM,KAAK,aAAa,KAAK,QAAQ,EAAE,CACpD,CAAC;IACJ,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B,OAAO,CAAC,MAAc;QACpB,oEAAoE;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gDAAgD;YAChD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,gBAAgB,CACxB,eAAe,MAAM,mDAAmD;oBACxE,QAAQ,MAAM,gBAAgB,MAAM,gDAAgD,CACrF,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,MAAM,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;QAEhD,0EAA0E;QAC1E,2DAA2D;QAC3D,4CAA4C;QAC5C,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,gBAAgB,CACxB,eAAe,MAAM,mCAAmC,CACzD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,IAAI,gBAAgB,CACxB,6CAA6C;YAC7C,YAAY,QAAQ,IAAI,QAAQ,IAAI,SAAS,IAAI;YACjD,iEAAiE,CAClE,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEpC,OAAO;QACL,OAAO,CAAC,MAAc;YACpB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAClD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../src/inheritance/source-resolver.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principled/cairn",
3
- "version": "1.0.0-beta",
3
+ "version": "1.0.1-beta",
4
4
  "description": "Cairn — decision traceability framework. Trace every decision back to what drives it.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",