@pella-labs/pinakes 0.3.4 → 0.3.6

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 (56) hide show
  1. package/dist/cli/audit-wiki.d.ts +14 -0
  2. package/dist/cli/audit-wiki.d.ts.map +1 -0
  3. package/dist/cli/audit-wiki.js +187 -0
  4. package/dist/cli/audit-wiki.js.map +1 -0
  5. package/dist/cli/audit.d.ts +0 -2
  6. package/dist/cli/audit.d.ts.map +1 -1
  7. package/dist/cli/audit.js.map +1 -1
  8. package/dist/cli/contradiction-cli.d.ts +0 -1
  9. package/dist/cli/contradiction-cli.d.ts.map +1 -1
  10. package/dist/cli/contradiction-cli.js +3 -5
  11. package/dist/cli/contradiction-cli.js.map +1 -1
  12. package/dist/cli/export.d.ts +0 -1
  13. package/dist/cli/export.d.ts.map +1 -1
  14. package/dist/cli/export.js.map +1 -1
  15. package/dist/cli/import.d.ts +0 -1
  16. package/dist/cli/import.d.ts.map +1 -1
  17. package/dist/cli/import.js.map +1 -1
  18. package/dist/cli/index.js +23 -17
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/purge.d.ts +0 -1
  21. package/dist/cli/purge.d.ts.map +1 -1
  22. package/dist/cli/purge.js.map +1 -1
  23. package/dist/cli/rebuild.d.ts +1 -3
  24. package/dist/cli/rebuild.d.ts.map +1 -1
  25. package/dist/cli/rebuild.js +1 -1
  26. package/dist/cli/rebuild.js.map +1 -1
  27. package/dist/cli/serve.d.ts +1 -3
  28. package/dist/cli/serve.d.ts.map +1 -1
  29. package/dist/cli/serve.js +82 -12
  30. package/dist/cli/serve.js.map +1 -1
  31. package/dist/cli/status.d.ts +0 -2
  32. package/dist/cli/status.d.ts.map +1 -1
  33. package/dist/cli/status.js.map +1 -1
  34. package/dist/ingest/repo-mirror.d.ts +17 -0
  35. package/dist/ingest/repo-mirror.d.ts.map +1 -0
  36. package/dist/ingest/repo-mirror.js +124 -0
  37. package/dist/ingest/repo-mirror.js.map +1 -0
  38. package/dist/init/copy.d.ts +18 -0
  39. package/dist/init/copy.d.ts.map +1 -0
  40. package/dist/init/copy.js +40 -0
  41. package/dist/init/copy.js.map +1 -0
  42. package/dist/init/ignore.d.ts +29 -0
  43. package/dist/init/ignore.d.ts.map +1 -0
  44. package/dist/init/ignore.js +206 -0
  45. package/dist/init/ignore.js.map +1 -0
  46. package/dist/init/scanner.d.ts +12 -0
  47. package/dist/init/scanner.d.ts.map +1 -0
  48. package/dist/init/scanner.js +92 -0
  49. package/dist/init/scanner.js.map +1 -0
  50. package/dist/paths.d.ts +19 -6
  51. package/dist/paths.d.ts.map +1 -1
  52. package/dist/paths.js +40 -5
  53. package/dist/paths.js.map +1 -1
  54. package/dist/server.js +0 -12
  55. package/dist/server.js.map +1 -1
  56. package/package.json +1 -1
@@ -0,0 +1,206 @@
1
+ import { existsSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { basename, join, relative, resolve } from 'node:path';
3
+ import { logger } from '../observability/logger.js';
4
+ // .pinakesignore — filter which repo .md files get copied into the wiki.
5
+ //
6
+ // Supports a subset of .gitignore syntax:
7
+ // dir/ → ignore everything under this top-level directory
8
+ // ** /dir/ → ignore this directory name at any depth
9
+ // ** /dir/** → same as above
10
+ // dir/** → same as dir/
11
+ // filename.md → ignore files with this exact name anywhere
12
+ // *.ext → ignore files with this extension
13
+ // !pattern → re-include a previously ignored pattern
14
+ // # lines → comments
15
+ // blank lines → ignored
16
+ // Built-in defaults — applied before .pinakesignore patterns.
17
+ // These filter out source-code directories whose READMEs are typically
18
+ // boilerplate and not useful project documentation.
19
+ const BUILTIN_IGNORE = `
20
+ # Source code directories — their .md files are usually boilerplate
21
+ **/src/
22
+ **/lib/
23
+ **/pkg/
24
+ **/cmd/
25
+ **/internal/
26
+ **/test/
27
+ **/tests/
28
+ **/spec/
29
+ **/fixtures/
30
+ **/testdata/
31
+ **/mocks/
32
+ **/__tests__/
33
+ **/__mocks__/
34
+
35
+ # Build & tooling
36
+ **/bin/
37
+ **/scripts/
38
+ **/tools/
39
+ **/hack/
40
+ **/.changeset/
41
+
42
+ # Language-specific source trees
43
+ **/crates/
44
+ **/packages/
45
+ **/apps/
46
+
47
+ # UI/frontend source
48
+ **/components/
49
+ **/pages/
50
+ **/views/
51
+ **/layouts/
52
+ **/public/
53
+
54
+ # Examples & evals (usually not core docs)
55
+ **/examples/
56
+ **/evals/
57
+ **/benchmarks/
58
+ **/samples/
59
+ `;
60
+ /**
61
+ * Load ignore patterns from `.pinakesignore` in the project root,
62
+ * merged with built-in defaults. User patterns override defaults.
63
+ */
64
+ export function loadIgnorePatterns(projectRoot) {
65
+ const patterns = [];
66
+ // Built-in defaults first
67
+ patterns.push(...parsePatterns(BUILTIN_IGNORE));
68
+ // User overrides from .pinakesignore
69
+ const ignorePath = resolve(projectRoot, '.pinakesignore');
70
+ if (existsSync(ignorePath)) {
71
+ const content = readFileSync(ignorePath, 'utf-8');
72
+ patterns.push(...parsePatterns(content));
73
+ }
74
+ return patterns;
75
+ }
76
+ const DEFAULT_PINAKESIGNORE = `# .pinakesignore — controls which repo .md files get copied into the wiki.
77
+ # Uses .gitignore-style patterns. Built-in defaults already exclude common
78
+ # source directories (src/, bin/, crates/, examples/, etc.).
79
+ # Add project-specific patterns below.
80
+
81
+ # To re-include a directory excluded by defaults, use negation:
82
+ # !**/src/
83
+
84
+ # Project-specific ignores:
85
+ `;
86
+ /**
87
+ * Create a default `.pinakesignore` in the project root if one doesn't exist.
88
+ * Called during serve startup alongside .gitignore generation.
89
+ */
90
+ export function ensurePinakesIgnoreFile(projectRoot) {
91
+ const ignorePath = resolve(projectRoot, '.pinakesignore');
92
+ if (existsSync(ignorePath))
93
+ return;
94
+ writeFileSync(ignorePath, DEFAULT_PINAKESIGNORE, 'utf-8');
95
+ }
96
+ /**
97
+ * Remove wiki files that match the current ignore patterns.
98
+ * Called when `.pinakesignore` changes to clean up previously-copied files.
99
+ */
100
+ export function cleanIgnoredFromWiki(_projectRoot, wikiRoot, patterns) {
101
+ let removed = 0;
102
+ function walkWiki(dir) {
103
+ let entries;
104
+ try {
105
+ entries = readdirSync(dir, { withFileTypes: true });
106
+ }
107
+ catch {
108
+ return;
109
+ }
110
+ for (const entry of entries) {
111
+ const full = join(dir, entry.name);
112
+ if (entry.isDirectory()) {
113
+ walkWiki(full);
114
+ // Clean up empty dirs after removing files
115
+ try {
116
+ const remaining = readdirSync(full);
117
+ if (remaining.length === 0)
118
+ rmSync(full, { recursive: true });
119
+ }
120
+ catch { /* ignore */ }
121
+ }
122
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
123
+ const relFromWiki = relative(wikiRoot, full);
124
+ if (shouldIgnore(relFromWiki, patterns)) {
125
+ rmSync(full);
126
+ removed++;
127
+ logger.debug({ path: relFromWiki }, 'removed ignored file from wiki');
128
+ }
129
+ }
130
+ }
131
+ }
132
+ walkWiki(wikiRoot);
133
+ return removed;
134
+ }
135
+ /**
136
+ * Check if a relative path should be ignored based on the patterns.
137
+ * Later patterns (including negations) override earlier ones.
138
+ */
139
+ export function shouldIgnore(relativePath, patterns) {
140
+ // Normalize: ensure forward slashes, no leading ./
141
+ const normalized = relativePath.replace(/\\/g, '/').replace(/^\.\//, '');
142
+ let ignored = false;
143
+ for (const pattern of patterns) {
144
+ if (pattern.test(normalized)) {
145
+ ignored = !pattern.negate;
146
+ }
147
+ }
148
+ return ignored;
149
+ }
150
+ // ---------------------------------------------------------------------------
151
+ // Pattern parsing
152
+ // ---------------------------------------------------------------------------
153
+ function parsePatterns(content) {
154
+ const patterns = [];
155
+ for (let line of content.split('\n')) {
156
+ line = line.trim();
157
+ if (line === '' || line.startsWith('#'))
158
+ continue;
159
+ const negate = line.startsWith('!');
160
+ const raw = line;
161
+ if (negate)
162
+ line = line.slice(1);
163
+ const test = compilePattern(line);
164
+ if (test) {
165
+ patterns.push({ raw, negate, test });
166
+ }
167
+ }
168
+ return patterns;
169
+ }
170
+ function compilePattern(pattern) {
171
+ // `**/dir/` or `**/dir/**` → directory name anywhere in path
172
+ const anyDirMatch = pattern.match(/^\*\*\/([^/*]+)\/(\*\*)?$/);
173
+ if (anyDirMatch) {
174
+ const dirName = anyDirMatch[1];
175
+ return (p) => {
176
+ const segments = p.split('/');
177
+ // Check if any segment (except the last, which is the filename) matches
178
+ return segments.slice(0, -1).includes(dirName);
179
+ };
180
+ }
181
+ // `dir/` or `dir/**` → top-level directory
182
+ const topDirMatch = pattern.match(/^([^/*]+)\/(\*\*)?$/);
183
+ if (topDirMatch) {
184
+ const dirName = topDirMatch[1];
185
+ return (p) => p.startsWith(dirName + '/');
186
+ }
187
+ // `*.ext` → extension match
188
+ if (pattern.startsWith('*.') && !pattern.includes('/')) {
189
+ const ext = pattern.slice(1); // includes the dot
190
+ return (p) => p.endsWith(ext);
191
+ }
192
+ // `filename` (no slashes, no wildcards) → basename match anywhere
193
+ if (!pattern.includes('/') && !pattern.includes('*')) {
194
+ return (p) => basename(p) === pattern;
195
+ }
196
+ // `dir/subdir/` → prefix match
197
+ if (pattern.endsWith('/') && !pattern.includes('*')) {
198
+ return (p) => p.startsWith(pattern) || p.startsWith(pattern.slice(0, -1) + '/');
199
+ }
200
+ // Fallback: treat as a prefix
201
+ if (!pattern.includes('*')) {
202
+ return (p) => p.startsWith(pattern) || p === pattern;
203
+ }
204
+ return null; // unsupported pattern — skip silently
205
+ }
206
+ //# sourceMappingURL=ignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/init/ignore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Scan a project directory for markdown files, respecting .gitignore
3
+ * and `.pinakesignore`.
4
+ *
5
+ * Primary strategy: `git ls-files` (fast, respects .gitignore).
6
+ * Fallback: recursive walk with hardcoded excludes (non-git repos).
7
+ * Both paths filter results through `.pinakesignore` + built-in defaults.
8
+ *
9
+ * Returns absolute paths, sorted deterministically.
10
+ */
11
+ export declare function scanRepoMarkdownFiles(projectRoot: string): string[];
12
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/init/scanner.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BnE"}
@@ -0,0 +1,92 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { readdirSync } from 'node:fs';
3
+ import { relative, resolve } from 'node:path';
4
+ import { logger } from '../observability/logger.js';
5
+ import { loadIgnorePatterns, shouldIgnore } from './ignore.js';
6
+ /**
7
+ * Scan a project directory for markdown files, respecting .gitignore
8
+ * and `.pinakesignore`.
9
+ *
10
+ * Primary strategy: `git ls-files` (fast, respects .gitignore).
11
+ * Fallback: recursive walk with hardcoded excludes (non-git repos).
12
+ * Both paths filter results through `.pinakesignore` + built-in defaults.
13
+ *
14
+ * Returns absolute paths, sorted deterministically.
15
+ */
16
+ export function scanRepoMarkdownFiles(projectRoot) {
17
+ const absRoot = resolve(projectRoot);
18
+ const patterns = loadIgnorePatterns(absRoot);
19
+ let files;
20
+ try {
21
+ files = scanViaGit(absRoot);
22
+ }
23
+ catch {
24
+ logger.debug({ projectRoot }, 'git ls-files failed, falling back to recursive walk');
25
+ files = scanViaWalk(absRoot);
26
+ }
27
+ // Apply .pinakesignore filtering
28
+ const filtered = files.filter((absPath) => {
29
+ const rel = relative(absRoot, absPath);
30
+ return !shouldIgnore(rel, patterns);
31
+ });
32
+ if (filtered.length < files.length) {
33
+ logger.info({ total: files.length, kept: filtered.length, ignored: files.length - filtered.length }, '.pinakesignore: filtered repo markdown files');
34
+ }
35
+ return filtered;
36
+ }
37
+ // ---------------------------------------------------------------------------
38
+ // Git-based scan
39
+ // ---------------------------------------------------------------------------
40
+ function scanViaGit(projectRoot) {
41
+ const stdout = execFileSync('git', ['ls-files', '--cached', '--others', '--exclude-standard', '--', '*.md'], { cwd: projectRoot, encoding: 'utf-8', timeout: 10_000, maxBuffer: 4 * 1024 * 1024 });
42
+ return stdout
43
+ .split('\n')
44
+ .map((l) => l.trim())
45
+ .filter((l) => l.length > 0)
46
+ .filter((l) => !l.startsWith('.pinakes/'))
47
+ .map((rel) => resolve(projectRoot, rel))
48
+ .sort();
49
+ }
50
+ // ---------------------------------------------------------------------------
51
+ // Fallback recursive walk
52
+ // ---------------------------------------------------------------------------
53
+ const WALK_EXCLUDES = new Set([
54
+ '.git',
55
+ '.pinakes',
56
+ 'node_modules',
57
+ 'dist',
58
+ 'build',
59
+ 'coverage',
60
+ '.next',
61
+ '.nuxt',
62
+ 'vendor',
63
+ '__pycache__',
64
+ '.tox',
65
+ 'target',
66
+ ]);
67
+ function scanViaWalk(projectRoot) {
68
+ const results = [];
69
+ walkDir(projectRoot, projectRoot, results);
70
+ return results.sort();
71
+ }
72
+ function walkDir(dir, projectRoot, results) {
73
+ let entries;
74
+ try {
75
+ entries = readdirSync(dir, { withFileTypes: true });
76
+ }
77
+ catch {
78
+ return; // permission denied, symlink loop, etc.
79
+ }
80
+ for (const entry of entries) {
81
+ if (WALK_EXCLUDES.has(entry.name))
82
+ continue;
83
+ const full = resolve(dir, entry.name);
84
+ if (entry.isDirectory()) {
85
+ walkDir(full, projectRoot, results);
86
+ }
87
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
88
+ results.push(full);
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/init/scanner.ts"],"names":[],"mappings":"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"}
package/dist/paths.d.ts CHANGED
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * Centralized path resolution for Pinakes.
3
3
  *
4
- * All Pinakes data lives under a single root directory (~/.pinakes by default).
5
- * Project data is stored in mirrored paths under ~/.pinakes/projects/, using
6
- * the Claude Code convention of replacing '/' with '-' in the absolute project
7
- * path. Personal data lives directly under the root.
4
+ * Project wiki lives in-repo at `<projectRoot>/.pinakes/wiki/` (committed to
5
+ * git, team-shared). Index files (DB, manifest, audit) live under the
6
+ * centralized `~/.pinakes/projects/<mangled>/` directory (not committed).
7
+ * Personal data lives directly under `~/.pinakes/`.
8
8
  *
9
9
  * Layout:
10
+ * <projectRoot>/.pinakes/
11
+ * wiki/ # project wiki (committed)
12
+ * .gitignore # auto-generated (committed)
13
+ *
10
14
  * ~/.pinakes/
11
15
  * wiki/ # personal wiki
12
16
  * pinakes.db # personal DB
@@ -14,7 +18,6 @@
14
18
  * manifest.json # personal manifest
15
19
  * projects/
16
20
  * -Users-sebastian-dev-myproject/ # mangled project root
17
- * wiki/ # project wiki
18
21
  * pinakes.db # project DB
19
22
  * audit.jsonl # project audit
20
23
  * manifest.json # project manifest
@@ -40,6 +43,11 @@ export declare function pinakesRoot(): string;
40
43
  */
41
44
  export declare function projectDataDir(projectRoot: string): string;
42
45
  export declare function projectWikiPath(projectRoot: string): string;
46
+ /**
47
+ * Legacy wiki path (pre-v0.3): `~/.pinakes/projects/<mangled>/wiki/`.
48
+ * Used only by the migration function in serve.ts.
49
+ */
50
+ export declare function legacyProjectWikiPath(projectRoot: string): string;
43
51
  export declare function projectDbPath(projectRoot: string): string;
44
52
  export declare function projectAuditJsonlPath(projectRoot: string): string;
45
53
  export declare function projectManifestPath(projectRoot: string): string;
@@ -50,9 +58,14 @@ export declare function personalManifestPath(): string;
50
58
  export interface CliPathOverrides {
51
59
  projectRoot?: string;
52
60
  dbPath?: string;
53
- wikiPath?: string;
54
61
  profileDbPath?: string;
55
62
  }
63
+ /**
64
+ * Ensure `<projectRoot>/.pinakes/.gitignore` exists so the DB, manifest, and
65
+ * audit files are never accidentally committed. Idempotent — skips if file
66
+ * already exists.
67
+ */
68
+ export declare function ensurePinakesGitignore(projectRoot: string): void;
56
69
  /**
57
70
  * Resolve the DB path for a given scope, honoring CLI overrides.
58
71
  * Shared by all CLI subcommands (status, audit, export, import, purge, etc.)
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9D;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAMD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,SAAS,GAAG,UAAU,GAC5B,MAAM,CAOR"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAUH,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE9D;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAMD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAMD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAeD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAMhE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,SAAS,GAAG,UAAU,GAC5B,MAAM,CAOR"}
package/dist/paths.js CHANGED
@@ -1,12 +1,16 @@
1
1
  /**
2
2
  * Centralized path resolution for Pinakes.
3
3
  *
4
- * All Pinakes data lives under a single root directory (~/.pinakes by default).
5
- * Project data is stored in mirrored paths under ~/.pinakes/projects/, using
6
- * the Claude Code convention of replacing '/' with '-' in the absolute project
7
- * path. Personal data lives directly under the root.
4
+ * Project wiki lives in-repo at `<projectRoot>/.pinakes/wiki/` (committed to
5
+ * git, team-shared). Index files (DB, manifest, audit) live under the
6
+ * centralized `~/.pinakes/projects/<mangled>/` directory (not committed).
7
+ * Personal data lives directly under `~/.pinakes/`.
8
8
  *
9
9
  * Layout:
10
+ * <projectRoot>/.pinakes/
11
+ * wiki/ # project wiki (committed)
12
+ * .gitignore # auto-generated (committed)
13
+ *
10
14
  * ~/.pinakes/
11
15
  * wiki/ # personal wiki
12
16
  * pinakes.db # personal DB
@@ -14,11 +18,11 @@
14
18
  * manifest.json # personal manifest
15
19
  * projects/
16
20
  * -Users-sebastian-dev-myproject/ # mangled project root
17
- * wiki/ # project wiki
18
21
  * pinakes.db # project DB
19
22
  * audit.jsonl # project audit
20
23
  * manifest.json # project manifest
21
24
  */
25
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
22
26
  import { homedir } from 'node:os';
23
27
  import { isAbsolute, resolve } from 'node:path';
24
28
  // ---------------------------------------------------------------------------
@@ -63,6 +67,13 @@ export function projectDataDir(projectRoot) {
63
67
  return resolve(pinakesRoot(), 'projects', mangleProjectPath(abs));
64
68
  }
65
69
  export function projectWikiPath(projectRoot) {
70
+ return resolve(resolveAbs(projectRoot), '.pinakes', 'wiki');
71
+ }
72
+ /**
73
+ * Legacy wiki path (pre-v0.3): `~/.pinakes/projects/<mangled>/wiki/`.
74
+ * Used only by the migration function in serve.ts.
75
+ */
76
+ export function legacyProjectWikiPath(projectRoot) {
66
77
  return resolve(projectDataDir(projectRoot), 'wiki');
67
78
  }
68
79
  export function projectDbPath(projectRoot) {
@@ -89,6 +100,30 @@ export function personalAuditJsonlPath() {
89
100
  export function personalManifestPath() {
90
101
  return resolve(pinakesRoot(), 'manifest.json');
91
102
  }
103
+ // ---------------------------------------------------------------------------
104
+ // .gitignore auto-generation
105
+ // ---------------------------------------------------------------------------
106
+ const PINAKES_GITIGNORE_CONTENT = `# Pinakes index files — NOT committed to git
107
+ # The wiki/ directory IS committed (shared team knowledge)
108
+ pinakes.db
109
+ manifest.json
110
+ audit.jsonl
111
+ *.db-wal
112
+ *.db-shm
113
+ `;
114
+ /**
115
+ * Ensure `<projectRoot>/.pinakes/.gitignore` exists so the DB, manifest, and
116
+ * audit files are never accidentally committed. Idempotent — skips if file
117
+ * already exists.
118
+ */
119
+ export function ensurePinakesGitignore(projectRoot) {
120
+ const pinakesDir = resolve(resolveAbs(projectRoot), '.pinakes');
121
+ const gitignorePath = resolve(pinakesDir, '.gitignore');
122
+ if (existsSync(gitignorePath))
123
+ return;
124
+ mkdirSync(pinakesDir, { recursive: true });
125
+ writeFileSync(gitignorePath, PINAKES_GITIGNORE_CONTENT, 'utf-8');
126
+ }
92
127
  /**
93
128
  * Resolve the DB path for a given scope, honoring CLI overrides.
94
129
  * Shared by all CLI subcommands (status, audit, export, import, purge, etc.)
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -3,10 +3,6 @@ import { serveCommand } from './cli/serve.js';
3
3
  import { logger } from './observability/logger.js';
4
4
  function parseArgs(argv) {
5
5
  const out = {};
6
- // Legacy env support — PINAKES_WIKI_PATH still works as wiki path override
7
- if (process.env.PINAKES_WIKI_PATH) {
8
- out.wikiPath = process.env.PINAKES_WIKI_PATH;
9
- }
10
6
  for (let i = 0; i < argv.length; i++) {
11
7
  const arg = argv[i];
12
8
  if (!arg)
@@ -18,13 +14,6 @@ function parseArgs(argv) {
18
14
  else if (arg.startsWith('--project-root=')) {
19
15
  out.projectRoot = arg.slice('--project-root='.length);
20
16
  }
21
- else if (arg === '--wiki-path' && argv[i + 1]) {
22
- out.wikiPath = argv[i + 1];
23
- i++;
24
- }
25
- else if (arg.startsWith('--wiki-path=')) {
26
- out.wikiPath = arg.slice('--wiki-path='.length);
27
- }
28
17
  else if (arg === '--db-path' && argv[i + 1]) {
29
18
  out.dbPath = argv[i + 1];
30
19
  i++;
@@ -53,7 +42,6 @@ async function main() {
53
42
  const args = parseArgs(process.argv.slice(2));
54
43
  await serveCommand({
55
44
  projectRoot: args.projectRoot,
56
- wikiPath: args.wikiPath,
57
45
  dbPath: args.dbPath,
58
46
  profilePath: args.profilePath,
59
47
  profileDbPath: args.profileDbPath,
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pella-labs/pinakes",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "Local stdio MCP server that indexes a Karpathy-style two-level knowledge wiki into SQLite and exposes it to a coding LLM via Cloudflare-style code-mode.",
5
5
  "type": "module",
6
6
  "bin": {