@pennyfarthing/shared 7.5.0 → 9.3.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 (82) hide show
  1. package/dist/browser.d.ts +6 -0
  2. package/dist/browser.d.ts.map +1 -0
  3. package/dist/browser.js +8 -0
  4. package/dist/browser.js.map +1 -0
  5. package/dist/generate-skill-docs.d.ts +35 -0
  6. package/dist/generate-skill-docs.d.ts.map +1 -0
  7. package/dist/generate-skill-docs.js +442 -0
  8. package/dist/generate-skill-docs.js.map +1 -0
  9. package/dist/generate-skill-docs.test.d.ts +13 -0
  10. package/dist/generate-skill-docs.test.d.ts.map +1 -0
  11. package/dist/generate-skill-docs.test.js +519 -0
  12. package/dist/generate-skill-docs.test.js.map +1 -0
  13. package/dist/index.d.ts +11 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +13 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/marker/constants.d.ts +39 -0
  18. package/dist/marker/constants.d.ts.map +1 -0
  19. package/dist/marker/constants.js +46 -0
  20. package/dist/marker/constants.js.map +1 -0
  21. package/dist/marker/continue.test.d.ts +12 -0
  22. package/dist/marker/continue.test.d.ts.map +1 -0
  23. package/dist/marker/continue.test.js +76 -0
  24. package/dist/marker/continue.test.js.map +1 -0
  25. package/dist/marker/detect.d.ts +25 -0
  26. package/dist/marker/detect.d.ts.map +1 -0
  27. package/dist/marker/detect.js +53 -0
  28. package/dist/marker/detect.js.map +1 -0
  29. package/dist/marker/detect.test.d.ts +10 -0
  30. package/dist/marker/detect.test.d.ts.map +1 -0
  31. package/dist/marker/detect.test.js +418 -0
  32. package/dist/marker/detect.test.js.map +1 -0
  33. package/dist/marker/index.d.ts +14 -0
  34. package/dist/marker/index.d.ts.map +1 -0
  35. package/dist/marker/index.js +15 -0
  36. package/dist/marker/index.js.map +1 -0
  37. package/dist/marker/strip.d.ts +26 -0
  38. package/dist/marker/strip.d.ts.map +1 -0
  39. package/dist/marker/strip.js +39 -0
  40. package/dist/marker/strip.js.map +1 -0
  41. package/dist/marker/types.d.ts +23 -0
  42. package/dist/marker/types.d.ts.map +1 -0
  43. package/dist/marker/types.js +7 -0
  44. package/dist/marker/types.js.map +1 -0
  45. package/dist/migrate-theme-schema.test.d.ts +8 -0
  46. package/dist/migrate-theme-schema.test.d.ts.map +1 -0
  47. package/dist/migrate-theme-schema.test.js +100 -0
  48. package/dist/migrate-theme-schema.test.js.map +1 -0
  49. package/dist/portrait-resolver.d.ts +32 -0
  50. package/dist/portrait-resolver.d.ts.map +1 -0
  51. package/dist/portrait-resolver.js +225 -0
  52. package/dist/portrait-resolver.js.map +1 -0
  53. package/dist/portrait-resolver.test.d.ts +2 -0
  54. package/dist/portrait-resolver.test.d.ts.map +1 -0
  55. package/dist/portrait-resolver.test.js +156 -0
  56. package/dist/portrait-resolver.test.js.map +1 -0
  57. package/dist/skill-search.d.ts +36 -0
  58. package/dist/skill-search.d.ts.map +1 -0
  59. package/dist/skill-search.js +300 -0
  60. package/dist/skill-search.js.map +1 -0
  61. package/dist/skill-search.sh +41 -0
  62. package/dist/skill-search.test.d.ts +16 -0
  63. package/dist/skill-search.test.d.ts.map +1 -0
  64. package/dist/skill-search.test.js +177 -0
  65. package/dist/skill-search.test.js.map +1 -0
  66. package/dist/skill-suggest.d.ts +76 -0
  67. package/dist/skill-suggest.d.ts.map +1 -0
  68. package/dist/skill-suggest.js +256 -0
  69. package/dist/skill-suggest.js.map +1 -0
  70. package/dist/skill-suggest.test.d.ts +12 -0
  71. package/dist/skill-suggest.test.d.ts.map +1 -0
  72. package/dist/skill-suggest.test.js +257 -0
  73. package/dist/skill-suggest.test.js.map +1 -0
  74. package/dist/theme-loader.d.ts +81 -0
  75. package/dist/theme-loader.d.ts.map +1 -0
  76. package/dist/theme-loader.js +491 -0
  77. package/dist/theme-loader.js.map +1 -0
  78. package/dist/theme-loader.test.d.ts +8 -0
  79. package/dist/theme-loader.test.d.ts.map +1 -0
  80. package/dist/theme-loader.test.js +62 -0
  81. package/dist/theme-loader.test.js.map +1 -0
  82. package/package.json +14 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.test.js","sourceRoot":"","sources":["../../src/marker/detect.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Marker Module - Shared marker parsing for Reflector protocol
3
+ *
4
+ * This module consolidates marker detection/stripping logic used by:
5
+ * - Cyclist terminal (quick-actions.js)
6
+ * - VS Code extension (reflector.ts)
7
+ *
8
+ * @see docs/adr/0011-reflector-marker-consolidation.md
9
+ */
10
+ export { type MarkerType, type Marker } from './types.js';
11
+ export { MARKER_PATTERN, MARKER_TYPES, VALID_MARKER_TYPES } from './constants.js';
12
+ export { stripCodeBlocks, stripMarkers } from './strip.js';
13
+ export { detectMarkers } from './detect.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/marker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGlF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Marker Module - Shared marker parsing for Reflector protocol
3
+ *
4
+ * This module consolidates marker detection/stripping logic used by:
5
+ * - Cyclist terminal (quick-actions.js)
6
+ * - VS Code extension (reflector.ts)
7
+ *
8
+ * @see docs/adr/0011-reflector-marker-consolidation.md
9
+ */
10
+ // Constants
11
+ export { MARKER_PATTERN, MARKER_TYPES, VALID_MARKER_TYPES } from './constants.js';
12
+ // Functions
13
+ export { stripCodeBlocks, stripMarkers } from './strip.js';
14
+ export { detectMarkers } from './detect.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/marker/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAElF,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Strip functions for the Reflector marker system.
3
+ *
4
+ * @see docs/adr/0011-reflector-marker-consolidation.md
5
+ */
6
+ /**
7
+ * Strip fenced code blocks from text.
8
+ *
9
+ * Used before marker detection to ensure markers inside code blocks
10
+ * are not processed as actual markers.
11
+ *
12
+ * @param text - Text potentially containing fenced code blocks
13
+ * @returns Text with code blocks removed
14
+ */
15
+ export declare function stripCodeBlocks(text: string): string;
16
+ /**
17
+ * Strip CYCLIST markers from text for display.
18
+ *
19
+ * Removes all CYCLIST markers while preserving surrounding text.
20
+ * Useful for cleaning agent output before displaying to users.
21
+ *
22
+ * @param text - Text containing markers
23
+ * @returns Text with markers removed
24
+ */
25
+ export declare function stripMarkers(text: string): string;
26
+ //# sourceMappingURL=strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/marker/strip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Strip functions for the Reflector marker system.
3
+ *
4
+ * @see docs/adr/0011-reflector-marker-consolidation.md
5
+ */
6
+ import { MARKER_PATTERN } from './constants.js';
7
+ /**
8
+ * Strip fenced code blocks from text.
9
+ *
10
+ * Used before marker detection to ensure markers inside code blocks
11
+ * are not processed as actual markers.
12
+ *
13
+ * @param text - Text potentially containing fenced code blocks
14
+ * @returns Text with code blocks removed
15
+ */
16
+ export function stripCodeBlocks(text) {
17
+ if (!text) {
18
+ return '';
19
+ }
20
+ return text.replace(/```[\s\S]*?```/g, '');
21
+ }
22
+ /**
23
+ * Strip CYCLIST markers from text for display.
24
+ *
25
+ * Removes all CYCLIST markers while preserving surrounding text.
26
+ * Useful for cleaning agent output before displaying to users.
27
+ *
28
+ * @param text - Text containing markers
29
+ * @returns Text with markers removed
30
+ */
31
+ export function stripMarkers(text) {
32
+ if (!text) {
33
+ return '';
34
+ }
35
+ // Reset lastIndex since MARKER_PATTERN is global
36
+ MARKER_PATTERN.lastIndex = 0;
37
+ return text.replace(MARKER_PATTERN, '').trim();
38
+ }
39
+ //# sourceMappingURL=strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip.js","sourceRoot":"","sources":["../../src/marker/strip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,iDAAiD;IACjD,cAAc,CAAC,SAAS,GAAG,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Type definitions for the Reflector marker system.
3
+ *
4
+ * @see docs/adr/0011-reflector-marker-consolidation.md
5
+ */
6
+ /**
7
+ * Marker types supported by the Reflector protocol.
8
+ * These map to UI actions in Cyclist and VS Code extension.
9
+ */
10
+ export type MarkerType = 'handoff' | 'context_clear' | 'invoke' | 'question' | 'choices' | 'continue';
11
+ /**
12
+ * Parsed marker from agent output.
13
+ *
14
+ * @property type - The marker type (normalized to lowercase)
15
+ * @property value - The marker value (case preserved)
16
+ * @property source - Optional source identifier (always 'structured_marker' when detected)
17
+ */
18
+ export interface Marker {
19
+ type: MarkerType;
20
+ value: string;
21
+ source?: 'structured_marker';
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/marker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,eAAe,GACf,QAAQ,GACR,UAAU,GACV,SAAS,GACT,UAAU,CAAC;AAEf;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Type definitions for the Reflector marker system.
3
+ *
4
+ * @see docs/adr/0011-reflector-marker-consolidation.md
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/marker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Theme Schema Migration Tests - MSSCI-12478
3
+ *
4
+ * Tests for the migration script that consolidates quote into catchphrases.
5
+ * RED STATE: These tests should FAIL until implementation is complete.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=migrate-theme-schema.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-theme-schema.test.d.ts","sourceRoot":"","sources":["../src/migrate-theme-schema.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Theme Schema Migration Tests - MSSCI-12478
3
+ *
4
+ * Tests for the migration script that consolidates quote into catchphrases.
5
+ * RED STATE: These tests should FAIL until implementation is complete.
6
+ */
7
+ import { describe, it, before } from 'node:test';
8
+ import assert from 'node:assert';
9
+ import { readFileSync, readdirSync, existsSync } from 'node:fs';
10
+ import { join, dirname } from 'node:path';
11
+ import { fileURLToPath } from 'node:url';
12
+ import { discoverAllThemeDirs } from './theme-loader.js';
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+ describe('MSSCI-12478: Theme YAML Migration', () => {
16
+ let allThemeFiles;
17
+ before(() => {
18
+ // Discover all theme directories (core + theme packages + custom)
19
+ const themeDirs = discoverAllThemeDirs();
20
+ const seen = new Set();
21
+ allThemeFiles = [];
22
+ for (const dir of themeDirs) {
23
+ if (!existsSync(dir))
24
+ continue;
25
+ const files = readdirSync(dir).filter(f => f.endsWith('.yaml'));
26
+ for (const file of files) {
27
+ if (!seen.has(file)) {
28
+ seen.add(file);
29
+ allThemeFiles.push({ file, dir });
30
+ }
31
+ }
32
+ }
33
+ });
34
+ describe('AC2: All themes updated', () => {
35
+ it('should have themes across all discovered sources', () => {
36
+ assert.ok(allThemeFiles.length > 0, 'Should discover at least one theme');
37
+ });
38
+ it('no theme file should contain quote: field under agents', () => {
39
+ const themesWithQuote = [];
40
+ for (const { file, dir } of allThemeFiles) {
41
+ const content = readFileSync(join(dir, file), 'utf-8');
42
+ // Check for quote: at 4-space indent (under agent definition)
43
+ if (/^ {4}quote:/m.test(content)) {
44
+ themesWithQuote.push(file);
45
+ }
46
+ }
47
+ assert.strictEqual(themesWithQuote.length, 0, `These themes still have quote field: ${themesWithQuote.slice(0, 5).join(', ')}${themesWithQuote.length > 5 ? ` and ${themesWithQuote.length - 5} more` : ''}`);
48
+ });
49
+ it('every theme should have catchphrases array for each agent', () => {
50
+ const themesWithMissingCatchphrases = [];
51
+ for (const { file, dir } of allThemeFiles) {
52
+ // Skip control.yaml which is a special baseline theme
53
+ if (file === 'control.yaml')
54
+ continue;
55
+ const content = readFileSync(join(dir, file), 'utf-8');
56
+ // Count catchphrases section markers (10 agents expected)
57
+ const catchphrasesMatches = content.match(/^ {4}catchphrases:/gm);
58
+ if (!catchphrasesMatches || catchphrasesMatches.length < 10) {
59
+ themesWithMissingCatchphrases.push(file);
60
+ }
61
+ }
62
+ assert.strictEqual(themesWithMissingCatchphrases.length, 0, `These themes have missing catchphrases: ${themesWithMissingCatchphrases.slice(0, 5).join(', ')}${themesWithMissingCatchphrases.length > 5 ? ` and ${themesWithMissingCatchphrases.length - 5} more` : ''}`);
63
+ });
64
+ });
65
+ describe('AC1: Migration preserves original quote in catchphrases', () => {
66
+ // These tests use resolveThemePath so they work regardless of which package
67
+ // the theme lives in.
68
+ it('the-expanse orchestrator catchphrases should contain original quote', () => {
69
+ const themeDirs = discoverAllThemeDirs();
70
+ let content = null;
71
+ for (const dir of themeDirs) {
72
+ const p = join(dir, 'the-expanse.yaml');
73
+ if (existsSync(p)) {
74
+ content = readFileSync(p, 'utf-8');
75
+ break;
76
+ }
77
+ }
78
+ assert.ok(content, 'the-expanse.yaml should be discoverable');
79
+ // Original quote was: "Doors and corners, kid. That's where they get you."
80
+ // This should now be in the catchphrases array
81
+ assert.ok(content.includes("Doors and corners, kid. That's where they get you."), 'Quote should still be present in file');
82
+ assert.ok(/catchphrases:[\s\S]*?Doors and corners/.test(content), 'Quote should be within catchphrases array, not as separate quote field');
83
+ });
84
+ it('star-trek-tng picard catchphrases should contain original quote', () => {
85
+ const themeDirs = discoverAllThemeDirs();
86
+ let content = null;
87
+ for (const dir of themeDirs) {
88
+ const p = join(dir, 'star-trek-tng.yaml');
89
+ if (existsSync(p)) {
90
+ content = readFileSync(p, 'utf-8');
91
+ break;
92
+ }
93
+ }
94
+ assert.ok(content, 'star-trek-tng.yaml should be discoverable');
95
+ // Picard's famous quote should be in catchphrases
96
+ assert.ok(/catchphrases:[\s\S]*?(Make it so|Engage)/.test(content), 'Picard quote should be within catchphrases array');
97
+ });
98
+ });
99
+ });
100
+ //# sourceMappingURL=migrate-theme-schema.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-theme-schema.test.js","sourceRoot":"","sources":["../src/migrate-theme-schema.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Portrait Resolver - Smart path resolution for Pennyfarthing portraits
3
+ *
4
+ * Checks paths in priority order:
5
+ * 1. PENNYFARTHING_DIST env var (explicit override)
6
+ * 2. Monorepo root (pennyfarthing-dist/ at repo root for dogfooding)
7
+ * 3. Sibling directory (for dev scenarios)
8
+ * 4. Scoped npm (node_modules/@pennyfarthing/core/pennyfarthing-dist/)
9
+ * 5. Legacy npm (node_modules/pennyfarthing/pennyfarthing-dist/)
10
+ */
11
+ export interface PortraitPaths {
12
+ portraitsDir: string;
13
+ themesDir: string;
14
+ agentsDir: string;
15
+ }
16
+ /**
17
+ * Resolve the pennyfarthing-dist directory path
18
+ * Checks multiple locations in priority order
19
+ */
20
+ export declare function resolvePennyfarthingDist(): string | null;
21
+ /**
22
+ * Resolve the full path to a portrait image
23
+ * @param theme - Theme name (e.g., 'shakespeare', 'norse-mythology')
24
+ * @param agent - Agent name (e.g., 'sm', 'tea', 'dev')
25
+ * @returns Full path to portrait file, or null if not found
26
+ */
27
+ export declare function resolvePortraitPath(theme: string, agent: string): string | null;
28
+ /**
29
+ * Get all portrait-related paths for a resolved dist directory
30
+ */
31
+ export declare function getPortraitPaths(distPath: string): PortraitPaths;
32
+ //# sourceMappingURL=portrait-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portrait-resolver.d.ts","sourceRoot":"","sources":["../src/portrait-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAgDxD;AA8HD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAShE"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Portrait Resolver - Smart path resolution for Pennyfarthing portraits
3
+ *
4
+ * Checks paths in priority order:
5
+ * 1. PENNYFARTHING_DIST env var (explicit override)
6
+ * 2. Monorepo root (pennyfarthing-dist/ at repo root for dogfooding)
7
+ * 3. Sibling directory (for dev scenarios)
8
+ * 4. Scoped npm (node_modules/@pennyfarthing/core/pennyfarthing-dist/)
9
+ * 5. Legacy npm (node_modules/pennyfarthing/pennyfarthing-dist/)
10
+ */
11
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
12
+ import { join, dirname, resolve } from 'node:path';
13
+ import { fileURLToPath } from 'node:url';
14
+ // Get the directory where this module is located
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ /**
18
+ * Resolve the pennyfarthing-dist directory path
19
+ * Checks multiple locations in priority order
20
+ */
21
+ export function resolvePennyfarthingDist() {
22
+ // 1. PENNYFARTHING_DIST env var (explicit override)
23
+ const envPath = process.env.PENNYFARTHING_DIST;
24
+ if (envPath) {
25
+ if (existsSync(envPath)) {
26
+ return envPath;
27
+ }
28
+ // Env var set but path doesn't exist - fall through to other checks
29
+ }
30
+ // 2. Monorepo root (pennyfarthing-dist/ at repo root for dogfooding)
31
+ // Walk up from current directory looking for pennyfarthing-dist/
32
+ let currentDir = __dirname;
33
+ for (let i = 0; i < 10; i++) {
34
+ const monorepoPath = join(currentDir, 'pennyfarthing-dist');
35
+ if (existsSync(monorepoPath)) {
36
+ return monorepoPath;
37
+ }
38
+ const parentDir = dirname(currentDir);
39
+ if (parentDir === currentDir)
40
+ break; // Reached root
41
+ currentDir = parentDir;
42
+ }
43
+ // 3. Sibling directory (for dev scenarios)
44
+ // Check ../pennyfarthing-dist, ../../pennyfarthing-dist from module location
45
+ currentDir = __dirname;
46
+ for (let i = 0; i < 5; i++) {
47
+ currentDir = dirname(currentDir);
48
+ const siblingPath = join(currentDir, 'pennyfarthing-dist');
49
+ if (existsSync(siblingPath)) {
50
+ return siblingPath;
51
+ }
52
+ }
53
+ // 4. Scoped npm (node_modules/@pennyfarthing/core/pennyfarthing-dist/)
54
+ const scopedNpmPath = resolve(__dirname, '..', '..', '..', '@pennyfarthing', 'core', 'pennyfarthing-dist');
55
+ if (existsSync(scopedNpmPath)) {
56
+ return scopedNpmPath;
57
+ }
58
+ // 5. Legacy npm (node_modules/pennyfarthing/pennyfarthing-dist/)
59
+ const legacyNpmPath = resolve(__dirname, '..', '..', '..', 'pennyfarthing', 'pennyfarthing-dist');
60
+ if (existsSync(legacyNpmPath)) {
61
+ return legacyNpmPath;
62
+ }
63
+ // No valid path found
64
+ return null;
65
+ }
66
+ /**
67
+ * Find portrait in a specific theme directory.
68
+ * Shared logic for both core and theme package portrait resolution.
69
+ */
70
+ function findPortraitInDir(portraitsThemeDir, agent) {
71
+ if (!existsSync(portraitsThemeDir)) {
72
+ return null;
73
+ }
74
+ try {
75
+ // Check size subdirectories in preference order
76
+ const sizeDirectories = ['large', 'medium', 'small', 'original'];
77
+ let files = [];
78
+ let searchDir = portraitsThemeDir;
79
+ for (const sizeDir of sizeDirectories) {
80
+ const sizedPath = join(portraitsThemeDir, sizeDir);
81
+ if (existsSync(sizedPath)) {
82
+ files = readdirSync(sizedPath);
83
+ searchDir = sizedPath;
84
+ break;
85
+ }
86
+ }
87
+ // Fallback to root directory if no size subdirectories
88
+ if (files.length === 0) {
89
+ files = readdirSync(portraitsThemeDir);
90
+ searchDir = portraitsThemeDir;
91
+ }
92
+ // Map agent names to portrait file prefixes based on theme conventions
93
+ const agentMappings = {
94
+ 'sm': ['prospero', 'baldur', 'face', 'faceman', 'sm'],
95
+ 'tea': ['hamlet', 'tyr', 'murdock', 'tea'],
96
+ 'dev': ['puck', 'loki', 'ba', 'dev'],
97
+ 'reviewer': ['portia', 'heimdall', 'lynch', 'decker', 'reviewer'],
98
+ 'architect': ['oberon', 'mimir', 'hannibal', 'architect'],
99
+ 'pm': ['henry', 'thor', 'amy', 'pm'],
100
+ 'tech-writer': ['horatio', 'bragi', 'tech-writer'],
101
+ 'ux-designer': ['viola', 'idunn', 'ux-designer'],
102
+ 'devops': ['caliban', 'norns', 'devops'],
103
+ 'orchestrator': ['chorus', 'odin', 'orchestrator'],
104
+ };
105
+ const possiblePrefixes = agentMappings[agent] || [agent];
106
+ for (const file of files) {
107
+ for (const prefix of possiblePrefixes) {
108
+ if (file.toLowerCase().startsWith(prefix.toLowerCase()) &&
109
+ (file.endsWith('.png') || file.endsWith('.jpg'))) {
110
+ return join(searchDir, file);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ return null;
119
+ }
120
+ /**
121
+ * Discover theme package portrait directories.
122
+ * Inlined here to avoid circular dependency with theme-loader.ts.
123
+ */
124
+ function discoverThemePackagePortraitDirs() {
125
+ const results = [];
126
+ let currentDir = process.cwd();
127
+ // Check node_modules/@pennyfarthing/themes-*
128
+ for (let i = 0; i < 10; i++) {
129
+ const nmPfDir = join(currentDir, 'node_modules', '@pennyfarthing');
130
+ if (existsSync(nmPfDir)) {
131
+ try {
132
+ for (const entry of readdirSync(nmPfDir)) {
133
+ if (!entry.startsWith('themes-'))
134
+ continue;
135
+ const pkgJsonPath = join(nmPfDir, entry, 'package.json');
136
+ if (!existsSync(pkgJsonPath))
137
+ continue;
138
+ try {
139
+ const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
140
+ if (pkgJson['pennyfarthing-theme-pack'] === true) {
141
+ results.push({ portraitsDir: join(nmPfDir, entry, 'portraits') });
142
+ }
143
+ }
144
+ catch { /* skip */ }
145
+ }
146
+ }
147
+ catch { /* skip */ }
148
+ break;
149
+ }
150
+ const parentDir = dirname(currentDir);
151
+ if (parentDir === currentDir)
152
+ break;
153
+ currentDir = parentDir;
154
+ }
155
+ // Check monorepo packages/themes-*
156
+ currentDir = process.cwd();
157
+ for (let i = 0; i < 10; i++) {
158
+ const packagesDir = join(currentDir, 'packages');
159
+ if (existsSync(packagesDir)) {
160
+ try {
161
+ for (const entry of readdirSync(packagesDir)) {
162
+ if (!entry.startsWith('themes-'))
163
+ continue;
164
+ const pkgJsonPath = join(packagesDir, entry, 'package.json');
165
+ if (!existsSync(pkgJsonPath))
166
+ continue;
167
+ try {
168
+ const pkgJson = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
169
+ if (pkgJson['pennyfarthing-theme-pack'] === true) {
170
+ const portraitsDir = join(packagesDir, entry, 'portraits');
171
+ if (!results.some(r => r.portraitsDir === portraitsDir)) {
172
+ results.push({ portraitsDir });
173
+ }
174
+ }
175
+ }
176
+ catch { /* skip */ }
177
+ }
178
+ }
179
+ catch { /* skip */ }
180
+ break;
181
+ }
182
+ const parentDir = dirname(currentDir);
183
+ if (parentDir === currentDir)
184
+ break;
185
+ currentDir = parentDir;
186
+ }
187
+ return results;
188
+ }
189
+ /**
190
+ * Resolve the full path to a portrait image
191
+ * @param theme - Theme name (e.g., 'shakespeare', 'norse-mythology')
192
+ * @param agent - Agent name (e.g., 'sm', 'tea', 'dev')
193
+ * @returns Full path to portrait file, or null if not found
194
+ */
195
+ export function resolvePortraitPath(theme, agent) {
196
+ // 1. Check core portraits
197
+ const distPath = resolvePennyfarthingDist();
198
+ if (distPath) {
199
+ const paths = getPortraitPaths(distPath);
200
+ const coreResult = findPortraitInDir(join(paths.portraitsDir, theme), agent);
201
+ if (coreResult)
202
+ return coreResult;
203
+ }
204
+ // 2. Check theme package portraits
205
+ const themePackages = discoverThemePackagePortraitDirs();
206
+ for (const pkg of themePackages) {
207
+ const pkgResult = findPortraitInDir(join(pkg.portraitsDir, theme), agent);
208
+ if (pkgResult)
209
+ return pkgResult;
210
+ }
211
+ return null;
212
+ }
213
+ /**
214
+ * Get all portrait-related paths for a resolved dist directory
215
+ */
216
+ export function getPortraitPaths(distPath) {
217
+ // Normalize path to remove trailing slashes
218
+ const normalizedPath = distPath.replace(/\/+$/, '');
219
+ return {
220
+ portraitsDir: join(normalizedPath, 'personas', 'portraits'),
221
+ themesDir: join(normalizedPath, 'personas'),
222
+ agentsDir: join(normalizedPath, 'agents'),
223
+ };
224
+ }
225
+ //# sourceMappingURL=portrait-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portrait-resolver.js","sourceRoot":"","sources":["../src/portrait-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=portrait-resolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portrait-resolver.test.d.ts","sourceRoot":"","sources":["../src/portrait-resolver.test.ts"],"names":[],"mappings":""}