@magic-ingredients/tiny-brain-local 0.13.0 → 0.14.10

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 (258) hide show
  1. package/dist/agents/formatters/claude-code-formatter.js +0 -1
  2. package/dist/agents/formatters/formatter-factory.js +0 -1
  3. package/dist/agents/types.js +0 -1
  4. package/dist/core/console-logger.js +0 -1
  5. package/dist/core/file-logger.js +0 -1
  6. package/dist/core/mcp-server.js +0 -1
  7. package/dist/index.d.ts +22 -8
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +20 -148
  10. package/dist/prompts/index.js +0 -1
  11. package/dist/prompts/persona/persona.prompt.js +0 -1
  12. package/dist/prompts/planning/planning.prompt.js +0 -1
  13. package/dist/prompts/prompt-registry.js +0 -1
  14. package/dist/prompts/rules/rules.prompt.js +0 -1
  15. package/dist/prompts/thinking/thinking.prompt.js +0 -1
  16. package/dist/services/UpdateService.js +0 -1
  17. package/dist/services/agent-installation-service.js +0 -1
  18. package/dist/services/agent-manager.js +0 -1
  19. package/dist/services/agent-service.js +0 -1
  20. package/dist/services/analyse-service.d.ts +52 -8
  21. package/dist/services/analyse-service.d.ts.map +1 -1
  22. package/dist/services/analyse-service.js +325 -66
  23. package/dist/services/credential-storage.service.js +0 -1
  24. package/dist/services/dashboard-launcher.service.js +0 -1
  25. package/dist/services/persona-enhancer.js +0 -1
  26. package/dist/services/persona-service.js +0 -1
  27. package/dist/services/remote/auth-token-service.js +0 -1
  28. package/dist/services/remote/persona-sync-service.js +0 -1
  29. package/dist/services/remote/system-persona-service.js +0 -1
  30. package/dist/services/repo-service.d.ts.map +1 -1
  31. package/dist/services/repo-service.js +31 -25
  32. package/dist/services/versioning-service.js +0 -1
  33. package/dist/storage/local-filesystem-adapter.js +0 -1
  34. package/dist/storage/platform-config-adapter.js +0 -1
  35. package/dist/storage/platform-path-builder.js +0 -1
  36. package/dist/storage/storage-path-builder.js +0 -1
  37. package/dist/tools/analyse-request/analyse-request.tool.js +0 -1
  38. package/dist/tools/analyse.tool.d.ts +4 -0
  39. package/dist/tools/analyse.tool.d.ts.map +1 -1
  40. package/dist/tools/analyse.tool.js +34 -3
  41. package/dist/tools/config/config.tool.d.ts +3 -0
  42. package/dist/tools/config/config.tool.d.ts.map +1 -1
  43. package/dist/tools/config/config.tool.js +139 -70
  44. package/dist/tools/config/index.js +0 -1
  45. package/dist/tools/index.d.ts +4 -4
  46. package/dist/tools/index.js +0 -1
  47. package/dist/tools/persona/as.tool.js +0 -1
  48. package/dist/tools/persona/persona.tool.js +0 -1
  49. package/dist/tools/plan/plan.tool.d.ts +4 -0
  50. package/dist/tools/plan/plan.tool.d.ts.map +1 -1
  51. package/dist/tools/plan/plan.tool.js +144 -32
  52. package/dist/tools/rules/rules.tool.js +0 -1
  53. package/dist/tools/strategy/strategy.tool.js +0 -1
  54. package/dist/tools/thinking/thinking.tool.js +0 -1
  55. package/dist/tools/tool-registry.js +0 -1
  56. package/dist/tools/update/update.tool.js +0 -1
  57. package/dist/tools/validate-response/validate-response.tool.js +0 -1
  58. package/dist/types/local-context.js +0 -1
  59. package/dist/types/request-context.d.ts +1 -1
  60. package/dist/types/request-context.d.ts.map +1 -1
  61. package/dist/types/request-context.js +0 -1
  62. package/dist/utils/package-version.js +0 -1
  63. package/dist/utils/repo-utils.js +0 -1
  64. package/package.json +8 -32
  65. package/LICENSE +0 -21
  66. package/README.md +0 -260
  67. package/dist/agents/formatters/claude-code-formatter.js.map +0 -1
  68. package/dist/agents/formatters/formatter-factory.js.map +0 -1
  69. package/dist/agents/types.js.map +0 -1
  70. package/dist/analyser/analyzers/script-analyzer.d.ts +0 -10
  71. package/dist/analyser/analyzers/script-analyzer.d.ts.map +0 -1
  72. package/dist/analyser/analyzers/script-analyzer.js +0 -205
  73. package/dist/analyser/analyzers/script-analyzer.js.map +0 -1
  74. package/dist/analyser/detectors/base-detector.d.ts +0 -12
  75. package/dist/analyser/detectors/base-detector.d.ts.map +0 -1
  76. package/dist/analyser/detectors/base-detector.js +0 -50
  77. package/dist/analyser/detectors/base-detector.js.map +0 -1
  78. package/dist/analyser/detectors/javascript-detector.d.ts +0 -19
  79. package/dist/analyser/detectors/javascript-detector.d.ts.map +0 -1
  80. package/dist/analyser/detectors/javascript-detector.js +0 -347
  81. package/dist/analyser/detectors/javascript-detector.js.map +0 -1
  82. package/dist/analyser/index.d.ts +0 -5
  83. package/dist/analyser/index.d.ts.map +0 -1
  84. package/dist/analyser/index.js +0 -315
  85. package/dist/analyser/index.js.map +0 -1
  86. package/dist/analyser/types.d.ts +0 -2
  87. package/dist/analyser/types.d.ts.map +0 -1
  88. package/dist/analyser/types.js +0 -2
  89. package/dist/analyser/types.js.map +0 -1
  90. package/dist/analyser/utils.d.ts +0 -5
  91. package/dist/analyser/utils.d.ts.map +0 -1
  92. package/dist/analyser/utils.js +0 -24
  93. package/dist/analyser/utils.js.map +0 -1
  94. package/dist/cli/cli-factory.d.ts +0 -3
  95. package/dist/cli/cli-factory.d.ts.map +0 -1
  96. package/dist/cli/cli-factory.js +0 -235
  97. package/dist/cli/cli-factory.js.map +0 -1
  98. package/dist/cli/commands/analyse.command.d.ts +0 -18
  99. package/dist/cli/commands/analyse.command.d.ts.map +0 -1
  100. package/dist/cli/commands/analyse.command.js +0 -161
  101. package/dist/cli/commands/analyse.command.js.map +0 -1
  102. package/dist/cli/commands/config.command.d.ts +0 -25
  103. package/dist/cli/commands/config.command.d.ts.map +0 -1
  104. package/dist/cli/commands/config.command.js +0 -285
  105. package/dist/cli/commands/config.command.js.map +0 -1
  106. package/dist/cli/commands/install.command.d.ts +0 -23
  107. package/dist/cli/commands/install.command.d.ts.map +0 -1
  108. package/dist/cli/commands/install.command.js +0 -189
  109. package/dist/cli/commands/install.command.js.map +0 -1
  110. package/dist/cli/commands/list.command.d.ts +0 -15
  111. package/dist/cli/commands/list.command.d.ts.map +0 -1
  112. package/dist/cli/commands/list.command.js +0 -90
  113. package/dist/cli/commands/list.command.js.map +0 -1
  114. package/dist/cli/commands/status.command.d.ts +0 -25
  115. package/dist/cli/commands/status.command.d.ts.map +0 -1
  116. package/dist/cli/commands/status.command.js +0 -367
  117. package/dist/cli/commands/status.command.js.map +0 -1
  118. package/dist/cli/commands/track-commit.command.d.ts +0 -52
  119. package/dist/cli/commands/track-commit.command.d.ts.map +0 -1
  120. package/dist/cli/commands/track-commit.command.js +0 -239
  121. package/dist/cli/commands/track-commit.command.js.map +0 -1
  122. package/dist/cli/commands/uninstall.command.d.ts +0 -23
  123. package/dist/cli/commands/uninstall.command.d.ts.map +0 -1
  124. package/dist/cli/commands/uninstall.command.js +0 -176
  125. package/dist/cli/commands/uninstall.command.js.map +0 -1
  126. package/dist/cli/commands/validate-commit-message.command.d.ts +0 -47
  127. package/dist/cli/commands/validate-commit-message.command.d.ts.map +0 -1
  128. package/dist/cli/commands/validate-commit-message.command.js +0 -223
  129. package/dist/cli/commands/validate-commit-message.command.js.map +0 -1
  130. package/dist/cli/installers/base-installer.d.ts +0 -20
  131. package/dist/cli/installers/base-installer.d.ts.map +0 -1
  132. package/dist/cli/installers/base-installer.js +0 -3
  133. package/dist/cli/installers/base-installer.js.map +0 -1
  134. package/dist/cli/installers/chatgpt-installer.d.ts +0 -18
  135. package/dist/cli/installers/chatgpt-installer.d.ts.map +0 -1
  136. package/dist/cli/installers/chatgpt-installer.js +0 -45
  137. package/dist/cli/installers/chatgpt-installer.js.map +0 -1
  138. package/dist/cli/installers/claude-code-installer.d.ts +0 -23
  139. package/dist/cli/installers/claude-code-installer.d.ts.map +0 -1
  140. package/dist/cli/installers/claude-code-installer.js +0 -127
  141. package/dist/cli/installers/claude-code-installer.js.map +0 -1
  142. package/dist/cli/installers/claude-desktop-installer.d.ts +0 -18
  143. package/dist/cli/installers/claude-desktop-installer.d.ts.map +0 -1
  144. package/dist/cli/installers/claude-desktop-installer.js +0 -48
  145. package/dist/cli/installers/claude-desktop-installer.js.map +0 -1
  146. package/dist/cli/installers/cursor-installer.d.ts +0 -18
  147. package/dist/cli/installers/cursor-installer.d.ts.map +0 -1
  148. package/dist/cli/installers/cursor-installer.js +0 -45
  149. package/dist/cli/installers/cursor-installer.js.map +0 -1
  150. package/dist/cli/installers/installer-factory.d.ts +0 -30
  151. package/dist/cli/installers/installer-factory.d.ts.map +0 -1
  152. package/dist/cli/installers/installer-factory.js +0 -90
  153. package/dist/cli/installers/installer-factory.js.map +0 -1
  154. package/dist/cli/utils/node-resolver.d.ts +0 -53
  155. package/dist/cli/utils/node-resolver.d.ts.map +0 -1
  156. package/dist/cli/utils/node-resolver.js +0 -200
  157. package/dist/cli/utils/node-resolver.js.map +0 -1
  158. package/dist/cli/utils/package-locator.d.ts +0 -9
  159. package/dist/cli/utils/package-locator.d.ts.map +0 -1
  160. package/dist/cli/utils/package-locator.js +0 -81
  161. package/dist/cli/utils/package-locator.js.map +0 -1
  162. package/dist/cli/utils/system-info.d.ts +0 -20
  163. package/dist/cli/utils/system-info.d.ts.map +0 -1
  164. package/dist/cli/utils/system-info.js +0 -90
  165. package/dist/cli/utils/system-info.js.map +0 -1
  166. package/dist/cli.d.ts +0 -3
  167. package/dist/cli.d.ts.map +0 -1
  168. package/dist/cli.js +0 -27
  169. package/dist/cli.js.map +0 -1
  170. package/dist/core/console-logger.js.map +0 -1
  171. package/dist/core/file-logger.js.map +0 -1
  172. package/dist/core/mcp-server.js.map +0 -1
  173. package/dist/index.js.map +0 -1
  174. package/dist/prompts/index.js.map +0 -1
  175. package/dist/prompts/persona/persona.prompt.js.map +0 -1
  176. package/dist/prompts/planning/planning.prompt.js.map +0 -1
  177. package/dist/prompts/prompt-registry.js.map +0 -1
  178. package/dist/prompts/rules/rules.prompt.js.map +0 -1
  179. package/dist/prompts/thinking/thinking.prompt.js.map +0 -1
  180. package/dist/services/UpdateService.js.map +0 -1
  181. package/dist/services/adr-service.d.ts +0 -70
  182. package/dist/services/adr-service.d.ts.map +0 -1
  183. package/dist/services/adr-service.js +0 -242
  184. package/dist/services/adr-service.js.map +0 -1
  185. package/dist/services/agent-installation-service.js.map +0 -1
  186. package/dist/services/agent-manager.js.map +0 -1
  187. package/dist/services/agent-service.js.map +0 -1
  188. package/dist/services/analyse-service.js.map +0 -1
  189. package/dist/services/credential-storage.service.js.map +0 -1
  190. package/dist/services/dashboard-launcher.service.js.map +0 -1
  191. package/dist/services/persona-enhancer.js.map +0 -1
  192. package/dist/services/persona-grouper.d.ts +0 -29
  193. package/dist/services/persona-grouper.d.ts.map +0 -1
  194. package/dist/services/persona-grouper.js +0 -111
  195. package/dist/services/persona-grouper.js.map +0 -1
  196. package/dist/services/persona-service.js.map +0 -1
  197. package/dist/services/remote/auth-token-service.js.map +0 -1
  198. package/dist/services/remote/persona-sync-service.js.map +0 -1
  199. package/dist/services/remote/system-persona-service.js.map +0 -1
  200. package/dist/services/repo-service.js.map +0 -1
  201. package/dist/services/types/persona-types.d.ts +0 -84
  202. package/dist/services/types/persona-types.d.ts.map +0 -1
  203. package/dist/services/types/persona-types.js +0 -5
  204. package/dist/services/types/persona-types.js.map +0 -1
  205. package/dist/services/versioning-service.js.map +0 -1
  206. package/dist/storage/local-filesystem-adapter.js.map +0 -1
  207. package/dist/storage/platform-config-adapter.js.map +0 -1
  208. package/dist/storage/platform-path-builder.js.map +0 -1
  209. package/dist/storage/storage-path-builder.js.map +0 -1
  210. package/dist/test-setup.d.ts +0 -2
  211. package/dist/test-setup.d.ts.map +0 -1
  212. package/dist/test-setup.js +0 -12
  213. package/dist/test-setup.js.map +0 -1
  214. package/dist/tools/analyse-request/analyse-request.tool.js.map +0 -1
  215. package/dist/tools/analyse.tool.js.map +0 -1
  216. package/dist/tools/config/config.tool.js.map +0 -1
  217. package/dist/tools/config/index.js.map +0 -1
  218. package/dist/tools/index.js.map +0 -1
  219. package/dist/tools/persona/as.tool.js.map +0 -1
  220. package/dist/tools/persona/persona.tool.js.map +0 -1
  221. package/dist/tools/plan/plan.tool.js.map +0 -1
  222. package/dist/tools/rules/rules.tool.js.map +0 -1
  223. package/dist/tools/strategy/strategy.tool.js.map +0 -1
  224. package/dist/tools/thinking/thinking.tool.js.map +0 -1
  225. package/dist/tools/tool-registry.js.map +0 -1
  226. package/dist/tools/update/update.tool.js.map +0 -1
  227. package/dist/tools/validate-response/validate-response.tool.js.map +0 -1
  228. package/dist/types/local-context.js.map +0 -1
  229. package/dist/types/request-context.js.map +0 -1
  230. package/dist/utils/adr-pattern-detector.d.ts +0 -38
  231. package/dist/utils/adr-pattern-detector.d.ts.map +0 -1
  232. package/dist/utils/adr-pattern-detector.js +0 -158
  233. package/dist/utils/adr-pattern-detector.js.map +0 -1
  234. package/dist/utils/adr-suggestion-generator.d.ts +0 -50
  235. package/dist/utils/adr-suggestion-generator.d.ts.map +0 -1
  236. package/dist/utils/adr-suggestion-generator.js +0 -63
  237. package/dist/utils/adr-suggestion-generator.js.map +0 -1
  238. package/dist/utils/commit-parser.d.ts +0 -25
  239. package/dist/utils/commit-parser.d.ts.map +0 -1
  240. package/dist/utils/commit-parser.js +0 -46
  241. package/dist/utils/commit-parser.js.map +0 -1
  242. package/dist/utils/package-version.js.map +0 -1
  243. package/dist/utils/repo-utils.js.map +0 -1
  244. package/templates/adr/README.md +0 -243
  245. package/templates/adr/_template/0001-record-architecture-decisions.md +0 -223
  246. package/templates/adr/_template/ADR_CREATION_INSTRUCTIONS.md +0 -234
  247. package/templates/adr/_template/adr-schema.json +0 -74
  248. package/templates/adr/_template/adr-template.md +0 -136
  249. package/templates/prd/PRD_CREATION_INSTRUCTIONS.md +0 -268
  250. package/templates/prd/README.md +0 -252
  251. package/templates/prd/_template/feature-template.md +0 -105
  252. package/templates/prd/_template/prd-template.md +0 -126
  253. package/templates/prd/example-task-management/features/task-collaboration.md +0 -84
  254. package/templates/prd/example-task-management/features/task-crud.md +0 -222
  255. package/templates/prd/example-task-management/features/task-workflow.md +0 -62
  256. package/templates/prd/example-task-management/prd.md +0 -177
  257. package/templates/prd/feature-schema.json +0 -54
  258. package/templates/prd/prd-schema.json +0 -60
@@ -214,4 +214,3 @@ export class ClaudeCodeFormatter {
214
214
  return [];
215
215
  }
216
216
  }
217
- //# sourceMappingURL=claude-code-formatter.js.map
@@ -58,4 +58,3 @@ export class FormatterFactory {
58
58
  }
59
59
  }
60
60
  }
61
- //# sourceMappingURL=formatter-factory.js.map
@@ -9,4 +9,3 @@ export var AgentFormat;
9
9
  AgentFormat["MARKDOWN"] = "markdown";
10
10
  AgentFormat["JSON"] = "json"; // Generic JSON
11
11
  })(AgentFormat || (AgentFormat = {}));
12
- //# sourceMappingURL=types.js.map
@@ -98,4 +98,3 @@ export function createConsoleLogger(minLevel) {
98
98
  : (minLevel || 'info');
99
99
  return new ConsoleLogger(effectiveLevel);
100
100
  }
101
- //# sourceMappingURL=console-logger.js.map
@@ -220,4 +220,3 @@ class ContextualFileLogger {
220
220
  return this.parent.child(`${this.context}:${context}`);
221
221
  }
222
222
  }
223
- //# sourceMappingURL=file-logger.js.map
@@ -587,4 +587,3 @@ export class MCPServer {
587
587
  return {};
588
588
  }
589
589
  }
590
- //# sourceMappingURL=mcp-server.js.map
package/dist/index.d.ts CHANGED
@@ -1,16 +1,30 @@
1
1
  /**
2
- * Tiny Brain Local MCP Server
2
+ * @magic-ingredients/tiny-brain-local
3
3
  *
4
- * Local implementation of the Tiny Brain AI assistant
5
- * using the Model Context Protocol (MCP)
4
+ * MCP server for Tiny Brain AI assistant
6
5
  */
7
- declare global {
8
- var mcpServerStarted: boolean;
9
- }
6
+ export { MCPServer } from './core/mcp-server.js';
7
+ export type { MCPConfig } from './core/mcp-server.js';
8
+ export { FileLogger } from './core/file-logger.js';
9
+ export type { FileLoggerConfig } from './core/file-logger.js';
10
+ export { ConsoleLogger, createConsoleLogger } from './core/console-logger.js';
10
11
  export { ToolRegistry } from './tools/tool-registry.js';
11
12
  export { PromptRegistry } from './prompts/prompt-registry.js';
12
13
  export type { TinyBrainTool, ToolResult, ToolArguments } from './tools/index.js';
13
14
  export type { PromptClass, PromptResponse } from './prompts/index.js';
14
- export type { RequestContext } from './types/request-context.js';
15
- export type { DeploymentStorageAdapter, Logger, LogLevel } from '@magic-ingredients/tiny-brain-core';
15
+ export type { LocalRequestContext } from './types/local-context.js';
16
+ export { LocalFilesystemStorageAdapter } from './storage/local-filesystem-adapter.js';
17
+ export { PlatformConfigAdapter } from './storage/platform-config-adapter.js';
18
+ export { PlatformPathBuilder } from './storage/platform-path-builder.js';
19
+ export type { ConfigScope } from './storage/platform-path-builder.js';
20
+ export { CredentialStorageService } from './services/credential-storage.service.js';
21
+ export { DashboardLauncher } from './services/dashboard-launcher.service.js';
22
+ export { AuthTokenService } from './services/remote/auth-token-service.js';
23
+ export type { AuthToken } from './services/remote/auth-token-service.js';
24
+ export { SystemPersonaService } from './services/remote/system-persona-service.js';
25
+ export { AnalyseService } from './services/analyse-service.js';
26
+ export type { AnalyseResult } from './services/analyse-service.js';
27
+ export { AgentManager } from './services/agent-manager.js';
28
+ export type { DeploymentStorageAdapter, Logger, LogLevel, RequestContext, PersonaProfile } from '@magic-ingredients/tiny-brain-core';
29
+ export declare const VERSION = "0.13.1";
16
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,gBAAgB,EAAE,OAAO,CAAC;CAC/B;AAID,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,YAAY,EACV,wBAAwB,EACxB,MAAM,EACN,QAAQ,EACT,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjF,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,YAAY,EACV,wBAAwB,EACxB,MAAM,EACN,QAAQ,EACR,cAAc,EACd,cAAc,EACf,MAAM,oCAAoC,CAAC;AAE5C,eAAO,MAAM,OAAO,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,153 +1,25 @@
1
1
  /**
2
- * Tiny Brain Local MCP Server
2
+ * @magic-ingredients/tiny-brain-local
3
3
  *
4
- * Local implementation of the Tiny Brain AI assistant
5
- * using the Model Context Protocol (MCP)
4
+ * MCP server for Tiny Brain AI assistant
6
5
  */
7
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
- import { MCPServer } from './core/mcp-server.js';
9
- import { readFileSync, appendFileSync, existsSync, mkdirSync } from 'fs';
10
- import { fileURLToPath } from 'url';
11
- import { dirname, join } from 'path';
12
- import { homedir } from 'os';
13
- import { config as dotenvConfig } from 'dotenv';
14
- global.mcpServerStarted = false;
15
- // Export types and registries for use by other packages
6
+ // Core MCP server
7
+ export { MCPServer } from './core/mcp-server.js';
8
+ // Loggers
9
+ export { FileLogger } from './core/file-logger.js';
10
+ export { ConsoleLogger, createConsoleLogger } from './core/console-logger.js';
11
+ // Registries
16
12
  export { ToolRegistry } from './tools/tool-registry.js';
17
13
  export { PromptRegistry } from './prompts/prompt-registry.js';
18
- /**
19
- * Startup logging that writes to both stderr and debug.log
20
- * This ensures we can debug issues even when the main logger hasn't initialized
21
- */
22
- function startupLog(message, data) {
23
- message = `(startup) ${message}`;
24
- const timestamp = new Date().toISOString();
25
- const logEntry = {
26
- timestamp,
27
- level: 'DEBUG',
28
- pid: process.pid,
29
- message,
30
- ...(data && { data })
31
- };
32
- // Only log to stderr during startup, before MCP server is initialized
33
- // This is safe because MCP protocol hasn't started yet
34
- if (!global.mcpServerStarted) {
35
- console.error(`[tiny-brain-startup] ${message}`, data ? JSON.stringify(data) : '');
36
- }
37
- // Try to log to file
38
- try {
39
- let dataDir = process.env.DATADIR || process.env.TINY_BRAIN_DATA_DIR || '~/.tiny-brain';
40
- // Expand ~ to home directory
41
- if (dataDir.startsWith('~')) {
42
- dataDir = join(homedir(), dataDir.slice(1));
43
- }
44
- const logPath = join(dataDir, 'debug.log');
45
- // Ensure directory exists
46
- if (!existsSync(dataDir)) {
47
- mkdirSync(dataDir, { recursive: true });
48
- }
49
- // Append to log file
50
- appendFileSync(logPath, JSON.stringify(logEntry) + '\n');
51
- }
52
- catch (error) {
53
- // Only log errors during startup
54
- if (!global.mcpServerStarted) {
55
- console.error('[tiny-brain-startup] Failed to write to log file:', error);
56
- }
57
- }
58
- }
59
- async function main() {
60
- startupLog('main() function called');
61
- // Load environment variables from .env.local file
62
- // Find .env.local relative to this source file, regardless of working directory
63
- const __filename = fileURLToPath(import.meta.url);
64
- const __dirname = dirname(__filename);
65
- const envPath = join(__dirname, '../.env.local');
66
- // Load dotenv config
67
- const result = dotenvConfig({ path: envPath });
68
- if (result.parsed) {
69
- startupLog('Loaded .env.local configuration', {
70
- TBS_URL: process.env.TBS_URL,
71
- TBR_URL: process.env.TBR_URL,
72
- loadedCount: Object.keys(result.parsed).length
73
- });
74
- }
75
- else if (result.error) {
76
- startupLog('Failed to load .env.local:', result.error.message);
77
- }
78
- try {
79
- startupLog('Fetching package.json version...');
80
- const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
81
- const VERSION = packageJson.version;
82
- startupLog('Starting server', {
83
- pid: process.pid,
84
- node: process.version,
85
- version: VERSION,
86
- args: process.argv,
87
- env: process.env
88
- });
89
- // Create MCP server with config from environment
90
- // DXT passes config as uppercase env vars prefixed with the config name
91
- const server = new MCPServer({
92
- name: 'tiny-brain-local',
93
- version: VERSION,
94
- autoStartDashboard: process.env.AUTOSTARTDASHBOARD !== 'false' && process.env.TINY_BRAIN_AUTO_START_DASHBOARD !== 'false',
95
- dashboardPort: parseInt(process.env.DASHBOARD_PORT || '8765'),
96
- account: {
97
- clientId: process.env.CLIENTID || process.env.TINY_BRAIN_CLIENT_ID,
98
- clientSecret: process.env.CLIENTSECRET || process.env.TINY_BRAIN_CLIENT_SECRET,
99
- },
100
- debug: {
101
- dataDir: process.env.DATADIR || process.env.TINY_BRAIN_DATA_DIR,
102
- logLevel: (process.env.LOGLEVEL || process.env.LOG_LEVEL),
103
- },
104
- });
105
- startupLog('MCPServer instance created');
106
- // Initialize server
107
- startupLog('Initializing server...');
108
- await server.initialize();
109
- startupLog('Server initialized successfully');
110
- // Create and connect transport
111
- startupLog('Creating StdioServerTransport...');
112
- const transport = new StdioServerTransport();
113
- startupLog('Connecting to transport...');
114
- await server.connect(transport);
115
- // Mark that MCP server has started - no more console output allowed
116
- global.mcpServerStarted = true;
117
- startupLog('Connected to transport successfully - MCP protocol active');
118
- // Handle shutdown
119
- process.on('SIGINT', async () => {
120
- await server.shutdown();
121
- process.exit(0);
122
- });
123
- process.on('SIGTERM', async () => {
124
- await server.shutdown();
125
- process.exit(0);
126
- });
127
- }
128
- catch (error) {
129
- // Log to both stderr and file for debugging
130
- startupLog('Server initialization failed', {
131
- error: error instanceof Error ? {
132
- message: error.message,
133
- stack: error.stack,
134
- name: error.name
135
- } : error
136
- });
137
- process.exit(1);
138
- }
139
- }
140
- // Run the server - for DXT bundled version, this always runs
141
- // For library usage, consumers would import specific exports instead of running this file
142
- startupLog('Starting main() execution');
143
- main().catch((error) => {
144
- startupLog('Fatal error in main()', {
145
- error: error instanceof Error ? {
146
- message: error.message,
147
- stack: error.stack,
148
- name: error.name
149
- } : error
150
- });
151
- process.exit(1);
152
- });
153
- //# sourceMappingURL=index.js.map
14
+ // Storage
15
+ export { LocalFilesystemStorageAdapter } from './storage/local-filesystem-adapter.js';
16
+ export { PlatformConfigAdapter } from './storage/platform-config-adapter.js';
17
+ export { PlatformPathBuilder } from './storage/platform-path-builder.js';
18
+ // Services
19
+ export { CredentialStorageService } from './services/credential-storage.service.js';
20
+ export { DashboardLauncher } from './services/dashboard-launcher.service.js';
21
+ export { AuthTokenService } from './services/remote/auth-token-service.js';
22
+ export { SystemPersonaService } from './services/remote/system-persona-service.js';
23
+ export { AnalyseService } from './services/analyse-service.js';
24
+ export { AgentManager } from './services/agent-manager.js';
25
+ export const VERSION = '0.13.1';
@@ -2,4 +2,3 @@
2
2
  * Prompt System Types and Interfaces
3
3
  */
4
4
  export {};
5
- //# sourceMappingURL=index.js.map
@@ -587,4 +587,3 @@ export class PersonaPrompt {
587
587
  }
588
588
  }
589
589
  }
590
- //# sourceMappingURL=persona.prompt.js.map
@@ -829,4 +829,3 @@ Progress: ${state.overallProgress.percentComplete}% (${state.overallProgress.com
829
829
  }
830
830
  }
831
831
  }
832
- //# sourceMappingURL=planning.prompt.js.map
@@ -65,4 +65,3 @@ export class PromptRegistry {
65
65
  // Export convenience functions
66
66
  export const getPromptByName = (name) => PromptRegistry.getPromptByName(name);
67
67
  export const getAllPromptNames = () => PromptRegistry.getPrompts().map((prompt) => prompt.name);
68
- //# sourceMappingURL=prompt-registry.js.map
@@ -207,4 +207,3 @@ export class RulesPrompt {
207
207
  }
208
208
  }
209
209
  }
210
- //# sourceMappingURL=rules.prompt.js.map
@@ -168,4 +168,3 @@ export class ThinkingPrompt {
168
168
  }
169
169
  }
170
170
  }
171
- //# sourceMappingURL=thinking.prompt.js.map
@@ -129,4 +129,3 @@ export class UpdateService {
129
129
  this.cache.clear();
130
130
  }
131
131
  }
132
- //# sourceMappingURL=UpdateService.js.map
@@ -325,4 +325,3 @@ Specialized ${agentName.replace(/-/g, ' ')} functionality
325
325
  return metadata;
326
326
  }
327
327
  }
328
- //# sourceMappingURL=agent-installation-service.js.map
@@ -154,4 +154,3 @@ export class AgentManager {
154
154
  }
155
155
  }
156
156
  }
157
- //# sourceMappingURL=agent-manager.js.map
@@ -270,4 +270,3 @@ export class AgentService {
270
270
  return FormatterFactory.detectFormat();
271
271
  }
272
272
  }
273
- //# sourceMappingURL=agent-service.js.map
@@ -25,6 +25,10 @@ export interface AgentRemovalRecommendation {
25
25
  name: string;
26
26
  description?: string;
27
27
  }
28
+ export interface SkillInfo {
29
+ name: string;
30
+ version: string;
31
+ }
28
32
  export interface AgentRecommendations {
29
33
  install: AgentRecommendation[];
30
34
  update: AgentUpdateRecommendation[];
@@ -36,9 +40,11 @@ export interface AnalyseResult {
36
40
  dryRun?: boolean;
37
41
  contextPath: string;
38
42
  currentAgents?: string[];
43
+ installedSkills?: SkillInfo[];
39
44
  recommendations?: AgentRecommendations | null;
40
45
  prdInitialized?: boolean;
41
46
  adrInitialized?: boolean;
47
+ gitHooksInstalled?: boolean;
42
48
  contextBlockVersion?: string;
43
49
  contextBlockUpdated?: boolean;
44
50
  changes?: {
@@ -74,17 +80,51 @@ export declare class AnalyseService {
74
80
  */
75
81
  performAnalysis(options?: AnalyseOptions): Promise<AnalyseResult>;
76
82
  /**
77
- * Initialize PRD directory structure in the current repository
78
- * Copies templates from the package to docs/prd/ if it doesn't exist
79
- * @returns true if directory was created, false if it already exists
83
+ * Extract version from SKILL.md frontmatter
84
+ * @param skillPath - Path to SKILL.md file
85
+ * @returns Version string or null if not found
86
+ */
87
+ private extractSkillVersion;
88
+ /**
89
+ * Install a single skill with its templates
90
+ * @param skillName - Name of the skill (e.g., 'plan', 'feature', 'fix')
91
+ * @param templates - Array of template files to copy
92
+ * @param skillsDir - Target skills directory
93
+ * @param srcSkillsDir - Source skills directory
94
+ * @param srcTemplatesDir - Source templates directory
95
+ * @returns true if skill was installed/updated
96
+ */
97
+ private installSkill;
98
+ /**
99
+ * Register repository in dashboard for visibility
100
+ * Called after successful analysis regardless of invocation method
101
+ */
102
+ private registerRepository;
103
+ /**
104
+ * Count PRD directories in a repository
80
105
  */
81
- private initializePRDStructure;
106
+ private countPrdsInRepo;
82
107
  /**
83
- * Initialize ADR directory structure in the current repository
84
- * Copies templates from the package to docs/adr/ if it doesn't exist
85
- * @returns true if directory was created, false if it already exists
108
+ * Initialize SDD skills (plan, feature, fix) in .claude/skills/
109
+ * @returns true if any skills were installed or updated
86
110
  */
87
- private initializeADRStructure;
111
+ private initializeSDDSkills;
112
+ /**
113
+ * Initialize ADR skill in .claude/skills/
114
+ * @returns true if skill was installed or updated
115
+ */
116
+ private initializeADRSkill;
117
+ /**
118
+ * Initialize git hooks for TDD workflow
119
+ * Copies hook templates to .git/hooks/ if not already present
120
+ * @returns true if any hooks were installed
121
+ */
122
+ private initializeGitHooks;
123
+ /**
124
+ * Get installed skills with their versions from .claude/skills/
125
+ * @returns Array of installed skills with name and version
126
+ */
127
+ private getInstalledSkills;
88
128
  /**
89
129
  * Fetch agent recommendations from TBR based on repo analysis and current agents
90
130
  */
@@ -97,6 +137,10 @@ export declare class AnalyseService {
97
137
  * Format recommendations section for output
98
138
  */
99
139
  private formatRecommendations;
140
+ /**
141
+ * Format skills help text explaining model-invoked behavior
142
+ */
143
+ private formatSkillsHelpText;
100
144
  /**
101
145
  * Compare two tech stacks and return differences
102
146
  * Handles null previous analysis (first run)
@@ -1 +1 @@
1
- {"version":3,"file":"analyse-service.d.ts","sourceRoot":"","sources":["../../src/services/analyse-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyse-service.d.ts","sourceRoot":"","sources":["../../src/services/analyse-service.ts"],"names":[],"mappings":"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"}