spidersan 0.4.2 → 0.4.5

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 (59) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +73 -29
  3. package/dist/bin/spidersan.d.ts.map +1 -1
  4. package/dist/bin/spidersan.js +14 -2
  5. package/dist/bin/spidersan.js.map +1 -1
  6. package/dist/commands/auto.d.ts +8 -0
  7. package/dist/commands/auto.d.ts.map +1 -0
  8. package/dist/commands/auto.js +206 -0
  9. package/dist/commands/auto.js.map +1 -0
  10. package/dist/commands/config.d.ts +15 -0
  11. package/dist/commands/config.d.ts.map +1 -0
  12. package/dist/commands/config.js +337 -0
  13. package/dist/commands/config.js.map +1 -0
  14. package/dist/commands/conflicts.d.ts.map +1 -1
  15. package/dist/commands/conflicts.js +39 -20
  16. package/dist/commands/conflicts.js.map +1 -1
  17. package/dist/commands/ecosystem-loader.d.ts.map +1 -1
  18. package/dist/commands/ecosystem-loader.js +12 -0
  19. package/dist/commands/ecosystem-loader.js.map +1 -1
  20. package/dist/commands/index.d.ts +4 -0
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +4 -0
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/ready-check.d.ts +1 -0
  25. package/dist/commands/ready-check.d.ts.map +1 -1
  26. package/dist/commands/ready-check.js +1 -1
  27. package/dist/commands/ready-check.js.map +1 -1
  28. package/dist/commands/rebase-helper.d.ts +3 -0
  29. package/dist/commands/rebase-helper.d.ts.map +1 -0
  30. package/dist/commands/rebase-helper.js +44 -0
  31. package/dist/commands/rebase-helper.js.map +1 -0
  32. package/dist/commands/register.d.ts +1 -0
  33. package/dist/commands/register.d.ts.map +1 -1
  34. package/dist/commands/register.js +35 -2
  35. package/dist/commands/register.js.map +1 -1
  36. package/dist/commands/rescue.d.ts.map +1 -1
  37. package/dist/commands/rescue.js +28 -7
  38. package/dist/commands/rescue.js.map +1 -1
  39. package/dist/commands/torrent.js +32 -11
  40. package/dist/commands/torrent.js.map +1 -1
  41. package/dist/commands/watch.d.ts.map +1 -1
  42. package/dist/commands/watch.js +18 -5
  43. package/dist/commands/watch.js.map +1 -1
  44. package/dist/commands/welcome.d.ts +5 -0
  45. package/dist/commands/welcome.d.ts.map +1 -1
  46. package/dist/commands/welcome.js +27 -34
  47. package/dist/commands/welcome.js.map +1 -1
  48. package/dist/lib/config.d.ts +29 -0
  49. package/dist/lib/config.d.ts.map +1 -1
  50. package/dist/lib/config.js +116 -28
  51. package/dist/lib/config.js.map +1 -1
  52. package/dist/lib/security.d.ts +10 -8
  53. package/dist/lib/security.d.ts.map +1 -1
  54. package/dist/lib/security.js +26 -1
  55. package/dist/lib/security.js.map +1 -1
  56. package/dist/storage/git-messages.d.ts.map +1 -1
  57. package/dist/storage/git-messages.js +55 -53
  58. package/dist/storage/git-messages.js.map +1 -1
  59. package/package.json +4 -2
@@ -1,57 +1,51 @@
1
+ /**
2
+ * spidersan welcome
3
+ *
4
+ * Friendly onboarding and quick start for core CLI.
5
+ */
1
6
  import { Command } from 'commander';
2
7
  import { existsSync } from 'fs';
3
8
  import { join } from 'path';
4
- // ANSI color codes for terminal output
5
9
  const colors = {
6
10
  reset: '\x1b[0m',
7
11
  bright: '\x1b[1m',
8
12
  dim: '\x1b[2m',
9
- red: '\x1b[31m',
10
- green: '\x1b[32m',
11
13
  yellow: '\x1b[33m',
12
- blue: '\x1b[34m',
13
14
  magenta: '\x1b[35m',
14
15
  cyan: '\x1b[36m',
16
+ green: '\x1b[32m',
15
17
  };
16
18
  const c = colors;
17
19
  function sleep(ms) {
18
20
  return new Promise(resolve => setTimeout(resolve, ms));
19
21
  }
20
22
  async function runWelcome() {
21
- // The grand entrance
22
23
  console.log(`
23
24
  ${c.bright}${c.magenta}🕷️ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
24
25
  ${c.bright}${c.magenta} SPIDERSAN WELCOMES YOU TO THE WEB${c.reset}
25
26
  ${c.bright}${c.magenta}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
26
27
  `);
27
- await sleep(800);
28
+ await sleep(500);
28
29
  console.log(`${c.cyan} You are not alone in this codebase.${c.reset}`);
29
- await sleep(600);
30
+ await sleep(450);
30
31
  console.log(`${c.cyan} Other agents weave alongside you.${c.reset}`);
31
- await sleep(600);
32
+ await sleep(450);
32
33
  console.log(`${c.cyan} The web keeps you from colliding.${c.reset}`);
33
- await sleep(1000);
34
- console.log(`
35
- ${c.dim}┌─────────────────────────────────┐${c.reset}
36
- ${c.dim}│${c.reset} ${c.bright}${c.yellow}"Claim your threads${c.reset} ${c.dim}│${c.reset}
37
- ${c.dim}│${c.reset} ${c.bright}${c.yellow}before you weave."${c.reset} ${c.dim}│${c.reset}
38
- ${c.dim}└─────────────────────────────────┘${c.reset}
39
- `);
40
- await sleep(1200);
41
- // Check initialization status
34
+ await sleep(700);
42
35
  const initialized = existsSync(join(process.cwd(), '.spidersan', 'registry.json'));
43
36
  if (!initialized) {
44
- console.log(`${c.yellow}🕸️ FIRST TIME HERE?${c.reset}`);
45
37
  console.log(`
38
+ ${c.yellow}🕸️ FIRST TIME HERE?${c.reset}
46
39
  ${c.bright}Step 1:${c.reset} Initialize the web in your project
47
40
  ${c.green}$ spidersan init${c.reset}
48
41
  `);
49
42
  }
50
43
  else {
51
- console.log(`${c.green}✓ Web initialized in this project${c.reset}
44
+ console.log(`
45
+ ${c.green}✓ Web initialized in this project${c.reset}
52
46
  `);
53
47
  }
54
- console.log(`${c.cyan}🕸️ QUICK SETUP:${c.reset}
48
+ console.log(`${c.cyan}🕸️ QUICK START:${c.reset}
55
49
 
56
50
  ${c.bright}Register your branch:${c.reset}
57
51
  ${c.green}$ spidersan register --files "src/myfile.ts" --agent myname${c.reset}
@@ -62,24 +56,23 @@ ${c.bright}${c.magenta}━━━━━━━━━━━━━━━━━━━
62
56
  ${c.bright}When done:${c.reset}
63
57
  ${c.green}$ spidersan merged${c.reset}
64
58
  `);
65
- await sleep(800);
66
- console.log(`${c.bright}${c.blue} OR: AUTO-MODE${c.reset}
67
-
68
- Let Spidersan watch your files automatically:
69
- ${c.green}$ spidersan watch --agent myname${c.reset}
59
+ await sleep(600);
60
+ console.log(`${c.bright}${c.cyan}⚙️ CONFIG SETUP${c.reset}
70
61
 
71
- ${c.dim}Files tracked as you edit. Conflicts caught in real-time.${c.reset}
62
+ ${c.dim}Set your default agent + storage in a guided wizard:${c.reset}
63
+ ${c.green}$ spidersan config wizard${c.reset}
72
64
  `);
73
- await sleep(1000);
74
- console.log(`${c.magenta}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
75
-
76
- ${c.bright}🎬 WANT TO SEE THE WEB'S POWER?${c.reset}
77
-
78
- ${c.cyan}$ spidersan demo${c.reset}
65
+ await sleep(600);
66
+ console.log(`${c.bright}${c.cyan}⚡ AUTO-WATCH${c.reset}
79
67
 
80
- ${c.dim}Watch a simulated multi-agent conflict get caught!${c.reset}
68
+ ${c.dim}Start a background watcher from config paths:${c.reset}
69
+ ${c.green}$ spidersan auto start${c.reset}
81
70
 
82
- ${c.magenta}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
71
+ ${c.dim}Or run a foreground watcher:${c.reset}
72
+ ${c.green}$ spidersan watch --agent myname${c.reset}
73
+ `);
74
+ await sleep(600);
75
+ console.log(`${c.magenta}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
83
76
  ${c.bright}${c.magenta} The web sees all. The web protects all.${c.reset}
84
77
  ${c.bright}${c.magenta}🕷️ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${c.reset}
85
78
  `);
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,20 @@
4
4
  * Loads and validates .spidersanrc configuration file.
5
5
  */
6
6
  export interface SpidersanConfig {
7
+ ecosystem: {
8
+ enabled: boolean;
9
+ };
10
+ agent: {
11
+ name?: string;
12
+ };
13
+ autoWatch: {
14
+ enabled: boolean;
15
+ paths: string[];
16
+ hub: boolean;
17
+ hubSync: boolean;
18
+ quiet: boolean;
19
+ legacy: boolean;
20
+ };
7
21
  readyCheck: {
8
22
  enableWipDetection: boolean;
9
23
  wipPatterns: string[];
@@ -25,9 +39,24 @@ export interface SpidersanConfig {
25
39
  supabaseKeyStaging?: string;
26
40
  };
27
41
  }
42
+ export declare const CONFIG_FILES: string[];
43
+ interface ValidationError {
44
+ path: string;
45
+ message: string;
46
+ }
47
+ export declare function getConfigPaths(basePath?: string, includeGlobal?: boolean): string[];
48
+ export declare function loadConfigWithSources(basePath?: string, options?: {
49
+ includeGlobal?: boolean;
50
+ }): Promise<{
51
+ config: SpidersanConfig;
52
+ sources: string[];
53
+ errors: ValidationError[];
54
+ }>;
28
55
  export declare function loadConfig(basePath?: string): Promise<SpidersanConfig>;
56
+ export declare function deepMerge(target: any, source: any): any;
29
57
  export declare function getWipPatterns(config: SpidersanConfig): RegExp[];
30
58
  export declare function getExcludePatterns(config: SpidersanConfig): string[];
31
59
  export declare function getHighSeverityPatterns(config: SpidersanConfig): RegExp[];
32
60
  export declare function getMediumSeverityPatterns(config: SpidersanConfig): RegExp[];
61
+ export {};
33
62
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE;QACR,kBAAkB,EAAE,OAAO,CAAC;QAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,2BAA2B,EAAE,OAAO,CAAC;QACrC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,gBAAgB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE;QACP,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,sBAAsB,EAAE,MAAM,EAAE,CAAC;KACpC,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;QAC3B,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACL;AA0ED,wBAAsB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B3F;AAmBD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAEpE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAEzE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAE3E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,EAAE,OAAO,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACR,kBAAkB,EAAE,OAAO,CAAC;QAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,2BAA2B,EAAE,OAAO,CAAC;QACrC,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,gBAAgB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE;QACP,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,sBAAsB,EAAE,MAAM,EAAE,CAAC;KACpC,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;QAC3B,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACL;AAmCD,eAAO,MAAM,YAAY,UAAkE,CAAC;AAE5F,UAAU,eAAe;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAqGD,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,EAAE,aAAa,GAAE,OAAc,GAAG,MAAM,EAAE,CAUxG;AAED,wBAAsB,qBAAqB,CACvC,QAAQ,GAAE,MAAsB,EAChC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CA8BpF;AAED,wBAAsB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAO3F;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAiBvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAEpE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAEzE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,CAE3E"}
@@ -6,11 +6,26 @@
6
6
  import { readFile } from 'fs/promises';
7
7
  import { existsSync } from 'fs';
8
8
  import { join } from 'path';
9
+ import { homedir } from 'os';
9
10
  const DEFAULT_CONFIG = {
11
+ ecosystem: {
12
+ enabled: true,
13
+ },
14
+ agent: {
15
+ name: '',
16
+ },
17
+ autoWatch: {
18
+ enabled: false,
19
+ paths: [],
20
+ hub: false,
21
+ hubSync: false,
22
+ quiet: false,
23
+ legacy: false,
24
+ },
10
25
  readyCheck: {
11
26
  enableWipDetection: true,
12
27
  wipPatterns: ['TODO', 'FIXME', 'WIP', 'HACK', 'XXX'],
13
- excludeFiles: ['tests/**', '*.test.js', '*.test.ts', '*.md', '**/docs/**'],
28
+ excludeFiles: ['tests/**', '*.test.js', '*.test.ts', '*.md', '**/docs/**', '**/package-lock.json', '**/yarn.lock', '**/pnpm-lock.yaml'],
14
29
  enableExperimentalDetection: false,
15
30
  experimentalPatterns: ['experimental/', 'test-'],
16
31
  enableBuildCheck: true,
@@ -24,7 +39,7 @@ const DEFAULT_CONFIG = {
24
39
  environment: 'production',
25
40
  },
26
41
  };
27
- const CONFIG_FILES = ['.spidersanrc', '.spidersanrc.json', '.spidersan.config.json'];
42
+ export const CONFIG_FILES = ['.spidersanrc', '.spidersanrc.json', '.spidersan.config.json'];
28
43
  function validateConfig(config) {
29
44
  const errors = [];
30
45
  if (typeof config !== 'object' || config === null) {
@@ -32,6 +47,18 @@ function validateConfig(config) {
32
47
  return errors;
33
48
  }
34
49
  const obj = config;
50
+ // Validate ecosystem
51
+ if (obj.ecosystem !== undefined) {
52
+ if (typeof obj.ecosystem !== 'object' || obj.ecosystem === null) {
53
+ errors.push({ path: 'ecosystem', message: 'Must be an object' });
54
+ }
55
+ else {
56
+ const eco = obj.ecosystem;
57
+ if (eco.enabled !== undefined && typeof eco.enabled !== 'boolean') {
58
+ errors.push({ path: 'ecosystem.enabled', message: 'Must be a boolean' });
59
+ }
60
+ }
61
+ }
35
62
  // Validate readyCheck
36
63
  if (obj.readyCheck !== undefined) {
37
64
  if (typeof obj.readyCheck !== 'object' || obj.readyCheck === null) {
@@ -50,6 +77,47 @@ function validateConfig(config) {
50
77
  }
51
78
  }
52
79
  }
80
+ // Validate agent
81
+ if (obj.agent !== undefined) {
82
+ if (typeof obj.agent !== 'object' || obj.agent === null) {
83
+ errors.push({ path: 'agent', message: 'Must be an object' });
84
+ }
85
+ else {
86
+ const agent = obj.agent;
87
+ if (agent.name !== undefined && typeof agent.name !== 'string') {
88
+ errors.push({ path: 'agent.name', message: 'Must be a string' });
89
+ }
90
+ }
91
+ }
92
+ // Validate autoWatch
93
+ if (obj.autoWatch !== undefined) {
94
+ if (typeof obj.autoWatch !== 'object' || obj.autoWatch === null) {
95
+ errors.push({ path: 'autoWatch', message: 'Must be an object' });
96
+ }
97
+ else {
98
+ const aw = obj.autoWatch;
99
+ if (aw.enabled !== undefined && typeof aw.enabled !== 'boolean') {
100
+ errors.push({ path: 'autoWatch.enabled', message: 'Must be a boolean' });
101
+ }
102
+ if (aw.paths !== undefined) {
103
+ if (!Array.isArray(aw.paths) || !aw.paths.every((p) => typeof p === 'string')) {
104
+ errors.push({ path: 'autoWatch.paths', message: 'Must be an array of strings' });
105
+ }
106
+ }
107
+ if (aw.hub !== undefined && typeof aw.hub !== 'boolean') {
108
+ errors.push({ path: 'autoWatch.hub', message: 'Must be a boolean' });
109
+ }
110
+ if (aw.hubSync !== undefined && typeof aw.hubSync !== 'boolean') {
111
+ errors.push({ path: 'autoWatch.hubSync', message: 'Must be a boolean' });
112
+ }
113
+ if (aw.quiet !== undefined && typeof aw.quiet !== 'boolean') {
114
+ errors.push({ path: 'autoWatch.quiet', message: 'Must be a boolean' });
115
+ }
116
+ if (aw.legacy !== undefined && typeof aw.legacy !== 'boolean') {
117
+ errors.push({ path: 'autoWatch.legacy', message: 'Must be a boolean' });
118
+ }
119
+ }
120
+ }
53
121
  // Validate storage
54
122
  if (obj.storage !== undefined) {
55
123
  if (typeof obj.storage !== 'object' || obj.storage === null) {
@@ -67,40 +135,60 @@ function validateConfig(config) {
67
135
  }
68
136
  return errors;
69
137
  }
70
- export async function loadConfig(basePath = process.cwd()) {
71
- // Try each config file name
72
- for (const filename of CONFIG_FILES) {
73
- const configPath = join(basePath, filename);
74
- if (existsSync(configPath)) {
75
- try {
76
- const content = await readFile(configPath, 'utf-8');
77
- const userConfig = JSON.parse(content);
78
- // Validate config
79
- const errors = validateConfig(userConfig);
80
- if (errors.length > 0) {
81
- console.warn(`⚠️ Config validation warnings in ${filename}:`);
82
- errors.forEach(e => console.warn(` ${e.path}: ${e.message}`));
83
- }
84
- return deepMerge(DEFAULT_CONFIG, userConfig);
138
+ export function getConfigPaths(basePath = process.cwd(), includeGlobal = true) {
139
+ const paths = [];
140
+ if (includeGlobal) {
141
+ const home = homedir();
142
+ CONFIG_FILES.forEach((filename) => paths.push(join(home, filename)));
143
+ }
144
+ CONFIG_FILES.forEach((filename) => paths.push(join(basePath, filename)));
145
+ return paths;
146
+ }
147
+ export async function loadConfigWithSources(basePath = process.cwd(), options = {}) {
148
+ const includeGlobal = options.includeGlobal !== false;
149
+ const sources = [];
150
+ const errors = [];
151
+ let merged = DEFAULT_CONFIG;
152
+ const configPaths = getConfigPaths(basePath, includeGlobal);
153
+ for (const configPath of configPaths) {
154
+ if (!existsSync(configPath))
155
+ continue;
156
+ try {
157
+ const content = await readFile(configPath, 'utf-8');
158
+ const userConfig = JSON.parse(content);
159
+ const validationErrors = validateConfig(userConfig);
160
+ if (validationErrors.length > 0) {
161
+ errors.push(...validationErrors.map(err => ({ ...err, path: `${configPath}:${err.path || ''}`.replace(/:$/, '') })));
85
162
  }
86
- catch (error) {
87
- if (error instanceof SyntaxError) {
88
- console.error(`❌ Invalid JSON in ${filename}: ${error.message}`);
89
- console.error(' Using default configuration instead.');
90
- }
91
- else {
92
- console.warn(`Warning: Failed to read ${filename}:`, error);
93
- }
163
+ merged = deepMerge(merged, userConfig);
164
+ sources.push(configPath);
165
+ }
166
+ catch (error) {
167
+ if (error instanceof SyntaxError) {
168
+ errors.push({ path: configPath, message: `Invalid JSON: ${error.message}` });
169
+ }
170
+ else {
171
+ errors.push({ path: configPath, message: 'Failed to read config file' });
94
172
  }
95
173
  }
96
174
  }
97
- // Return defaults if no config found
98
- return DEFAULT_CONFIG;
175
+ return { config: merged, sources, errors };
176
+ }
177
+ export async function loadConfig(basePath = process.cwd()) {
178
+ const result = await loadConfigWithSources(basePath);
179
+ if (result.errors.length > 0) {
180
+ console.warn('⚠️ Config validation warnings:');
181
+ result.errors.forEach(e => console.warn(` ${e.path}: ${e.message}`));
182
+ }
183
+ return result.config;
99
184
  }
100
185
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
101
- function deepMerge(target, source) {
186
+ export function deepMerge(target, source) {
102
187
  const result = { ...target };
103
188
  for (const key in source) {
189
+ // Security: Prevent prototype pollution
190
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype')
191
+ continue;
104
192
  if (source[key] !== undefined) {
105
193
  if (typeof source[key] === 'object' && !Array.isArray(source[key]) && source[key] !== null) {
106
194
  result[key] = deepMerge(result[key] || {}, source[key]);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,3 @@
1
- /**
2
- * Spidersan Security Utilities
3
- *
4
- * Input validation and sanitization for shell command safety.
5
- * Prevents command injection attacks via agent IDs, branch names, etc.
6
- *
7
- * @module security
8
- */
9
1
  /**
10
2
  * Validate agent ID (e.g., "sherlocksan", "watsan-1", "agent_01")
11
3
  * @throws Error if invalid
@@ -50,4 +42,14 @@ export declare const sanitizeAgentId: typeof validateAgentId;
50
42
  export declare const sanitizeBranchName: typeof validateBranchName;
51
43
  export declare const sanitizeFilePath: typeof validateFilePath;
52
44
  export declare function isValidMessageId(messageId: string): boolean;
45
+ /**
46
+ * Validate that a file path resolves to a location inside the current repository.
47
+ * Prevents arbitrary file read/write vulnerabilities via path traversal or absolute paths.
48
+ *
49
+ * @param filePath The path to validate
50
+ * @param rootDir The root directory (defaults to CWD)
51
+ * @returns The resolved absolute path if valid
52
+ * @throws Error if path is outside rootDir
53
+ */
54
+ export declare function validateRepoPath(filePath: string, rootDir?: string): string;
53
55
  //# sourceMappingURL=security.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAGD,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAA;AAGD,eAAO,MAAM,eAAe,wBAAkB,CAAC;AAC/C,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AACrD,eAAO,MAAM,gBAAgB,yBAAmB,CAAC;AAIjD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAGD,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAA;AAGD,eAAO,MAAM,eAAe,wBAAkB,CAAC;AAC/C,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AACrD,eAAO,MAAM,gBAAgB,yBAAmB,CAAC;AAIjD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAsB,GAAG,MAAM,CAgB1F"}
@@ -1,3 +1,4 @@
1
+ import { resolve, relative, isAbsolute } from 'path';
1
2
  /**
2
3
  * Spidersan Security Utilities
3
4
  *
@@ -10,7 +11,8 @@
10
11
  const VALID_AGENT_ID = /^[a-z0-9][a-z0-9_-]{0,30}$/i;
11
12
  const VALID_BRANCH_NAME = /^[a-zA-Z0-9][a-zA-Z0-9/_.-]{0,99}$/;
12
13
  const VALID_TASK_ID = /^[a-z0-9][a-z0-9_-]{0,50}$/i;
13
- const VALID_FILE_PATH = /^[./a-zA-Z0-9][a-zA-Z0-9/_.@-]{0,200}$/;
14
+ // Allow spaces in file paths
15
+ const VALID_FILE_PATH = /^[./a-zA-Z0-9][a-zA-Z0-9/_.@\- ]{0,200}$/;
14
16
  // Shell metacharacters to remove from text
15
17
  const SHELL_METACHARACTERS = /[`$(){}[\]|;&<>\\]/g;
16
18
  /**
@@ -119,4 +121,27 @@ const VALID_MESSAGE_ID = /^[a-z0-9][a-z0-9_-]{0,64}$/i;
119
121
  export function isValidMessageId(messageId) {
120
122
  return typeof messageId === 'string' && VALID_MESSAGE_ID.test(messageId);
121
123
  }
124
+ /**
125
+ * Validate that a file path resolves to a location inside the current repository.
126
+ * Prevents arbitrary file read/write vulnerabilities via path traversal or absolute paths.
127
+ *
128
+ * @param filePath The path to validate
129
+ * @param rootDir The root directory (defaults to CWD)
130
+ * @returns The resolved absolute path if valid
131
+ * @throws Error if path is outside rootDir
132
+ */
133
+ export function validateRepoPath(filePath, rootDir = process.cwd()) {
134
+ if (!filePath || typeof filePath !== 'string') {
135
+ throw new Error('File path is required');
136
+ }
137
+ const resolved = resolve(rootDir, filePath);
138
+ const rel = relative(rootDir, resolved);
139
+ // Check if path is outside root (starts with ..) or is absolute (on different drive on Windows)
140
+ // Note: on Linux/Mac relative() returns relative path, on Windows it might be absolute if different drive.
141
+ // Checking isAbsolute(rel) handles the different drive case.
142
+ if (rel.startsWith('..') || isAbsolute(rel)) {
143
+ throw new Error(`Security Error: Path "${filePath}" resolves outside the repository.`);
144
+ }
145
+ return resolved;
146
+ }
122
147
  //# sourceMappingURL=security.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"git-messages.d.ts","sourceRoot":"","sources":["../../src/storage/git-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACR,qBAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACb,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,kBAAmB,YAAW,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,QAAQ,GAAE,MAAsB;IAI5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAYtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,YAAY;IAsE1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;YACW,aAAa;IAwF3B;;OAEG;YACW,cAAc;IAOtB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8CtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWtD"}
1
+ {"version":3,"file":"git-messages.d.ts","sourceRoot":"","sources":["../../src/storage/git-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EACR,qBAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACb,MAAM,sBAAsB,CAAC;AAM9B,qBAAa,kBAAmB,YAAW,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,QAAQ,GAAE,MAAsB;IAI5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAYtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;YACW,aAAa;IAqF3B;;OAEG;YACW,cAAc;IAOtB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA6CtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWtD"}