@planu/cli 1.4.0 → 1.5.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 (215) hide show
  1. package/dist/config/license-plans.json +15 -1
  2. package/dist/engine/audit-trail/formatter.d.ts +13 -0
  3. package/dist/engine/audit-trail/formatter.d.ts.map +1 -0
  4. package/dist/engine/audit-trail/formatter.js +43 -0
  5. package/dist/engine/audit-trail/formatter.js.map +1 -0
  6. package/dist/engine/audit-trail/hasher.d.ts +18 -0
  7. package/dist/engine/audit-trail/hasher.d.ts.map +1 -0
  8. package/dist/engine/audit-trail/hasher.js +46 -0
  9. package/dist/engine/audit-trail/hasher.js.map +1 -0
  10. package/dist/engine/audit-trail/index.d.ts +2 -0
  11. package/dist/engine/audit-trail/index.d.ts.map +1 -1
  12. package/dist/engine/audit-trail/index.js +4 -1
  13. package/dist/engine/audit-trail/index.js.map +1 -1
  14. package/dist/engine/auto-promoter.d.ts +14 -0
  15. package/dist/engine/auto-promoter.d.ts.map +1 -0
  16. package/dist/engine/auto-promoter.js +40 -0
  17. package/dist/engine/auto-promoter.js.map +1 -0
  18. package/dist/engine/compliance-test-generator/control-mapper.d.ts +4 -0
  19. package/dist/engine/compliance-test-generator/control-mapper.d.ts.map +1 -0
  20. package/dist/engine/compliance-test-generator/control-mapper.js +41 -0
  21. package/dist/engine/compliance-test-generator/control-mapper.js.map +1 -0
  22. package/dist/engine/compliance-test-generator/frameworks/iso42001.d.ts +3 -0
  23. package/dist/engine/compliance-test-generator/frameworks/iso42001.d.ts.map +1 -0
  24. package/dist/engine/compliance-test-generator/frameworks/iso42001.js +55 -0
  25. package/dist/engine/compliance-test-generator/frameworks/iso42001.js.map +1 -0
  26. package/dist/engine/compliance-test-generator/frameworks/pci-dss.d.ts +3 -0
  27. package/dist/engine/compliance-test-generator/frameworks/pci-dss.d.ts.map +1 -0
  28. package/dist/engine/compliance-test-generator/frameworks/pci-dss.js +55 -0
  29. package/dist/engine/compliance-test-generator/frameworks/pci-dss.js.map +1 -0
  30. package/dist/engine/compliance-test-generator/frameworks/soc2.d.ts +3 -0
  31. package/dist/engine/compliance-test-generator/frameworks/soc2.d.ts.map +1 -0
  32. package/dist/engine/compliance-test-generator/frameworks/soc2.js +47 -0
  33. package/dist/engine/compliance-test-generator/frameworks/soc2.js.map +1 -0
  34. package/dist/engine/compliance-test-generator/index.d.ts +3 -0
  35. package/dist/engine/compliance-test-generator/index.d.ts.map +1 -0
  36. package/dist/engine/compliance-test-generator/index.js +64 -0
  37. package/dist/engine/compliance-test-generator/index.js.map +1 -0
  38. package/dist/engine/compliance-test-generator/test-formatter.d.ts +6 -0
  39. package/dist/engine/compliance-test-generator/test-formatter.d.ts.map +1 -0
  40. package/dist/engine/compliance-test-generator/test-formatter.js +33 -0
  41. package/dist/engine/compliance-test-generator/test-formatter.js.map +1 -0
  42. package/dist/engine/cost-guardrails.d.ts +11 -0
  43. package/dist/engine/cost-guardrails.d.ts.map +1 -0
  44. package/dist/engine/cost-guardrails.js +39 -0
  45. package/dist/engine/cost-guardrails.js.map +1 -0
  46. package/dist/engine/dogfood-analyzer.d.ts +6 -0
  47. package/dist/engine/dogfood-analyzer.d.ts.map +1 -0
  48. package/dist/engine/dogfood-analyzer.js +59 -0
  49. package/dist/engine/dogfood-analyzer.js.map +1 -0
  50. package/dist/engine/drift-watcher/criteria-checker.d.ts +16 -0
  51. package/dist/engine/drift-watcher/criteria-checker.d.ts.map +1 -0
  52. package/dist/engine/drift-watcher/criteria-checker.js +81 -0
  53. package/dist/engine/drift-watcher/criteria-checker.js.map +1 -0
  54. package/dist/engine/drift-watcher/file-watcher.d.ts +8 -0
  55. package/dist/engine/drift-watcher/file-watcher.d.ts.map +1 -0
  56. package/dist/engine/drift-watcher/file-watcher.js +24 -0
  57. package/dist/engine/drift-watcher/file-watcher.js.map +1 -0
  58. package/dist/engine/drift-watcher/index.d.ts +19 -0
  59. package/dist/engine/drift-watcher/index.d.ts.map +1 -0
  60. package/dist/engine/drift-watcher/index.js +70 -0
  61. package/dist/engine/drift-watcher/index.js.map +1 -0
  62. package/dist/engine/mcp-gateway/gateway-registry.d.ts +19 -0
  63. package/dist/engine/mcp-gateway/gateway-registry.d.ts.map +1 -0
  64. package/dist/engine/mcp-gateway/gateway-registry.js +33 -0
  65. package/dist/engine/mcp-gateway/gateway-registry.js.map +1 -0
  66. package/dist/engine/mcp-gateway/gateway-scanner.d.ts +17 -0
  67. package/dist/engine/mcp-gateway/gateway-scanner.d.ts.map +1 -0
  68. package/dist/engine/mcp-gateway/gateway-scanner.js +62 -0
  69. package/dist/engine/mcp-gateway/gateway-scanner.js.map +1 -0
  70. package/dist/engine/mcp-gateway/index.d.ts +3 -0
  71. package/dist/engine/mcp-gateway/index.d.ts.map +1 -0
  72. package/dist/engine/mcp-gateway/index.js +4 -0
  73. package/dist/engine/mcp-gateway/index.js.map +1 -0
  74. package/dist/engine/multi-repo/companion-spec-builder.d.ts +9 -0
  75. package/dist/engine/multi-repo/companion-spec-builder.d.ts.map +1 -0
  76. package/dist/engine/multi-repo/companion-spec-builder.js +22 -0
  77. package/dist/engine/multi-repo/companion-spec-builder.js.map +1 -0
  78. package/dist/engine/multi-repo/consumer-scanner.d.ts +12 -0
  79. package/dist/engine/multi-repo/consumer-scanner.d.ts.map +1 -0
  80. package/dist/engine/multi-repo/consumer-scanner.js +48 -0
  81. package/dist/engine/multi-repo/consumer-scanner.js.map +1 -0
  82. package/dist/engine/multi-repo/index.d.ts +4 -0
  83. package/dist/engine/multi-repo/index.d.ts.map +1 -0
  84. package/dist/engine/multi-repo/index.js +5 -0
  85. package/dist/engine/multi-repo/index.js.map +1 -0
  86. package/dist/engine/multi-repo/refactor-tracker.d.ts +7 -0
  87. package/dist/engine/multi-repo/refactor-tracker.d.ts.map +1 -0
  88. package/dist/engine/multi-repo/refactor-tracker.js +22 -0
  89. package/dist/engine/multi-repo/refactor-tracker.js.map +1 -0
  90. package/dist/index.js +15 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/storage/audit-trail-store.d.ts +20 -0
  93. package/dist/storage/audit-trail-store.d.ts.map +1 -0
  94. package/dist/storage/audit-trail-store.js +98 -0
  95. package/dist/storage/audit-trail-store.js.map +1 -0
  96. package/dist/storage/auto-promoter-config-store.d.ts +11 -0
  97. package/dist/storage/auto-promoter-config-store.d.ts.map +1 -0
  98. package/dist/storage/auto-promoter-config-store.js +23 -0
  99. package/dist/storage/auto-promoter-config-store.js.map +1 -0
  100. package/dist/storage/budget-store.d.ts +19 -0
  101. package/dist/storage/budget-store.d.ts.map +1 -0
  102. package/dist/storage/budget-store.js +64 -0
  103. package/dist/storage/budget-store.js.map +1 -0
  104. package/dist/storage/gateway-store.d.ts +23 -0
  105. package/dist/storage/gateway-store.d.ts.map +1 -0
  106. package/dist/storage/gateway-store.js +52 -0
  107. package/dist/storage/gateway-store.js.map +1 -0
  108. package/dist/storage/refactor-registry-store.d.ts +21 -0
  109. package/dist/storage/refactor-registry-store.d.ts.map +1 -0
  110. package/dist/storage/refactor-registry-store.js +77 -0
  111. package/dist/storage/refactor-registry-store.js.map +1 -0
  112. package/dist/tools/auto-promoter-handler.d.ts +13 -0
  113. package/dist/tools/auto-promoter-handler.d.ts.map +1 -0
  114. package/dist/tools/auto-promoter-handler.js +50 -0
  115. package/dist/tools/auto-promoter-handler.js.map +1 -0
  116. package/dist/tools/compliance-test-handler.d.ts +5 -0
  117. package/dist/tools/compliance-test-handler.d.ts.map +1 -0
  118. package/dist/tools/compliance-test-handler.js +66 -0
  119. package/dist/tools/compliance-test-handler.js.map +1 -0
  120. package/dist/tools/cost-guardrails-handler.d.ts +15 -0
  121. package/dist/tools/cost-guardrails-handler.d.ts.map +1 -0
  122. package/dist/tools/cost-guardrails-handler.js +72 -0
  123. package/dist/tools/cost-guardrails-handler.js.map +1 -0
  124. package/dist/tools/dogfood-status-handler.d.ts +3 -0
  125. package/dist/tools/dogfood-status-handler.d.ts.map +1 -0
  126. package/dist/tools/dogfood-status-handler.js +28 -0
  127. package/dist/tools/dogfood-status-handler.js.map +1 -0
  128. package/dist/tools/drift-watcher-handler.d.ts +7 -0
  129. package/dist/tools/drift-watcher-handler.d.ts.map +1 -0
  130. package/dist/tools/drift-watcher-handler.js +65 -0
  131. package/dist/tools/drift-watcher-handler.js.map +1 -0
  132. package/dist/tools/export-audit-trail-handler.d.ts +9 -0
  133. package/dist/tools/export-audit-trail-handler.d.ts.map +1 -0
  134. package/dist/tools/export-audit-trail-handler.js +103 -0
  135. package/dist/tools/export-audit-trail-handler.js.map +1 -0
  136. package/dist/tools/mcp-gateway-handler.d.ts +13 -0
  137. package/dist/tools/mcp-gateway-handler.d.ts.map +1 -0
  138. package/dist/tools/mcp-gateway-handler.js +60 -0
  139. package/dist/tools/mcp-gateway-handler.js.map +1 -0
  140. package/dist/tools/multi-repo-handler.d.ts +15 -0
  141. package/dist/tools/multi-repo-handler.d.ts.map +1 -0
  142. package/dist/tools/multi-repo-handler.js +86 -0
  143. package/dist/tools/multi-repo-handler.js.map +1 -0
  144. package/dist/tools/register-audit-trail-tools.d.ts.map +1 -1
  145. package/dist/tools/register-audit-trail-tools.js +38 -0
  146. package/dist/tools/register-audit-trail-tools.js.map +1 -1
  147. package/dist/tools/register-auto-promoter-tools.d.ts +3 -0
  148. package/dist/tools/register-auto-promoter-tools.d.ts.map +1 -0
  149. package/dist/tools/register-auto-promoter-tools.js +43 -0
  150. package/dist/tools/register-auto-promoter-tools.js.map +1 -0
  151. package/dist/tools/register-compliance-test-tools.d.ts +3 -0
  152. package/dist/tools/register-compliance-test-tools.d.ts.map +1 -0
  153. package/dist/tools/register-compliance-test-tools.js +55 -0
  154. package/dist/tools/register-compliance-test-tools.js.map +1 -0
  155. package/dist/tools/register-cost-guardrails-tools.d.ts +3 -0
  156. package/dist/tools/register-cost-guardrails-tools.d.ts.map +1 -0
  157. package/dist/tools/register-cost-guardrails-tools.js +61 -0
  158. package/dist/tools/register-cost-guardrails-tools.js.map +1 -0
  159. package/dist/tools/register-dogfood-tools.d.ts +3 -0
  160. package/dist/tools/register-dogfood-tools.d.ts.map +1 -0
  161. package/dist/tools/register-dogfood-tools.js +21 -0
  162. package/dist/tools/register-dogfood-tools.js.map +1 -0
  163. package/dist/tools/register-drift-watcher-tools.d.ts +3 -0
  164. package/dist/tools/register-drift-watcher-tools.d.ts.map +1 -0
  165. package/dist/tools/register-drift-watcher-tools.js +28 -0
  166. package/dist/tools/register-drift-watcher-tools.js.map +1 -0
  167. package/dist/tools/register-mcp-gateway-tools.d.ts +3 -0
  168. package/dist/tools/register-mcp-gateway-tools.d.ts.map +1 -0
  169. package/dist/tools/register-mcp-gateway-tools.js +35 -0
  170. package/dist/tools/register-mcp-gateway-tools.js.map +1 -0
  171. package/dist/tools/register-multi-repo-tools.d.ts +8 -0
  172. package/dist/tools/register-multi-repo-tools.d.ts.map +1 -0
  173. package/dist/tools/register-multi-repo-tools.js +52 -0
  174. package/dist/tools/register-multi-repo-tools.js.map +1 -0
  175. package/dist/tools/safe-handler.d.ts.map +1 -1
  176. package/dist/tools/safe-handler.js +50 -1
  177. package/dist/tools/safe-handler.js.map +1 -1
  178. package/dist/types/audit.d.ts +64 -0
  179. package/dist/types/audit.d.ts.map +1 -0
  180. package/dist/types/audit.js +3 -0
  181. package/dist/types/audit.js.map +1 -0
  182. package/dist/types/auto-promoter.d.ts +26 -0
  183. package/dist/types/auto-promoter.d.ts.map +1 -0
  184. package/dist/types/auto-promoter.js +3 -0
  185. package/dist/types/auto-promoter.js.map +1 -0
  186. package/dist/types/compliance-tests.d.ts +41 -0
  187. package/dist/types/compliance-tests.d.ts.map +1 -0
  188. package/dist/types/compliance-tests.js +3 -0
  189. package/dist/types/compliance-tests.js.map +1 -0
  190. package/dist/types/cost-guardrails.d.ts +41 -0
  191. package/dist/types/cost-guardrails.d.ts.map +1 -0
  192. package/dist/types/cost-guardrails.js +3 -0
  193. package/dist/types/cost-guardrails.js.map +1 -0
  194. package/dist/types/dogfood.d.ts +22 -0
  195. package/dist/types/dogfood.d.ts.map +1 -0
  196. package/dist/types/dogfood.js +3 -0
  197. package/dist/types/dogfood.js.map +1 -0
  198. package/dist/types/drift-watcher.d.ts +35 -0
  199. package/dist/types/drift-watcher.d.ts.map +1 -0
  200. package/dist/types/drift-watcher.js +3 -0
  201. package/dist/types/drift-watcher.js.map +1 -0
  202. package/dist/types/index.d.ts +8 -0
  203. package/dist/types/index.d.ts.map +1 -1
  204. package/dist/types/index.js +8 -0
  205. package/dist/types/index.js.map +1 -1
  206. package/dist/types/mcp-gateway.d.ts +34 -0
  207. package/dist/types/mcp-gateway.d.ts.map +1 -0
  208. package/dist/types/mcp-gateway.js +3 -0
  209. package/dist/types/mcp-gateway.js.map +1 -0
  210. package/dist/types/multi-repo.d.ts +39 -0
  211. package/dist/types/multi-repo.d.ts.map +1 -0
  212. package/dist/types/multi-repo.js +5 -0
  213. package/dist/types/multi-repo.js.map +1 -0
  214. package/package.json +1 -1
  215. package/src/config/license-plans.json +15 -1
@@ -0,0 +1,22 @@
1
+ // engine/multi-repo/companion-spec-builder.ts — SPEC-389: Build companion spec descriptions
2
+ const MAX_SYMBOLS_IN_TITLE = 2;
3
+ const MAX_LOCATIONS_IN_DESCRIPTION = 5;
4
+ /**
5
+ * Builds a human-readable description for a companion spec created in a consumer project.
6
+ */
7
+ export function buildCompanionSpecDescription(sourceSpecId, sourceProjectPath, _consumerProjectPath, affectedSymbols, usageLocations) {
8
+ const symbolList = affectedSymbols.join(', ');
9
+ const locationList = usageLocations.slice(0, MAX_LOCATIONS_IN_DESCRIPTION).join(', ');
10
+ return (`Companion spec for ${sourceSpecId} in ${sourceProjectPath}. ` +
11
+ `Update usages of: ${symbolList}. ` +
12
+ `Affected files: ${locationList}. ` +
13
+ `Ensure all imports and call sites are updated to match the new API surface.`);
14
+ }
15
+ /**
16
+ * Builds a concise title for a companion spec referencing the source spec.
17
+ */
18
+ export function buildCompanionSpecTitle(sourceSpecId, symbols) {
19
+ const symbolPart = symbols.slice(0, MAX_SYMBOLS_IN_TITLE).join('/');
20
+ return `[Companion] Update ${symbolPart} — from ${sourceSpecId}`;
21
+ }
22
+ //# sourceMappingURL=companion-spec-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"companion-spec-builder.js","sourceRoot":"","sources":["../../../src/engine/multi-repo/companion-spec-builder.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,YAAoB,EACpB,iBAAyB,EACzB,oBAA4B,EAC5B,eAAyB,EACzB,cAAwB;IAExB,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO,CACL,sBAAsB,YAAY,OAAO,iBAAiB,IAAI;QAC9D,qBAAqB,UAAU,IAAI;QACnC,mBAAmB,YAAY,IAAI;QACnC,6EAA6E,CAC9E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAAoB,EAAE,OAAiB;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpE,OAAO,sBAAsB,UAAU,WAAW,YAAY,EAAE,CAAC;AACnE,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Scans a project directory for usage of given symbol names.
3
+ * Returns file paths where any symbol is found.
4
+ * Caps at 500 files to avoid excessive I/O.
5
+ */
6
+ export declare function scanProjectForSymbols(projectPath: string, symbols: string[]): Promise<string[]>;
7
+ /**
8
+ * Returns all registered project paths (excluding the source project).
9
+ * Reads from data/global/registered-projects.json.
10
+ */
11
+ export declare function getRegisteredProjectPaths(excludePath: string): Promise<string[]>;
12
+ //# sourceMappingURL=consumer-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-scanner.d.ts","sourceRoot":"","sources":["../../../src/engine/multi-repo/consumer-scanner.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWtF"}
@@ -0,0 +1,48 @@
1
+ // engine/multi-repo/consumer-scanner.ts — SPEC-389: Scan consumer repos for API usage
2
+ import { readFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { glob } from 'glob';
5
+ const MAX_FILES = 500;
6
+ const SOURCE_GLOBS = '**/*.{ts,js,tsx,jsx,py,go,java,rb}';
7
+ const IGNORE_PATTERNS = ['node_modules/**', 'dist/**', '.git/**', 'vendor/**'];
8
+ /**
9
+ * Scans a project directory for usage of given symbol names.
10
+ * Returns file paths where any symbol is found.
11
+ * Caps at 500 files to avoid excessive I/O.
12
+ */
13
+ export async function scanProjectForSymbols(projectPath, symbols) {
14
+ const files = await glob(SOURCE_GLOBS, {
15
+ cwd: projectPath,
16
+ ignore: IGNORE_PATTERNS,
17
+ absolute: true,
18
+ });
19
+ const usages = [];
20
+ for (const file of files.slice(0, MAX_FILES)) {
21
+ try {
22
+ const content = await readFile(file, 'utf-8');
23
+ const found = symbols.some((sym) => content.includes(sym));
24
+ if (found) {
25
+ usages.push(file);
26
+ }
27
+ }
28
+ catch {
29
+ /* skip unreadable files */
30
+ }
31
+ }
32
+ return usages;
33
+ }
34
+ /**
35
+ * Returns all registered project paths (excluding the source project).
36
+ * Reads from data/global/registered-projects.json.
37
+ */
38
+ export async function getRegisteredProjectPaths(excludePath) {
39
+ try {
40
+ const data = await readFile(join(process.cwd(), 'data/global/registered-projects.json'), 'utf-8');
41
+ const parsed = JSON.parse(data);
42
+ return parsed.map((p) => p.path).filter((p) => p !== excludePath);
43
+ }
44
+ catch {
45
+ return [];
46
+ }
47
+ }
48
+ //# sourceMappingURL=consumer-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-scanner.js","sourceRoot":"","sources":["../../../src/engine/multi-repo/consumer-scanner.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAC1D,MAAM,eAAe,GAAG,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,OAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE;QACrC,GAAG,EAAE,WAAW;QAChB,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,WAAmB;IACjE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sCAAsC,CAAC,EAC3D,OAAO,CACR,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;QACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { scanProjectForSymbols, getRegisteredProjectPaths } from './consumer-scanner.js';
2
+ export { buildCompanionSpecDescription, buildCompanionSpecTitle, } from './companion-spec-builder.js';
3
+ export { buildStatusReport } from './refactor-tracker.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/multi-repo/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // engine/multi-repo/index.ts — SPEC-389: Barrel export for multi-repo engine modules
2
+ export { scanProjectForSymbols, getRegisteredProjectPaths } from './consumer-scanner.js';
3
+ export { buildCompanionSpecDescription, buildCompanionSpecTitle, } from './companion-spec-builder.js';
4
+ export { buildStatusReport } from './refactor-tracker.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/multi-repo/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { RefactorSession, RefactorStatusReport } from '../../types/multi-repo.js';
2
+ /**
3
+ * Calculates an aggregated progress report from a RefactorSession.
4
+ * overallProgress is 0-100, rounded to the nearest integer.
5
+ */
6
+ export declare function buildStatusReport(session: RefactorSession): RefactorStatusReport;
7
+ //# sourceMappingURL=refactor-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor-tracker.d.ts","sourceRoot":"","sources":["../../../src/engine/multi-repo/refactor-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEvF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,oBAAoB,CAmBhF"}
@@ -0,0 +1,22 @@
1
+ // engine/multi-repo/refactor-tracker.ts — SPEC-389: Calculate refactor status across repos
2
+ /**
3
+ * Calculates an aggregated progress report from a RefactorSession.
4
+ * overallProgress is 0-100, rounded to the nearest integer.
5
+ */
6
+ export function buildStatusReport(session) {
7
+ const total = session.consumerProjects.length;
8
+ const completed = session.consumerProjects.filter((p) => p.status === 'done').length;
9
+ const inProgress = session.consumerProjects.filter((p) => p.status === 'implementing' || p.status === 'spec-created').length;
10
+ const pending = session.consumerProjects.filter((p) => p.status === 'pending').length;
11
+ const overallProgress = total === 0 ? 0 : Math.round((completed / total) * 100);
12
+ return {
13
+ refactorId: session.id,
14
+ sourceSpec: session.sourceSpecId,
15
+ totalConsumers: total,
16
+ completed,
17
+ inProgress,
18
+ pending,
19
+ overallProgress,
20
+ };
21
+ }
22
+ //# sourceMappingURL=refactor-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor-tracker.js","sourceRoot":"","sources":["../../../src/engine/multi-repo/refactor-tracker.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAI3F;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACrF,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc,CAClE,CAAC,MAAM,CAAC;IACT,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAEtF,MAAM,eAAe,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAEhF,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,UAAU,EAAE,OAAO,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK;QACrB,SAAS;QACT,UAAU;QACV,OAAO;QACP,eAAe;KAChB,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  // index.ts — Planu SDD MCP Server entry point.
3
3
  // Creates the MCP server, registers tools & resources, and starts stdio transport.
4
+ /* eslint-disable max-lines */
4
5
  // CLI detection — intercept known commands before MCP server setup (SPEC-124)
5
6
  const KNOWN_COMMANDS = [
6
7
  'init',
@@ -195,6 +196,13 @@ import { registerPrAgentTools } from './tools/register-pr-agent-tools.js';
195
196
  import { registerE2eTestGeneratorTools } from './tools/register-e2e-test-generator-tools.js';
196
197
  import { registerDocsRegistryTools } from './tools/register-docs-registry-tools.js';
197
198
  import { registerDocComplianceTools } from './tools/register-doc-compliance-tools.js';
199
+ import { registerDriftWatcherTools } from './tools/register-drift-watcher-tools.js';
200
+ import { registerMultiRepoTools } from './tools/register-multi-repo-tools.js';
201
+ import { registerComplianceTestTools } from './tools/register-compliance-test-tools.js';
202
+ import { registerAutoPromoterTools } from './tools/register-auto-promoter-tools.js';
203
+ import { registerCostGuardrailsTools } from './tools/register-cost-guardrails-tools.js';
204
+ import { registerMcpGatewayTools } from './tools/register-mcp-gateway-tools.js';
205
+ import { registerDogfoodTools } from './tools/register-dogfood-tools.js';
198
206
  // Server setup
199
207
  const SERVER_INSTRUCTIONS = [
200
208
  'CONTEXT — Why structured specs matter:',
@@ -463,6 +471,13 @@ function registerLatestSpecTools(s) {
463
471
  registerE2eTestGeneratorTools(s);
464
472
  registerDocsRegistryTools(s);
465
473
  registerDocComplianceTools(s);
474
+ registerDriftWatcherTools(s);
475
+ registerMultiRepoTools(s);
476
+ registerComplianceTestTools(s);
477
+ registerAutoPromoterTools(s);
478
+ registerCostGuardrailsTools(s);
479
+ registerMcpGatewayTools(s);
480
+ registerDogfoodTools(s);
466
481
  }
467
482
  function createMcpServer() {
468
483
  const s = withToolTracking(new McpServer({ name: 'planu', version: PLANU_VERSION }, { instructions: SERVER_INSTRUCTIONS }));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AuditTrailEntry, AuditReadFilters } from '../types/audit.js';
2
+ /**
3
+ * Append a single AuditTrailEntry to the JSONL file.
4
+ * Synchronous to guarantee ordering relative to tool responses.
5
+ * Never throws — errors are swallowed so audit failures never affect tool execution.
6
+ */
7
+ export declare function appendEntry(entry: AuditTrailEntry): void;
8
+ /**
9
+ * Read the hash of the last stored entry.
10
+ * Returns empty string if the file does not exist or has no valid entries.
11
+ * Used to build the prevHash for the next entry.
12
+ */
13
+ export declare function getLastHash(): string;
14
+ export type { AuditReadFilters };
15
+ /**
16
+ * Read all entries from the JSONL file and apply optional filters.
17
+ * Returns an empty array if the file does not exist or is unreadable.
18
+ */
19
+ export declare function readEntries(filters?: AuditReadFilters): AuditTrailEntry[];
20
+ //# sourceMappingURL=audit-trail-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-trail-store.d.ts","sourceRoot":"","sources":["../../src/storage/audit-trail-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAe3E;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAMxD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAgBpC;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,eAAe,EAAE,CA6CzE"}
@@ -0,0 +1,98 @@
1
+ // storage/audit-trail-store.ts — Append-only JSONL store for SPEC-387 EU AI Act audit trail
2
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
3
+ import { join, dirname } from 'node:path';
4
+ /** Path to the global audit trail JSONL file. */
5
+ const AUDIT_FILE = join(process.cwd(), 'data', 'global', 'audit-trail.jsonl');
6
+ /** Ensure the data/global directory exists (called at module load). */
7
+ function ensureDataDir() {
8
+ const dir = dirname(AUDIT_FILE);
9
+ if (!existsSync(dir)) {
10
+ mkdirSync(dir, { recursive: true });
11
+ }
12
+ }
13
+ ensureDataDir();
14
+ /**
15
+ * Append a single AuditTrailEntry to the JSONL file.
16
+ * Synchronous to guarantee ordering relative to tool responses.
17
+ * Never throws — errors are swallowed so audit failures never affect tool execution.
18
+ */
19
+ export function appendEntry(entry) {
20
+ try {
21
+ writeFileSync(AUDIT_FILE, JSON.stringify(entry) + '\n', { flag: 'a', encoding: 'utf-8' });
22
+ }
23
+ catch {
24
+ // Silent — audit must never affect tool execution
25
+ }
26
+ }
27
+ /**
28
+ * Read the hash of the last stored entry.
29
+ * Returns empty string if the file does not exist or has no valid entries.
30
+ * Used to build the prevHash for the next entry.
31
+ */
32
+ export function getLastHash() {
33
+ try {
34
+ if (!existsSync(AUDIT_FILE)) {
35
+ return '';
36
+ }
37
+ const content = readFileSync(AUDIT_FILE, 'utf-8');
38
+ const lines = content.split('\n').filter((l) => l.trim().length > 0);
39
+ if (lines.length === 0) {
40
+ return '';
41
+ }
42
+ const lastLine = lines[lines.length - 1] ?? '';
43
+ const parsed = JSON.parse(lastLine);
44
+ return typeof parsed.hash === 'string' ? parsed.hash : '';
45
+ }
46
+ catch {
47
+ return '';
48
+ }
49
+ }
50
+ /**
51
+ * Read all entries from the JSONL file and apply optional filters.
52
+ * Returns an empty array if the file does not exist or is unreadable.
53
+ */
54
+ export function readEntries(filters) {
55
+ try {
56
+ if (!existsSync(AUDIT_FILE)) {
57
+ return [];
58
+ }
59
+ const content = readFileSync(AUDIT_FILE, 'utf-8');
60
+ const lines = content.split('\n').filter((l) => l.trim().length > 0);
61
+ let entries = [];
62
+ for (const line of lines) {
63
+ try {
64
+ entries.push(JSON.parse(line));
65
+ }
66
+ catch {
67
+ // Skip malformed lines
68
+ }
69
+ }
70
+ if (filters === undefined) {
71
+ return entries;
72
+ }
73
+ if (filters.fromDate !== undefined) {
74
+ const from = filters.fromDate;
75
+ entries = entries.filter((e) => e.timestamp >= from);
76
+ }
77
+ if (filters.toDate !== undefined) {
78
+ const to = filters.toDate;
79
+ entries = entries.filter((e) => e.timestamp <= to);
80
+ }
81
+ if (filters.specId !== undefined) {
82
+ const sid = filters.specId;
83
+ entries = entries.filter((e) => e.specId === sid);
84
+ }
85
+ if (filters.projectPath !== undefined) {
86
+ const pp = filters.projectPath;
87
+ entries = entries.filter((e) => e.projectPath === pp);
88
+ }
89
+ if (filters.limit !== undefined && filters.limit > 0) {
90
+ entries = entries.slice(0, filters.limit);
91
+ }
92
+ return entries;
93
+ }
94
+ catch {
95
+ return [];
96
+ }
97
+ }
98
+ //# sourceMappingURL=audit-trail-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-trail-store.js","sourceRoot":"","sources":["../../src/storage/audit-trail-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AutoPromoterConfig } from '../types/auto-promoter.js';
2
+ /**
3
+ * Load the auto-promoter config for a project.
4
+ * Returns the default config when no file exists yet.
5
+ */
6
+ export declare function getConfig(projectPath: string): Promise<AutoPromoterConfig>;
7
+ /**
8
+ * Persist the auto-promoter config for a project.
9
+ */
10
+ export declare function saveConfig(projectPath: string, config: AutoPromoterConfig): Promise<void>;
11
+ //# sourceMappingURL=auto-promoter-config-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-promoter-config-store.d.ts","sourceRoot":"","sources":["../../src/storage/auto-promoter-config-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAMpE;;;GAGG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGhF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F"}
@@ -0,0 +1,23 @@
1
+ // storage/auto-promoter-config-store.ts — Persists auto-promoter config (SPEC-391)
2
+ // Layout: data/projects/{hash}/config/auto-promoter.json
3
+ import { readJson, writeJson, projectDataDir, hashProjectPath } from './base-store.js';
4
+ import { getDefaultConfig } from '../engine/auto-promoter.js';
5
+ function configFile(projectId) {
6
+ return `${projectDataDir(projectId)}/config/auto-promoter.json`;
7
+ }
8
+ /**
9
+ * Load the auto-promoter config for a project.
10
+ * Returns the default config when no file exists yet.
11
+ */
12
+ export async function getConfig(projectPath) {
13
+ const projectId = hashProjectPath(projectPath);
14
+ return readJson(configFile(projectId), getDefaultConfig(projectPath));
15
+ }
16
+ /**
17
+ * Persist the auto-promoter config for a project.
18
+ */
19
+ export async function saveConfig(projectPath, config) {
20
+ const projectId = hashProjectPath(projectPath);
21
+ await writeJson(configFile(projectId), config);
22
+ }
23
+ //# sourceMappingURL=auto-promoter-config-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-promoter-config-store.js","sourceRoot":"","sources":["../../src/storage/auto-promoter-config-store.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,yDAAyD;AAEzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,4BAA4B,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB;IACjD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB,EAAE,MAA0B;IAC9E,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { SpecBudget } from '../types/cost-guardrails.js';
2
+ /**
3
+ * Retrieve the budget for a single spec. Returns null when not found.
4
+ */
5
+ export declare function getBudget(projectPath: string, specId: string): Promise<SpecBudget | null>;
6
+ /**
7
+ * Persist (upsert) a budget entry.
8
+ */
9
+ export declare function saveBudget(projectPath: string, budget: SpecBudget): Promise<void>;
10
+ /**
11
+ * Return all budgets for a project.
12
+ */
13
+ export declare function listBudgets(projectPath: string): Promise<SpecBudget[]>;
14
+ /**
15
+ * Increment the usedUsdCents for a spec budget.
16
+ * No-op when the spec has no budget entry.
17
+ */
18
+ export declare function recordSpend(projectPath: string, specId: string, usdCents: number): Promise<void>;
19
+ //# sourceMappingURL=budget-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-store.d.ts","sourceRoot":"","sources":["../../src/storage/budget-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,6BAA6B,CAAC;AAgB3E;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG/F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CASvF;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAG5E;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -0,0 +1,64 @@
1
+ // storage/budget-store.ts — Persists spec cost budgets (SPEC-393)
2
+ // Layout: data/projects/{hash}/config/budgets.json
3
+ import { readJson, writeJson, projectDataDir, hashProjectPath } from './base-store.js';
4
+ function budgetsFile(projectId) {
5
+ return `${projectDataDir(projectId)}/config/budgets.json`;
6
+ }
7
+ async function loadBudgetsFile(projectPath) {
8
+ const projectId = hashProjectPath(projectPath);
9
+ return readJson(budgetsFile(projectId), { budgets: [] });
10
+ }
11
+ async function saveBudgetsFile(projectPath, data) {
12
+ const projectId = hashProjectPath(projectPath);
13
+ await writeJson(budgetsFile(projectId), data);
14
+ }
15
+ /**
16
+ * Retrieve the budget for a single spec. Returns null when not found.
17
+ */
18
+ export async function getBudget(projectPath, specId) {
19
+ const data = await loadBudgetsFile(projectPath);
20
+ return data.budgets.find((b) => b.specId === specId) ?? null;
21
+ }
22
+ /**
23
+ * Persist (upsert) a budget entry.
24
+ */
25
+ export async function saveBudget(projectPath, budget) {
26
+ const data = await loadBudgetsFile(projectPath);
27
+ const idx = data.budgets.findIndex((b) => b.specId === budget.specId);
28
+ if (idx >= 0) {
29
+ data.budgets[idx] = budget;
30
+ }
31
+ else {
32
+ data.budgets.push(budget);
33
+ }
34
+ await saveBudgetsFile(projectPath, data);
35
+ }
36
+ /**
37
+ * Return all budgets for a project.
38
+ */
39
+ export async function listBudgets(projectPath) {
40
+ const data = await loadBudgetsFile(projectPath);
41
+ return data.budgets;
42
+ }
43
+ /**
44
+ * Increment the usedUsdCents for a spec budget.
45
+ * No-op when the spec has no budget entry.
46
+ */
47
+ export async function recordSpend(projectPath, specId, usdCents) {
48
+ const data = await loadBudgetsFile(projectPath);
49
+ const idx = data.budgets.findIndex((b) => b.specId === specId);
50
+ if (idx < 0) {
51
+ return;
52
+ }
53
+ const existing = data.budgets[idx];
54
+ if (existing === undefined) {
55
+ return;
56
+ }
57
+ data.budgets[idx] = {
58
+ ...existing,
59
+ usedUsdCents: existing.usedUsdCents + usdCents,
60
+ lastUpdated: new Date().toISOString(),
61
+ };
62
+ await saveBudgetsFile(projectPath, data);
63
+ }
64
+ //# sourceMappingURL=budget-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget-store.js","sourceRoot":"","sources":["../../src/storage/budget-store.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mDAAmD;AAEnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvF,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,sBAAsB,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,WAAmB,EAAE,IAAiB;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,WAAmB,EAAE,MAAc;IACjE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB,EAAE,MAAkB;IACtE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,MAAc,EACd,QAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/D,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG;QAClB,GAAG,QAAQ;QACX,YAAY,EAAE,QAAQ,CAAC,YAAY,GAAG,QAAQ;QAC9C,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { DiscoveredGateway, GatewayRegistry } from '../types/mcp-gateway.js';
2
+ /**
3
+ * Load the full gateway registry from disk.
4
+ * Returns an empty registry when the file does not exist yet.
5
+ */
6
+ export declare function loadRegistry(): Promise<GatewayRegistry>;
7
+ /**
8
+ * Persist the gateway registry to disk.
9
+ */
10
+ export declare function saveRegistry(registry: GatewayRegistry): Promise<void>;
11
+ /**
12
+ * Upsert a discovered gateway by URL.
13
+ * If the URL already exists, updates lastSeenAt, tools, planuCompatible and status.
14
+ * Otherwise appends the new gateway entry.
15
+ */
16
+ export declare function mergeGateway(gateway: DiscoveredGateway): Promise<void>;
17
+ /**
18
+ * Return only the gateways currently marked as active.
19
+ * This is a synchronous view over a previously loaded registry —
20
+ * callers must await loadRegistry() first when they need fresh data.
21
+ */
22
+ export declare function listActive(registry: GatewayRegistry): DiscoveredGateway[];
23
+ //# sourceMappingURL=gateway-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-store.d.ts","sourceRoot":"","sources":["../../src/storage/gateway-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAOlF;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,CAE7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB5E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,iBAAiB,EAAE,CAEzE"}
@@ -0,0 +1,52 @@
1
+ import { readJson, writeJson } from './base-store.js';
2
+ const REGISTRY_FILE = 'data/global/discovered-gateways.json';
3
+ const DEFAULT_REGISTRY = { gateways: [] };
4
+ /**
5
+ * Load the full gateway registry from disk.
6
+ * Returns an empty registry when the file does not exist yet.
7
+ */
8
+ export async function loadRegistry() {
9
+ return readJson(REGISTRY_FILE, DEFAULT_REGISTRY);
10
+ }
11
+ /**
12
+ * Persist the gateway registry to disk.
13
+ */
14
+ export async function saveRegistry(registry) {
15
+ await writeJson(REGISTRY_FILE, registry);
16
+ }
17
+ /**
18
+ * Upsert a discovered gateway by URL.
19
+ * If the URL already exists, updates lastSeenAt, tools, planuCompatible and status.
20
+ * Otherwise appends the new gateway entry.
21
+ */
22
+ export async function mergeGateway(gateway) {
23
+ const registry = await loadRegistry();
24
+ const idx = registry.gateways.findIndex((g) => g.url === gateway.url);
25
+ if (idx >= 0) {
26
+ const existing = registry.gateways[idx];
27
+ if (existing) {
28
+ registry.gateways[idx] = {
29
+ url: existing.url,
30
+ discoveredAt: existing.discoveredAt,
31
+ lastSeenAt: gateway.lastSeenAt,
32
+ tools: gateway.tools,
33
+ planuCompatible: gateway.planuCompatible,
34
+ status: gateway.status,
35
+ name: gateway.name,
36
+ };
37
+ }
38
+ }
39
+ else {
40
+ registry.gateways.push(gateway);
41
+ }
42
+ await saveRegistry(registry);
43
+ }
44
+ /**
45
+ * Return only the gateways currently marked as active.
46
+ * This is a synchronous view over a previously loaded registry —
47
+ * callers must await loadRegistry() first when they need fresh data.
48
+ */
49
+ export function listActive(registry) {
50
+ return registry.gateways.filter((g) => g.status === 'active');
51
+ }
52
+ //# sourceMappingURL=gateway-store.js.map