@promptwheel/core 0.6.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 (169) hide show
  1. package/dist/codebase-index/index.d.ts +23 -0
  2. package/dist/codebase-index/index.d.ts.map +1 -0
  3. package/dist/codebase-index/index.js +361 -0
  4. package/dist/codebase-index/index.js.map +1 -0
  5. package/dist/codebase-index/shared.d.ts +95 -0
  6. package/dist/codebase-index/shared.d.ts.map +1 -0
  7. package/dist/codebase-index/shared.js +319 -0
  8. package/dist/codebase-index/shared.js.map +1 -0
  9. package/dist/config/defaults.d.ts +45 -0
  10. package/dist/config/defaults.d.ts.map +1 -0
  11. package/dist/config/defaults.js +79 -0
  12. package/dist/config/defaults.js.map +1 -0
  13. package/dist/critic/shared.d.ts +49 -0
  14. package/dist/critic/shared.d.ts.map +1 -0
  15. package/dist/critic/shared.js +204 -0
  16. package/dist/critic/shared.js.map +1 -0
  17. package/dist/db/adapter.d.ts +191 -0
  18. package/dist/db/adapter.d.ts.map +1 -0
  19. package/dist/db/adapter.js +40 -0
  20. package/dist/db/adapter.js.map +1 -0
  21. package/dist/db/contract.d.ts +47 -0
  22. package/dist/db/contract.d.ts.map +1 -0
  23. package/dist/db/contract.js +258 -0
  24. package/dist/db/contract.js.map +1 -0
  25. package/dist/db/index.d.ts +6 -0
  26. package/dist/db/index.d.ts.map +1 -0
  27. package/dist/db/index.js +7 -0
  28. package/dist/db/index.js.map +1 -0
  29. package/dist/dedup/shared.d.ts +82 -0
  30. package/dist/dedup/shared.d.ts.map +1 -0
  31. package/dist/dedup/shared.js +215 -0
  32. package/dist/dedup/shared.js.map +1 -0
  33. package/dist/exec/index.d.ts +5 -0
  34. package/dist/exec/index.d.ts.map +1 -0
  35. package/dist/exec/index.js +5 -0
  36. package/dist/exec/index.js.map +1 -0
  37. package/dist/exec/types.d.ts +64 -0
  38. package/dist/exec/types.d.ts.map +1 -0
  39. package/dist/exec/types.js +8 -0
  40. package/dist/exec/types.js.map +1 -0
  41. package/dist/formulas/shared.d.ts +42 -0
  42. package/dist/formulas/shared.d.ts.map +1 -0
  43. package/dist/formulas/shared.js +204 -0
  44. package/dist/formulas/shared.js.map +1 -0
  45. package/dist/guidelines/shared.d.ts +46 -0
  46. package/dist/guidelines/shared.d.ts.map +1 -0
  47. package/dist/guidelines/shared.js +128 -0
  48. package/dist/guidelines/shared.js.map +1 -0
  49. package/dist/index.d.ts +35 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +51 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/learnings/shared.d.ts +112 -0
  54. package/dist/learnings/shared.d.ts.map +1 -0
  55. package/dist/learnings/shared.js +402 -0
  56. package/dist/learnings/shared.js.map +1 -0
  57. package/dist/proposals/shared.d.ts +137 -0
  58. package/dist/proposals/shared.d.ts.map +1 -0
  59. package/dist/proposals/shared.js +254 -0
  60. package/dist/proposals/shared.js.map +1 -0
  61. package/dist/repos/index.d.ts +15 -0
  62. package/dist/repos/index.d.ts.map +1 -0
  63. package/dist/repos/index.js +11 -0
  64. package/dist/repos/index.js.map +1 -0
  65. package/dist/repos/projects.d.ts +41 -0
  66. package/dist/repos/projects.d.ts.map +1 -0
  67. package/dist/repos/projects.js +75 -0
  68. package/dist/repos/projects.js.map +1 -0
  69. package/dist/repos/run_steps.d.ts +152 -0
  70. package/dist/repos/run_steps.d.ts.map +1 -0
  71. package/dist/repos/run_steps.js +328 -0
  72. package/dist/repos/run_steps.js.map +1 -0
  73. package/dist/repos/runs.d.ts +92 -0
  74. package/dist/repos/runs.d.ts.map +1 -0
  75. package/dist/repos/runs.js +185 -0
  76. package/dist/repos/runs.js.map +1 -0
  77. package/dist/repos/tickets.d.ts +71 -0
  78. package/dist/repos/tickets.d.ts.map +1 -0
  79. package/dist/repos/tickets.js +158 -0
  80. package/dist/repos/tickets.js.map +1 -0
  81. package/dist/scope/shared.d.ts +67 -0
  82. package/dist/scope/shared.d.ts.map +1 -0
  83. package/dist/scope/shared.js +355 -0
  84. package/dist/scope/shared.js.map +1 -0
  85. package/dist/scout/index.d.ts +18 -0
  86. package/dist/scout/index.d.ts.map +1 -0
  87. package/dist/scout/index.js +445 -0
  88. package/dist/scout/index.js.map +1 -0
  89. package/dist/scout/kimi-runner.d.ts +21 -0
  90. package/dist/scout/kimi-runner.d.ts.map +1 -0
  91. package/dist/scout/kimi-runner.js +76 -0
  92. package/dist/scout/kimi-runner.js.map +1 -0
  93. package/dist/scout/mcp-batch-server.d.ts +37 -0
  94. package/dist/scout/mcp-batch-server.d.ts.map +1 -0
  95. package/dist/scout/mcp-batch-server.js +144 -0
  96. package/dist/scout/mcp-batch-server.js.map +1 -0
  97. package/dist/scout/openai-local-runner.d.ts +20 -0
  98. package/dist/scout/openai-local-runner.d.ts.map +1 -0
  99. package/dist/scout/openai-local-runner.js +82 -0
  100. package/dist/scout/openai-local-runner.js.map +1 -0
  101. package/dist/scout/prompt.d.ts +49 -0
  102. package/dist/scout/prompt.d.ts.map +1 -0
  103. package/dist/scout/prompt.js +153 -0
  104. package/dist/scout/prompt.js.map +1 -0
  105. package/dist/scout/runner.d.ts +101 -0
  106. package/dist/scout/runner.d.ts.map +1 -0
  107. package/dist/scout/runner.js +521 -0
  108. package/dist/scout/runner.js.map +1 -0
  109. package/dist/scout/scanner.d.ts +61 -0
  110. package/dist/scout/scanner.d.ts.map +1 -0
  111. package/dist/scout/scanner.js +315 -0
  112. package/dist/scout/scanner.js.map +1 -0
  113. package/dist/scout/types.d.ts +221 -0
  114. package/dist/scout/types.d.ts.map +1 -0
  115. package/dist/scout/types.js +44 -0
  116. package/dist/scout/types.js.map +1 -0
  117. package/dist/sectors/shared.d.ts +146 -0
  118. package/dist/sectors/shared.d.ts.map +1 -0
  119. package/dist/sectors/shared.js +408 -0
  120. package/dist/sectors/shared.js.map +1 -0
  121. package/dist/services/index.d.ts +10 -0
  122. package/dist/services/index.d.ts.map +1 -0
  123. package/dist/services/index.js +9 -0
  124. package/dist/services/index.js.map +1 -0
  125. package/dist/services/qa.d.ts +76 -0
  126. package/dist/services/qa.d.ts.map +1 -0
  127. package/dist/services/qa.js +228 -0
  128. package/dist/services/qa.js.map +1 -0
  129. package/dist/services/scout.d.ts +164 -0
  130. package/dist/services/scout.d.ts.map +1 -0
  131. package/dist/services/scout.js +215 -0
  132. package/dist/services/scout.js.map +1 -0
  133. package/dist/spindle/shared.d.ts +14 -0
  134. package/dist/spindle/shared.d.ts.map +1 -0
  135. package/dist/spindle/shared.js +65 -0
  136. package/dist/spindle/shared.js.map +1 -0
  137. package/dist/tools/shared.d.ts +35 -0
  138. package/dist/tools/shared.d.ts.map +1 -0
  139. package/dist/tools/shared.js +247 -0
  140. package/dist/tools/shared.js.map +1 -0
  141. package/dist/trace/shared.d.ts +147 -0
  142. package/dist/trace/shared.d.ts.map +1 -0
  143. package/dist/trace/shared.js +414 -0
  144. package/dist/trace/shared.js.map +1 -0
  145. package/dist/trajectory/shared.d.ts +69 -0
  146. package/dist/trajectory/shared.d.ts.map +1 -0
  147. package/dist/trajectory/shared.js +336 -0
  148. package/dist/trajectory/shared.js.map +1 -0
  149. package/dist/utils/id.d.ts +12 -0
  150. package/dist/utils/id.d.ts.map +1 -0
  151. package/dist/utils/id.js +24 -0
  152. package/dist/utils/id.js.map +1 -0
  153. package/dist/utils/id.test.d.ts +5 -0
  154. package/dist/utils/id.test.d.ts.map +1 -0
  155. package/dist/utils/id.test.js +173 -0
  156. package/dist/utils/id.test.js.map +1 -0
  157. package/dist/utils/index.d.ts +6 -0
  158. package/dist/utils/index.d.ts.map +1 -0
  159. package/dist/utils/index.js +6 -0
  160. package/dist/utils/index.js.map +1 -0
  161. package/dist/utils/json.d.ts +9 -0
  162. package/dist/utils/json.d.ts.map +1 -0
  163. package/dist/utils/json.js +19 -0
  164. package/dist/utils/json.js.map +1 -0
  165. package/dist/waves/shared.d.ts +106 -0
  166. package/dist/waves/shared.d.ts.map +1 -0
  167. package/dist/waves/shared.js +356 -0
  168. package/dist/waves/shared.js.map +1 -0
  169. package/package.json +126 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * ExecRunner types - Interface for command execution
3
+ *
4
+ * Core contains only the interface/types.
5
+ * Node implementation lives in packages/cli.
6
+ */
7
+ export type ExecStatus = 'success' | 'failed' | 'timeout' | 'canceled';
8
+ export interface ExecOutput {
9
+ /** Path intended to be stored in DB (usually repo-relative) */
10
+ path: string;
11
+ /** Absolute path for immediate file access */
12
+ absPath: string;
13
+ /** Bytes written to artifact file (capped by maxLogBytes) */
14
+ bytes: number;
15
+ /** Whether output exceeded maxLogBytes (file is truncated) */
16
+ truncated: boolean;
17
+ /** Tail of output (last tailBytes), derived from full stream even if truncated */
18
+ tail: string;
19
+ }
20
+ export interface ExecSpec {
21
+ cmd: string;
22
+ cwd?: string;
23
+ env?: Record<string, string | undefined>;
24
+ /** Defaults to true (runs through shell). */
25
+ shell?: boolean;
26
+ /** Timeout for the process. If hit -> kill -> status=timeout. */
27
+ timeoutMs?: number;
28
+ /** Optional cancellation. If aborted -> kill -> status=canceled. */
29
+ signal?: AbortSignal;
30
+ /**
31
+ * Artifact config.
32
+ * artifactsDir can be repo-relative (recommended) or absolute.
33
+ */
34
+ repoRoot: string;
35
+ artifactsDir: string;
36
+ runId: string;
37
+ attempt: number;
38
+ stepName: string;
39
+ ordinal: number;
40
+ /** Cap bytes written to disk per stream (stdout/stderr). */
41
+ maxLogBytes?: number;
42
+ /** Tail buffer size in bytes per stream. */
43
+ tailBytes?: number;
44
+ /** Optional live hooks (useful later for TUI/streaming). */
45
+ onStdoutChunk?: (chunk: Buffer) => void;
46
+ onStderrChunk?: (chunk: Buffer) => void;
47
+ }
48
+ export interface ExecResult {
49
+ status: ExecStatus;
50
+ exitCode: number | null;
51
+ signal: string | null;
52
+ /** Runner/system failure (spawn error, timeout msg, stream write error, etc.) */
53
+ errorMessage?: string;
54
+ pid: number | null;
55
+ startedAtMs: number;
56
+ endedAtMs: number;
57
+ durationMs: number;
58
+ stdout: ExecOutput;
59
+ stderr: ExecOutput;
60
+ }
61
+ export interface ExecRunner {
62
+ run(spec: ExecSpec): Promise<ExecResult>;
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/exec/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAEzC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IAErB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAEhB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1C"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ExecRunner types - Interface for command execution
3
+ *
4
+ * Core contains only the interface/types.
5
+ * Node implementation lives in packages/cli.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/exec/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pure formula algorithms — no filesystem.
3
+ *
4
+ * Shared by both @promptwheel/cli and @promptwheel/mcp.
5
+ * Callers handle file I/O (reading YAML files from .promptwheel/formulas/).
6
+ */
7
+ export interface Formula {
8
+ name: string;
9
+ version?: number;
10
+ description: string;
11
+ scope?: string;
12
+ categories?: string[];
13
+ minConfidence?: number;
14
+ min_confidence?: number;
15
+ prompt?: string;
16
+ maxPrs?: number;
17
+ max_prs?: number;
18
+ maxTime?: string;
19
+ model?: string;
20
+ risk_tolerance?: 'low' | 'medium' | 'high';
21
+ focusAreas?: string[];
22
+ exclude?: string[];
23
+ useRoadmap?: boolean;
24
+ tags?: string[];
25
+ measure?: {
26
+ cmd: string;
27
+ target: number;
28
+ direction: 'up' | 'down';
29
+ };
30
+ }
31
+ export declare const BUILTIN_FORMULAS: Formula[];
32
+ /**
33
+ * Simple YAML-like parser for flat key: value files.
34
+ * Handles single-line values and multi-line | blocks.
35
+ * Does NOT handle nested objects, anchors, or complex YAML features.
36
+ */
37
+ export declare function parseSimpleYaml(content: string): Record<string, string>;
38
+ /**
39
+ * Parse a YAML-style list string: "[a, b, c]" or "a, b, c" -> ["a", "b", "c"]
40
+ */
41
+ export declare function parseStringList(value: string): string[];
42
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/formulas/shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;KAC1B,CAAC;CACH;AAMD,eAAO,MAAM,gBAAgB,EAAE,OAAO,EAoIrC,CAAC;AAMF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgDvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvD"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Pure formula algorithms — no filesystem.
3
+ *
4
+ * Shared by both @promptwheel/cli and @promptwheel/mcp.
5
+ * Callers handle file I/O (reading YAML files from .promptwheel/formulas/).
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Built-in Formulas
9
+ // ---------------------------------------------------------------------------
10
+ export const BUILTIN_FORMULAS = [
11
+ {
12
+ name: 'security-audit',
13
+ version: 1,
14
+ description: 'Find and fix security vulnerabilities',
15
+ categories: ['security'],
16
+ minConfidence: 80,
17
+ min_confidence: 80,
18
+ risk_tolerance: 'low',
19
+ prompt: [
20
+ 'Look for OWASP Top 10 vulnerabilities, insecure defaults,',
21
+ 'missing input validation, credential exposure, and injection risks.',
22
+ 'Focus on real vulnerabilities, not style issues.',
23
+ ].join(' '),
24
+ maxPrs: 10,
25
+ max_prs: 10,
26
+ tags: ['security'],
27
+ },
28
+ {
29
+ name: 'test-coverage',
30
+ version: 1,
31
+ description: 'Add missing unit tests for untested code',
32
+ categories: ['test'],
33
+ minConfidence: 70,
34
+ min_confidence: 70,
35
+ risk_tolerance: 'medium',
36
+ prompt: [
37
+ 'Find functions and modules with no test coverage.',
38
+ 'Write focused unit tests with edge cases.',
39
+ 'Prioritize business logic over utility functions.',
40
+ ].join(' '),
41
+ maxPrs: 15,
42
+ max_prs: 15,
43
+ tags: ['quality'],
44
+ },
45
+ {
46
+ name: 'type-safety',
47
+ version: 1,
48
+ description: 'Strengthen TypeScript types and remove any/unknown',
49
+ categories: ['types'],
50
+ minConfidence: 75,
51
+ min_confidence: 75,
52
+ risk_tolerance: 'medium',
53
+ prompt: [
54
+ 'Find uses of any, unknown, or weak typing.',
55
+ 'Add proper type annotations, interfaces, and type guards.',
56
+ 'Do not change runtime behavior.',
57
+ ].join(' '),
58
+ maxPrs: 10,
59
+ max_prs: 10,
60
+ tags: ['quality'],
61
+ },
62
+ {
63
+ name: 'cleanup',
64
+ version: 1,
65
+ description: 'Remove dead code, unused imports, and stale comments',
66
+ categories: ['refactor'],
67
+ minConfidence: 85,
68
+ min_confidence: 85,
69
+ risk_tolerance: 'low',
70
+ prompt: [
71
+ 'Find dead code, unused imports, unreachable branches,',
72
+ 'commented-out code, and stale TODO comments.',
73
+ 'Only remove things that are clearly unused.',
74
+ ].join(' '),
75
+ maxPrs: 10,
76
+ max_prs: 10,
77
+ tags: ['cleanup'],
78
+ },
79
+ {
80
+ name: 'deep',
81
+ version: 1,
82
+ description: 'Find high-impact structural and architectural improvements',
83
+ categories: ['refactor', 'perf', 'security'],
84
+ minConfidence: 60,
85
+ min_confidence: 60,
86
+ risk_tolerance: 'high',
87
+ model: 'opus',
88
+ maxPrs: 5,
89
+ max_prs: 5,
90
+ prompt: [
91
+ 'Principal engineer architecture review. Ignore trivial issues.',
92
+ 'Focus on: leaky abstractions, silent error swallowing, coupling/circular deps,',
93
+ 'mixed concerns (business logic + I/O), algorithmic perf issues,',
94
+ 'missing security boundaries, brittle integration points.',
95
+ 'Prefer moderate/complex complexity. Set impact_score 1-10.',
96
+ ].join(' '),
97
+ tags: ['architecture', 'deep'],
98
+ },
99
+ {
100
+ name: 'docs',
101
+ version: 1,
102
+ description: 'Add or improve documentation for public APIs',
103
+ categories: ['docs'],
104
+ minConfidence: 70,
105
+ min_confidence: 70,
106
+ risk_tolerance: 'medium',
107
+ prompt: [
108
+ 'Find exported functions, classes, and types missing JSDoc.',
109
+ 'Add clear, concise documentation that explains the purpose,',
110
+ 'parameters, and return values. Do not over-document obvious code.',
111
+ ].join(' '),
112
+ maxPrs: 10,
113
+ max_prs: 10,
114
+ tags: ['docs'],
115
+ },
116
+ {
117
+ name: 'docs-audit',
118
+ version: 1,
119
+ description: 'Find stale, inaccurate, or missing documentation across code and markdown',
120
+ scope: '.',
121
+ categories: ['docs'],
122
+ minConfidence: 70,
123
+ min_confidence: 70,
124
+ risk_tolerance: 'low',
125
+ exclude: ['CLAUDE.md', '.claude/**'],
126
+ prompt: [
127
+ 'Cross-reference documentation files (README.md, CLAUDE.md, docs/*.md, CONTRIBUTING.md)',
128
+ 'against the actual codebase to find inaccuracies.',
129
+ 'Look for: CLI flags/options documented that no longer exist or have changed,',
130
+ 'features described that have been renamed or removed,',
131
+ 'setup instructions that reference old paths or commands,',
132
+ 'outdated architecture descriptions that no longer match the code,',
133
+ 'missing documentation for recently added features or flags.',
134
+ 'Read both the markdown files AND the source code they reference to verify accuracy.',
135
+ 'Each proposal should fix one specific doc file with concrete corrections.',
136
+ 'Do NOT add new documentation — only fix what is wrong or outdated.',
137
+ ].join(' '),
138
+ maxPrs: 10,
139
+ max_prs: 10,
140
+ tags: ['docs', 'audit'],
141
+ },
142
+ ];
143
+ // ---------------------------------------------------------------------------
144
+ // YAML parsing (pure — no filesystem)
145
+ // ---------------------------------------------------------------------------
146
+ /**
147
+ * Simple YAML-like parser for flat key: value files.
148
+ * Handles single-line values and multi-line | blocks.
149
+ * Does NOT handle nested objects, anchors, or complex YAML features.
150
+ */
151
+ export function parseSimpleYaml(content) {
152
+ const result = {};
153
+ const lines = content.split('\n');
154
+ let currentKey = null;
155
+ let multilineValue = [];
156
+ let multilineIndent = 0;
157
+ for (const line of lines) {
158
+ // Skip comments and empty lines (unless in multiline)
159
+ if (!currentKey && (line.trim().startsWith('#') || line.trim() === ''))
160
+ continue;
161
+ // Check for multiline continuation
162
+ if (currentKey) {
163
+ const indent = line.length - line.trimStart().length;
164
+ if (indent > multilineIndent && line.trim() !== '') {
165
+ multilineValue.push(line.trim());
166
+ continue;
167
+ }
168
+ else {
169
+ // End of multiline block
170
+ result[currentKey] = multilineValue.join(' ');
171
+ currentKey = null;
172
+ multilineValue = [];
173
+ }
174
+ }
175
+ // Parse key: value
176
+ const match = line.match(/^(\w[\w_-]*)\s*:\s*(.*)/);
177
+ if (match) {
178
+ const [, key, value] = match;
179
+ const trimmedValue = value.trim();
180
+ if (trimmedValue === '|' || trimmedValue === '>') {
181
+ // Start multiline block
182
+ currentKey = key;
183
+ multilineIndent = line.length - line.trimStart().length;
184
+ multilineValue = [];
185
+ }
186
+ else {
187
+ result[key] = trimmedValue;
188
+ }
189
+ }
190
+ }
191
+ // Flush remaining multiline
192
+ if (currentKey) {
193
+ result[currentKey] = multilineValue.join(' ');
194
+ }
195
+ return result;
196
+ }
197
+ /**
198
+ * Parse a YAML-style list string: "[a, b, c]" or "a, b, c" -> ["a", "b", "c"]
199
+ */
200
+ export function parseStringList(value) {
201
+ const stripped = value.replace(/^\[/, '').replace(/\]$/, '');
202
+ return stripped.split(',').map(s => s.trim()).filter(s => s.length > 0);
203
+ }
204
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/formulas/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Pure guideline resolution logic — no filesystem I/O.
3
+ *
4
+ * Shared by both @promptwheel/cli and @promptwheel/mcp.
5
+ * Callers handle file I/O (reading files, writing baseline).
6
+ */
7
+ export interface ProjectGuidelines {
8
+ content: string;
9
+ source: string;
10
+ loadedAt: number;
11
+ }
12
+ export type GuidelinesBackend = string;
13
+ /**
14
+ * Resolve the ordered list of guideline file paths to search.
15
+ * Returns [primaryPaths, fallbackPaths].
16
+ */
17
+ export declare function resolveGuidelinesPaths(backend?: GuidelinesBackend): [primary: string[], fallback: string[]];
18
+ /**
19
+ * Get the filename to use when creating a baseline guidelines file.
20
+ */
21
+ export declare function getBaselineFilename(backend?: GuidelinesBackend): string;
22
+ /**
23
+ * Wrap guidelines content in XML tags for prompt injection.
24
+ */
25
+ export declare function formatGuidelinesForPrompt(guidelines: ProjectGuidelines): string;
26
+ export interface BaselineInput {
27
+ projectName: string;
28
+ description?: string;
29
+ hasTypeScript?: boolean;
30
+ scripts?: Record<string, string>;
31
+ isMonorepo?: boolean;
32
+ /** Detected test runner command (language-agnostic) */
33
+ testCommand?: string;
34
+ /** Detected lint command */
35
+ lintCommand?: string;
36
+ /** Detected build command */
37
+ buildCommand?: string;
38
+ /** Primary language */
39
+ language?: string;
40
+ }
41
+ /**
42
+ * Generate baseline guidelines content from project metadata.
43
+ * Returns the file content as a string. Caller handles writing.
44
+ */
45
+ export declare function generateBaselineGuidelines(input: BaselineInput, _backend?: GuidelinesBackend): string;
46
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/guidelines/shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAgBvC;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,iBAA4B,GACpC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CASzC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,iBAA4B,GAAG,MAAM,CAMjF;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAO/E;AAMD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,EACpB,QAAQ,GAAE,iBAA4B,GACrC,MAAM,CAsER"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Pure guideline resolution logic — no filesystem I/O.
3
+ *
4
+ * Shared by both @promptwheel/cli and @promptwheel/mcp.
5
+ * Callers handle file I/O (reading files, writing baseline).
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Path resolution (pure — returns paths to try, doesn't read files)
9
+ // ---------------------------------------------------------------------------
10
+ const CLAUDE_PATHS = ['CLAUDE.md'];
11
+ const CODEX_PATHS = ['AGENTS.md'];
12
+ const BACKEND_PATHS = {
13
+ claude: CLAUDE_PATHS,
14
+ codex: CODEX_PATHS,
15
+ kimi: ['KIMI.md'],
16
+ 'openai-local': ['CLAUDE.md'],
17
+ };
18
+ /**
19
+ * Resolve the ordered list of guideline file paths to search.
20
+ * Returns [primaryPaths, fallbackPaths].
21
+ */
22
+ export function resolveGuidelinesPaths(backend = 'claude') {
23
+ const primaryPaths = BACKEND_PATHS[backend] ?? CLAUDE_PATHS;
24
+ const allPaths = [...new Set([
25
+ ...CLAUDE_PATHS,
26
+ ...CODEX_PATHS,
27
+ ...Object.values(BACKEND_PATHS).flat(),
28
+ ])];
29
+ const fallbackPaths = allPaths.filter(p => !primaryPaths.includes(p));
30
+ return [primaryPaths, fallbackPaths];
31
+ }
32
+ /**
33
+ * Get the filename to use when creating a baseline guidelines file.
34
+ */
35
+ export function getBaselineFilename(backend = 'claude') {
36
+ const BACKEND_FILENAMES = {
37
+ codex: 'AGENTS.md',
38
+ kimi: 'KIMI.md',
39
+ };
40
+ return BACKEND_FILENAMES[backend] ?? 'CLAUDE.md';
41
+ }
42
+ // ---------------------------------------------------------------------------
43
+ // Prompt formatting (pure)
44
+ // ---------------------------------------------------------------------------
45
+ /**
46
+ * Wrap guidelines content in XML tags for prompt injection.
47
+ */
48
+ export function formatGuidelinesForPrompt(guidelines) {
49
+ return [
50
+ '<project-guidelines>',
51
+ `<!-- Source: ${guidelines.source} -->`,
52
+ guidelines.content,
53
+ '</project-guidelines>',
54
+ ].join('\n');
55
+ }
56
+ /**
57
+ * Generate baseline guidelines content from project metadata.
58
+ * Returns the file content as a string. Caller handles writing.
59
+ */
60
+ export function generateBaselineGuidelines(input, _backend = 'claude') {
61
+ const parts = [];
62
+ parts.push(`# ${input.projectName}`);
63
+ parts.push('');
64
+ if (input.description) {
65
+ parts.push(input.description);
66
+ parts.push('');
67
+ }
68
+ // Conventions section
69
+ parts.push('## Conventions');
70
+ parts.push('');
71
+ if (input.hasTypeScript) {
72
+ parts.push('- This project uses TypeScript. Prefer strict types over `any`.');
73
+ }
74
+ parts.push('- Keep changes minimal and focused on the task at hand.');
75
+ parts.push('- Follow existing code style and patterns in the codebase.');
76
+ parts.push('- Do not introduce new dependencies without justification.');
77
+ parts.push('');
78
+ // Verification section — prefer detected commands, fall back to package.json scripts
79
+ const scripts = input.scripts ?? {};
80
+ const verifyCommands = [];
81
+ if (input.lintCommand) {
82
+ verifyCommands.push(input.lintCommand);
83
+ }
84
+ else {
85
+ let lintCmd = '';
86
+ if (scripts.lint)
87
+ lintCmd = 'npm run lint';
88
+ if (scripts.typecheck || scripts['type-check']) {
89
+ lintCmd = lintCmd ? `${lintCmd} && npm run typecheck` : 'npm run typecheck';
90
+ }
91
+ if (lintCmd)
92
+ verifyCommands.push(lintCmd);
93
+ }
94
+ if (input.testCommand) {
95
+ verifyCommands.push(input.testCommand);
96
+ }
97
+ else if (scripts.test) {
98
+ verifyCommands.push('npm test');
99
+ }
100
+ if (input.buildCommand) {
101
+ verifyCommands.push(input.buildCommand);
102
+ }
103
+ else if (scripts.build) {
104
+ verifyCommands.push('npm run build');
105
+ }
106
+ if (verifyCommands.length > 0) {
107
+ parts.push('## Verification');
108
+ parts.push('');
109
+ parts.push('After making changes, verify with:');
110
+ parts.push('');
111
+ for (const cmd of verifyCommands) {
112
+ parts.push('```bash');
113
+ parts.push(cmd);
114
+ parts.push('```');
115
+ }
116
+ parts.push('');
117
+ }
118
+ // Monorepo section
119
+ if (input.isMonorepo) {
120
+ parts.push('## Structure');
121
+ parts.push('');
122
+ parts.push('This is a monorepo. When modifying code in one package, check for cross-package impacts.');
123
+ parts.push('');
124
+ }
125
+ const header = '<!-- Generated by PromptWheel. Edit freely to customize agent behavior. -->';
126
+ return header + '\n\n' + parts.join('\n');
127
+ }
128
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/guidelines/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @promptwheel/core
3
+ *
4
+ * Core business logic and shared types for PromptWheel.
5
+ * This package is open source (Apache-2.0) and provides:
6
+ *
7
+ * - Database adapter interface (works with Postgres or SQLite)
8
+ * - Repository layer for data access
9
+ * - Services for business logic orchestration
10
+ * - Scout service for codebase analysis
11
+ * - Shared type definitions
12
+ * - Core business logic utilities
13
+ */
14
+ export * from './db/index.js';
15
+ export * as repos from './repos/index.js';
16
+ export type { Project, Ticket, TicketStatus, TicketCategory, Run, RunStatus, RunType } from './repos/index.js';
17
+ export * as services from './services/index.js';
18
+ export type { ScoutDeps, ScoutRepoOptions, ScoutRepoResult, GitService, Logger } from './services/index.js';
19
+ export { scoutRepo, approveProposals } from './services/index.js';
20
+ export * as scout from './scout/index.js';
21
+ export * from './exec/index.js';
22
+ export * as spindle from './spindle/shared.js';
23
+ export * as dedup from './dedup/shared.js';
24
+ export * as scope from './scope/shared.js';
25
+ export * as guidelines from './guidelines/shared.js';
26
+ export * as learnings from './learnings/shared.js';
27
+ export * as formulas from './formulas/shared.js';
28
+ export * as proposals from './proposals/shared.js';
29
+ export * as sectors from './sectors/shared.js';
30
+ export * as waves from './waves/shared.js';
31
+ export * as trace from './trace/shared.js';
32
+ export * as trajectory from './trajectory/shared.js';
33
+ export { SESSION_DEFAULTS, SCOUT_DEFAULTS, EXECUTION_DEFAULTS } from './config/defaults.js';
34
+ export * from './utils/index.js';
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,cAAc,eAAe,CAAC;AAG9B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG/G,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAG1C,cAAc,iBAAiB,CAAC;AAGhC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAGrD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAGjD,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAG3C,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAGrD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG5F,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @promptwheel/core
3
+ *
4
+ * Core business logic and shared types for PromptWheel.
5
+ * This package is open source (Apache-2.0) and provides:
6
+ *
7
+ * - Database adapter interface (works with Postgres or SQLite)
8
+ * - Repository layer for data access
9
+ * - Services for business logic orchestration
10
+ * - Scout service for codebase analysis
11
+ * - Shared type definitions
12
+ * - Core business logic utilities
13
+ */
14
+ // Database adapter
15
+ export * from './db/index.js';
16
+ // Repositories (namespaced)
17
+ export * as repos from './repos/index.js';
18
+ // Services (namespaced to avoid conflicts with scout)
19
+ export * as services from './services/index.js';
20
+ export { scoutRepo, approveProposals } from './services/index.js';
21
+ // Scout (low-level scanning/analysis - namespaced)
22
+ export * as scout from './scout/index.js';
23
+ // Exec runner interface
24
+ export * from './exec/index.js';
25
+ // Spindle shared detection functions
26
+ export * as spindle from './spindle/shared.js';
27
+ // Dedup shared algorithms
28
+ export * as dedup from './dedup/shared.js';
29
+ // Scope shared algorithms
30
+ export * as scope from './scope/shared.js';
31
+ // Guidelines shared logic
32
+ export * as guidelines from './guidelines/shared.js';
33
+ // Learnings shared algorithms
34
+ export * as learnings from './learnings/shared.js';
35
+ // Formulas shared definitions and parsing
36
+ export * as formulas from './formulas/shared.js';
37
+ // Proposals shared algorithms
38
+ export * as proposals from './proposals/shared.js';
39
+ // Sector rotation shared algorithms
40
+ export * as sectors from './sectors/shared.js';
41
+ // Wave scheduling shared algorithms
42
+ export * as waves from './waves/shared.js';
43
+ // Trace analysis shared algorithms
44
+ export * as trace from './trace/shared.js';
45
+ // Trajectory planning shared algorithms
46
+ export * as trajectory from './trajectory/shared.js';
47
+ // Centralized defaults
48
+ export { SESSION_DEFAULTS, SCOUT_DEFAULTS, EXECUTION_DEFAULTS } from './config/defaults.js';
49
+ // Utilities
50
+ export * from './utils/index.js';
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,mBAAmB;AACnB,cAAc,eAAe,CAAC;AAE9B,4BAA4B;AAC5B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAG1C,sDAAsD;AACtD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAElE,mDAAmD;AACnD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAE1C,wBAAwB;AACxB,cAAc,iBAAiB,CAAC;AAEhC,qCAAqC;AACrC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,0BAA0B;AAC1B,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,0BAA0B;AAC1B,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,0BAA0B;AAC1B,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAErD,8BAA8B;AAC9B,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAEnD,0CAA0C;AAC1C,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,8BAA8B;AAC9B,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAEnD,oCAAoC;AACpC,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,oCAAoC;AACpC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,mCAAmC;AACnC,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,wCAAwC;AACxC,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAErD,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE5F,YAAY;AACZ,cAAc,kBAAkB,CAAC"}