@mc1global/opencode-jarvis 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/application/agent-registry/dtos.d.ts +66 -0
  2. package/dist/application/agent-registry/dtos.d.ts.map +1 -0
  3. package/dist/application/agent-registry/dtos.js +11 -0
  4. package/dist/application/agent-registry/dtos.js.map +1 -0
  5. package/dist/application/agent-registry/use-cases.d.ts +39 -0
  6. package/dist/application/agent-registry/use-cases.d.ts.map +1 -0
  7. package/dist/application/agent-registry/use-cases.js +222 -0
  8. package/dist/application/agent-registry/use-cases.js.map +1 -0
  9. package/dist/application/azure-sync/dtos.d.ts +210 -0
  10. package/dist/application/azure-sync/dtos.d.ts.map +1 -0
  11. package/dist/application/azure-sync/dtos.js +11 -0
  12. package/dist/application/azure-sync/dtos.js.map +1 -0
  13. package/dist/application/azure-sync/field-builders.d.ts +54 -0
  14. package/dist/application/azure-sync/field-builders.d.ts.map +1 -0
  15. package/dist/application/azure-sync/field-builders.js +166 -0
  16. package/dist/application/azure-sync/field-builders.js.map +1 -0
  17. package/dist/application/azure-sync/index.d.ts +16 -0
  18. package/dist/application/azure-sync/index.d.ts.map +1 -0
  19. package/dist/application/azure-sync/index.js +10 -0
  20. package/dist/application/azure-sync/index.js.map +1 -0
  21. package/dist/application/azure-sync/pr-use-cases.d.ts +39 -0
  22. package/dist/application/azure-sync/pr-use-cases.d.ts.map +1 -0
  23. package/dist/application/azure-sync/pr-use-cases.js +192 -0
  24. package/dist/application/azure-sync/pr-use-cases.js.map +1 -0
  25. package/dist/application/azure-sync/pull-use-cases.d.ts +43 -0
  26. package/dist/application/azure-sync/pull-use-cases.d.ts.map +1 -0
  27. package/dist/application/azure-sync/pull-use-cases.js +322 -0
  28. package/dist/application/azure-sync/pull-use-cases.js.map +1 -0
  29. package/dist/application/azure-sync/push-use-cases.d.ts +53 -0
  30. package/dist/application/azure-sync/push-use-cases.d.ts.map +1 -0
  31. package/dist/application/azure-sync/push-use-cases.js +341 -0
  32. package/dist/application/azure-sync/push-use-cases.js.map +1 -0
  33. package/dist/application/azure-sync/reverse-field-builder.d.ts +52 -0
  34. package/dist/application/azure-sync/reverse-field-builder.d.ts.map +1 -0
  35. package/dist/application/azure-sync/reverse-field-builder.js +130 -0
  36. package/dist/application/azure-sync/reverse-field-builder.js.map +1 -0
  37. package/dist/application/azure-sync/task-push-use-cases.d.ts +68 -0
  38. package/dist/application/azure-sync/task-push-use-cases.d.ts.map +1 -0
  39. package/dist/application/azure-sync/task-push-use-cases.js +162 -0
  40. package/dist/application/azure-sync/task-push-use-cases.js.map +1 -0
  41. package/dist/application/config/config-service.d.ts +64 -0
  42. package/dist/application/config/config-service.d.ts.map +1 -0
  43. package/dist/application/config/config-service.js +110 -0
  44. package/dist/application/config/config-service.js.map +1 -0
  45. package/dist/application/config/index.d.ts +5 -0
  46. package/dist/application/config/index.d.ts.map +1 -0
  47. package/dist/application/config/index.js +5 -0
  48. package/dist/application/config/index.js.map +1 -0
  49. package/dist/application/kanban/board-use-cases.d.ts.map +1 -1
  50. package/dist/application/kanban/board-use-cases.js +14 -0
  51. package/dist/application/kanban/board-use-cases.js.map +1 -1
  52. package/dist/application/kanban/card-use-cases.d.ts +21 -2
  53. package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
  54. package/dist/application/kanban/card-use-cases.js +180 -1
  55. package/dist/application/kanban/card-use-cases.js.map +1 -1
  56. package/dist/application/kanban/dtos.d.ts +59 -0
  57. package/dist/application/kanban/dtos.d.ts.map +1 -1
  58. package/dist/application/mcp/index.d.ts +10 -0
  59. package/dist/application/mcp/index.d.ts.map +1 -0
  60. package/dist/application/mcp/index.js +8 -0
  61. package/dist/application/mcp/index.js.map +1 -0
  62. package/dist/application/mcp/middleware.d.ts +91 -0
  63. package/dist/application/mcp/middleware.d.ts.map +1 -0
  64. package/dist/application/mcp/middleware.js +84 -0
  65. package/dist/application/mcp/middleware.js.map +1 -0
  66. package/dist/application/mcp/tool-adapter.d.ts +72 -0
  67. package/dist/application/mcp/tool-adapter.d.ts.map +1 -0
  68. package/dist/application/mcp/tool-adapter.js +132 -0
  69. package/dist/application/mcp/tool-adapter.js.map +1 -0
  70. package/dist/application/pipeline/dtos.d.ts +135 -0
  71. package/dist/application/pipeline/dtos.d.ts.map +1 -0
  72. package/dist/application/pipeline/dtos.js +11 -0
  73. package/dist/application/pipeline/dtos.js.map +1 -0
  74. package/dist/application/pipeline/index.d.ts +8 -0
  75. package/dist/application/pipeline/index.d.ts.map +1 -0
  76. package/dist/application/pipeline/index.js +7 -0
  77. package/dist/application/pipeline/index.js.map +1 -0
  78. package/dist/application/pipeline/use-cases.d.ts +67 -0
  79. package/dist/application/pipeline/use-cases.d.ts.map +1 -0
  80. package/dist/application/pipeline/use-cases.js +413 -0
  81. package/dist/application/pipeline/use-cases.js.map +1 -0
  82. package/dist/application/rag/use-cases.d.ts +3 -0
  83. package/dist/application/rag/use-cases.d.ts.map +1 -1
  84. package/dist/application/rag/use-cases.js +112 -34
  85. package/dist/application/rag/use-cases.js.map +1 -1
  86. package/dist/domain/agent-registry/entities.d.ts +68 -0
  87. package/dist/domain/agent-registry/entities.d.ts.map +1 -0
  88. package/dist/domain/agent-registry/entities.js +177 -0
  89. package/dist/domain/agent-registry/entities.js.map +1 -0
  90. package/dist/domain/agent-registry/repositories.d.ts +56 -0
  91. package/dist/domain/agent-registry/repositories.d.ts.map +1 -0
  92. package/dist/domain/agent-registry/repositories.js +12 -0
  93. package/dist/domain/agent-registry/repositories.js.map +1 -0
  94. package/dist/domain/agent-registry/services.d.ts +87 -0
  95. package/dist/domain/agent-registry/services.d.ts.map +1 -0
  96. package/dist/domain/agent-registry/services.js +188 -0
  97. package/dist/domain/agent-registry/services.js.map +1 -0
  98. package/dist/domain/agent-registry/value-objects.d.ts +145 -0
  99. package/dist/domain/agent-registry/value-objects.d.ts.map +1 -0
  100. package/dist/domain/agent-registry/value-objects.js +339 -0
  101. package/dist/domain/agent-registry/value-objects.js.map +1 -0
  102. package/dist/domain/azure-sync/entities.d.ts +165 -0
  103. package/dist/domain/azure-sync/entities.d.ts.map +1 -0
  104. package/dist/domain/azure-sync/entities.js +203 -0
  105. package/dist/domain/azure-sync/entities.js.map +1 -0
  106. package/dist/domain/azure-sync/index.d.ts +16 -0
  107. package/dist/domain/azure-sync/index.d.ts.map +1 -0
  108. package/dist/domain/azure-sync/index.js +14 -0
  109. package/dist/domain/azure-sync/index.js.map +1 -0
  110. package/dist/domain/azure-sync/ports.d.ts +117 -0
  111. package/dist/domain/azure-sync/ports.d.ts.map +1 -0
  112. package/dist/domain/azure-sync/ports.js +13 -0
  113. package/dist/domain/azure-sync/ports.js.map +1 -0
  114. package/dist/domain/azure-sync/repositories.d.ts +53 -0
  115. package/dist/domain/azure-sync/repositories.d.ts.map +1 -0
  116. package/dist/domain/azure-sync/repositories.js +11 -0
  117. package/dist/domain/azure-sync/repositories.js.map +1 -0
  118. package/dist/domain/azure-sync/services.d.ts +107 -0
  119. package/dist/domain/azure-sync/services.d.ts.map +1 -0
  120. package/dist/domain/azure-sync/services.js +316 -0
  121. package/dist/domain/azure-sync/services.js.map +1 -0
  122. package/dist/domain/azure-sync/value-objects.d.ts +129 -0
  123. package/dist/domain/azure-sync/value-objects.d.ts.map +1 -0
  124. package/dist/domain/azure-sync/value-objects.js +343 -0
  125. package/dist/domain/azure-sync/value-objects.js.map +1 -0
  126. package/dist/domain/config/index.d.ts +9 -0
  127. package/dist/domain/config/index.d.ts.map +1 -0
  128. package/dist/domain/config/index.js +7 -0
  129. package/dist/domain/config/index.js.map +1 -0
  130. package/dist/domain/config/repositories.d.ts +36 -0
  131. package/dist/domain/config/repositories.d.ts.map +1 -0
  132. package/dist/domain/config/repositories.js +12 -0
  133. package/dist/domain/config/repositories.js.map +1 -0
  134. package/dist/domain/config/value-objects.d.ts +112 -0
  135. package/dist/domain/config/value-objects.d.ts.map +1 -0
  136. package/dist/domain/config/value-objects.js +93 -0
  137. package/dist/domain/config/value-objects.js.map +1 -0
  138. package/dist/domain/governance/policies.d.ts.map +1 -1
  139. package/dist/domain/governance/policies.js +70 -0
  140. package/dist/domain/governance/policies.js.map +1 -1
  141. package/dist/domain/kanban/entities.d.ts +67 -15
  142. package/dist/domain/kanban/entities.d.ts.map +1 -1
  143. package/dist/domain/kanban/entities.js +177 -14
  144. package/dist/domain/kanban/entities.js.map +1 -1
  145. package/dist/domain/kanban/grooming.d.ts +27 -7
  146. package/dist/domain/kanban/grooming.d.ts.map +1 -1
  147. package/dist/domain/kanban/grooming.js +50 -12
  148. package/dist/domain/kanban/grooming.js.map +1 -1
  149. package/dist/domain/kanban/services.d.ts +16 -2
  150. package/dist/domain/kanban/services.d.ts.map +1 -1
  151. package/dist/domain/kanban/services.js +29 -2
  152. package/dist/domain/kanban/services.js.map +1 -1
  153. package/dist/domain/kanban/value-objects.d.ts +48 -0
  154. package/dist/domain/kanban/value-objects.d.ts.map +1 -1
  155. package/dist/domain/kanban/value-objects.js +53 -0
  156. package/dist/domain/kanban/value-objects.js.map +1 -1
  157. package/dist/domain/pipeline/gate.d.ts +75 -0
  158. package/dist/domain/pipeline/gate.d.ts.map +1 -0
  159. package/dist/domain/pipeline/gate.js +158 -0
  160. package/dist/domain/pipeline/gate.js.map +1 -0
  161. package/dist/domain/pipeline/index.d.ts +13 -0
  162. package/dist/domain/pipeline/index.d.ts.map +1 -0
  163. package/dist/domain/pipeline/index.js +14 -0
  164. package/dist/domain/pipeline/index.js.map +1 -0
  165. package/dist/domain/pipeline/pipeline.d.ts +99 -0
  166. package/dist/domain/pipeline/pipeline.d.ts.map +1 -0
  167. package/dist/domain/pipeline/pipeline.js +257 -0
  168. package/dist/domain/pipeline/pipeline.js.map +1 -0
  169. package/dist/domain/pipeline/ports.d.ts +120 -0
  170. package/dist/domain/pipeline/ports.d.ts.map +1 -0
  171. package/dist/domain/pipeline/ports.js +12 -0
  172. package/dist/domain/pipeline/ports.js.map +1 -0
  173. package/dist/domain/pipeline/repositories.d.ts +66 -0
  174. package/dist/domain/pipeline/repositories.d.ts.map +1 -0
  175. package/dist/domain/pipeline/repositories.js +11 -0
  176. package/dist/domain/pipeline/repositories.js.map +1 -0
  177. package/dist/domain/pipeline/services.d.ts +77 -0
  178. package/dist/domain/pipeline/services.d.ts.map +1 -0
  179. package/dist/domain/pipeline/services.js +156 -0
  180. package/dist/domain/pipeline/services.js.map +1 -0
  181. package/dist/domain/pipeline/value-objects.d.ts +117 -0
  182. package/dist/domain/pipeline/value-objects.d.ts.map +1 -0
  183. package/dist/domain/pipeline/value-objects.js +313 -0
  184. package/dist/domain/pipeline/value-objects.js.map +1 -0
  185. package/dist/domain/rag/value-objects.d.ts +9 -2
  186. package/dist/domain/rag/value-objects.d.ts.map +1 -1
  187. package/dist/domain/rag/value-objects.js +8 -2
  188. package/dist/domain/rag/value-objects.js.map +1 -1
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +113 -75
  191. package/dist/index.js.map +1 -1
  192. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts +29 -0
  193. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts.map +1 -0
  194. package/dist/infrastructure/agent-registry/agent-profile-repository.js +109 -0
  195. package/dist/infrastructure/agent-registry/agent-profile-repository.js.map +1 -0
  196. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts +28 -0
  197. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts.map +1 -0
  198. package/dist/infrastructure/agent-registry/agent-session-adapter.js +61 -0
  199. package/dist/infrastructure/agent-registry/agent-session-adapter.js.map +1 -0
  200. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts +19 -0
  201. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts.map +1 -0
  202. package/dist/infrastructure/agent-registry/built-in-profiles.js +210 -0
  203. package/dist/infrastructure/agent-registry/built-in-profiles.js.map +1 -0
  204. package/dist/infrastructure/azure-sync/azure-auth.d.ts +40 -0
  205. package/dist/infrastructure/azure-sync/azure-auth.d.ts.map +1 -0
  206. package/dist/infrastructure/azure-sync/azure-auth.js +94 -0
  207. package/dist/infrastructure/azure-sync/azure-auth.js.map +1 -0
  208. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts +43 -0
  209. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts.map +1 -0
  210. package/dist/infrastructure/azure-sync/azure-devops-client.js +296 -0
  211. package/dist/infrastructure/azure-sync/azure-devops-client.js.map +1 -0
  212. package/dist/infrastructure/azure-sync/index.d.ts +9 -0
  213. package/dist/infrastructure/azure-sync/index.d.ts.map +1 -0
  214. package/dist/infrastructure/azure-sync/index.js +12 -0
  215. package/dist/infrastructure/azure-sync/index.js.map +1 -0
  216. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts +39 -0
  217. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts.map +1 -0
  218. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js +202 -0
  219. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js.map +1 -0
  220. package/dist/infrastructure/config/index.d.ts +5 -0
  221. package/dist/infrastructure/config/index.d.ts.map +1 -0
  222. package/dist/infrastructure/config/index.js +5 -0
  223. package/dist/infrastructure/config/index.js.map +1 -0
  224. package/dist/infrastructure/config/yaml-config-repository.d.ts +22 -0
  225. package/dist/infrastructure/config/yaml-config-repository.d.ts.map +1 -0
  226. package/dist/infrastructure/config/yaml-config-repository.js +68 -0
  227. package/dist/infrastructure/config/yaml-config-repository.js.map +1 -0
  228. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts +21 -0
  229. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts.map +1 -0
  230. package/dist/infrastructure/domain-map/llm-prompt-factory.js +49 -0
  231. package/dist/infrastructure/domain-map/llm-prompt-factory.js.map +1 -0
  232. package/dist/infrastructure/kanban/card-repository.d.ts +6 -0
  233. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -1
  234. package/dist/infrastructure/kanban/card-repository.js +79 -7
  235. package/dist/infrastructure/kanban/card-repository.js.map +1 -1
  236. package/dist/infrastructure/pipeline/dagger-adapter.d.ts +50 -0
  237. package/dist/infrastructure/pipeline/dagger-adapter.d.ts.map +1 -0
  238. package/dist/infrastructure/pipeline/dagger-adapter.js +153 -0
  239. package/dist/infrastructure/pipeline/dagger-adapter.js.map +1 -0
  240. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts +35 -0
  241. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts.map +1 -0
  242. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js +132 -0
  243. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js.map +1 -0
  244. package/dist/infrastructure/pipeline/index.d.ts +20 -0
  245. package/dist/infrastructure/pipeline/index.d.ts.map +1 -0
  246. package/dist/infrastructure/pipeline/index.js +19 -0
  247. package/dist/infrastructure/pipeline/index.js.map +1 -0
  248. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts +23 -0
  249. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts.map +1 -0
  250. package/dist/infrastructure/pipeline/pipeline-template-registry.js +63 -0
  251. package/dist/infrastructure/pipeline/pipeline-template-registry.js.map +1 -0
  252. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts +17 -0
  253. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts.map +1 -0
  254. package/dist/infrastructure/pipeline/scaffold-templates-extra.js +467 -0
  255. package/dist/infrastructure/pipeline/scaffold-templates-extra.js.map +1 -0
  256. package/dist/infrastructure/pipeline/scaffold-templates.d.ts +23 -0
  257. package/dist/infrastructure/pipeline/scaffold-templates.d.ts.map +1 -0
  258. package/dist/infrastructure/pipeline/scaffold-templates.js +476 -0
  259. package/dist/infrastructure/pipeline/scaffold-templates.js.map +1 -0
  260. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts +32 -0
  261. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts.map +1 -0
  262. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js +197 -0
  263. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js.map +1 -0
  264. package/dist/mcp-server.d.ts +3 -0
  265. package/dist/mcp-server.d.ts.map +1 -0
  266. package/dist/mcp-server.js +300 -0
  267. package/dist/mcp-server.js.map +1 -0
  268. package/dist/tools/agent-registry-tools.d.ts +11 -0
  269. package/dist/tools/agent-registry-tools.d.ts.map +1 -0
  270. package/dist/tools/agent-registry-tools.js +208 -0
  271. package/dist/tools/agent-registry-tools.js.map +1 -0
  272. package/dist/tools/azure-sync-tools.d.ts +15 -0
  273. package/dist/tools/azure-sync-tools.d.ts.map +1 -0
  274. package/dist/tools/azure-sync-tools.js +332 -0
  275. package/dist/tools/azure-sync-tools.js.map +1 -0
  276. package/dist/tools/kanban-card-tools.d.ts.map +1 -1
  277. package/dist/tools/kanban-card-tools.js +41 -16
  278. package/dist/tools/kanban-card-tools.js.map +1 -1
  279. package/dist/tools/kanban-gate-tools.d.ts +7 -0
  280. package/dist/tools/kanban-gate-tools.d.ts.map +1 -0
  281. package/dist/tools/kanban-gate-tools.js +106 -0
  282. package/dist/tools/kanban-gate-tools.js.map +1 -0
  283. package/dist/tools/kanban-grooming-tools.d.ts +7 -0
  284. package/dist/tools/kanban-grooming-tools.d.ts.map +1 -0
  285. package/dist/tools/kanban-grooming-tools.js +180 -0
  286. package/dist/tools/kanban-grooming-tools.js.map +1 -0
  287. package/dist/tools/pipeline-tools.d.ts +15 -0
  288. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  289. package/dist/tools/pipeline-tools.js +424 -0
  290. package/dist/tools/pipeline-tools.js.map +1 -0
  291. package/package.json +7 -2
@@ -0,0 +1,197 @@
1
+ import { Pipeline } from "../../domain/pipeline/pipeline.js";
2
+ import { PipelineId, GateId, DaggerFunctionRef, SemanticVersion, GateOutput, } from "../../domain/pipeline/value-objects.js";
3
+ import { WorkspaceId, Timestamp } from "../../domain/shared/value-objects.js";
4
+ // ─── Schema ──────────────────────────────────────────────────────────────────
5
+ const SCHEMA_KEY = "pipelines";
6
+ const DDL = `
7
+ CREATE TABLE IF NOT EXISTS pipelines (
8
+ id TEXT PRIMARY KEY,
9
+ workspace_id TEXT NOT NULL,
10
+ template_id TEXT NOT NULL,
11
+ scope TEXT NOT NULL,
12
+ status TEXT NOT NULL,
13
+ version TEXT NOT NULL,
14
+ created_at TEXT NOT NULL,
15
+ activated_at TEXT,
16
+ completed_at TEXT,
17
+ card_id TEXT
18
+ );
19
+ CREATE INDEX IF NOT EXISTS idx_pipeline_workspace
20
+ ON pipelines(workspace_id);
21
+ CREATE INDEX IF NOT EXISTS idx_pipeline_workspace_status
22
+ ON pipelines(workspace_id, status);
23
+ CREATE INDEX IF NOT EXISTS idx_pipeline_workspace_scope
24
+ ON pipelines(workspace_id, scope);
25
+
26
+ CREATE TABLE IF NOT EXISTS pipeline_gates (
27
+ id TEXT NOT NULL,
28
+ pipeline_id TEXT NOT NULL,
29
+ type TEXT NOT NULL,
30
+ status TEXT NOT NULL,
31
+ gate_order INTEGER NOT NULL,
32
+ dagger_function TEXT NOT NULL,
33
+ skip_policy TEXT NOT NULL,
34
+ command TEXT,
35
+ output TEXT,
36
+ skipped_reason TEXT,
37
+ approved_by TEXT,
38
+ started_at TEXT,
39
+ completed_at TEXT,
40
+ PRIMARY KEY (pipeline_id, id),
41
+ FOREIGN KEY (pipeline_id) REFERENCES pipelines(id) ON DELETE CASCADE
42
+ );
43
+ CREATE INDEX IF NOT EXISTS idx_gate_pipeline
44
+ ON pipeline_gates(pipeline_id);
45
+ `;
46
+ // ─── Repository Implementation ───────────────────────────────────────────────
47
+ export class SqlitePipelineRepository {
48
+ db;
49
+ constructor(db) {
50
+ this.db = db;
51
+ this.db.ensureSchema(SCHEMA_KEY, DDL);
52
+ }
53
+ async save(pipeline) {
54
+ const props = pipeline.toProps();
55
+ this.db.transaction(() => {
56
+ // Upsert pipeline row
57
+ const pipelineSql = `
58
+ INSERT INTO pipelines (
59
+ id, workspace_id, template_id, scope, status,
60
+ version, created_at, activated_at, completed_at, card_id
61
+ )
62
+ VALUES (
63
+ @id, @workspace_id, @template_id, @scope, @status,
64
+ @version, @created_at, @activated_at, @completed_at, @card_id
65
+ )
66
+ ON CONFLICT(id) DO UPDATE SET
67
+ status = @status,
68
+ version = @version,
69
+ activated_at = @activated_at,
70
+ completed_at = @completed_at,
71
+ card_id = @card_id
72
+ `;
73
+ this.db.execute(pipelineSql, {
74
+ id: props.id.value,
75
+ workspace_id: props.workspaceId.value,
76
+ template_id: props.templateId,
77
+ scope: props.scope,
78
+ status: props.status,
79
+ version: props.version.toString(),
80
+ created_at: props.createdAt.toISO(),
81
+ activated_at: props.activatedAt?.toISO() ?? null,
82
+ completed_at: props.completedAt?.toISO() ?? null,
83
+ card_id: props.cardId ?? null,
84
+ });
85
+ // Delete existing gates and re-insert (simpler than per-gate upsert)
86
+ this.db.execute("DELETE FROM pipeline_gates WHERE pipeline_id = @pipeline_id", { pipeline_id: props.id.value });
87
+ const gateSql = `
88
+ INSERT INTO pipeline_gates (
89
+ id, pipeline_id, type, status, gate_order,
90
+ dagger_function, skip_policy, command, output,
91
+ skipped_reason, approved_by, started_at, completed_at
92
+ )
93
+ VALUES (
94
+ @id, @pipeline_id, @type, @status, @gate_order,
95
+ @dagger_function, @skip_policy, @command, @output,
96
+ @skipped_reason, @approved_by, @started_at, @completed_at
97
+ )
98
+ `;
99
+ for (const gate of props.gates) {
100
+ this.db.execute(gateSql, {
101
+ id: gate.id.value,
102
+ pipeline_id: props.id.value,
103
+ type: gate.type,
104
+ status: gate.status,
105
+ gate_order: gate.order,
106
+ dagger_function: gate.daggerFunction.value,
107
+ skip_policy: gate.skipPolicy,
108
+ command: gate.command ?? null,
109
+ output: gate.output?.value ?? null,
110
+ skipped_reason: gate.skippedReason ?? null,
111
+ approved_by: gate.approvedBy ?? null,
112
+ started_at: gate.startedAt?.toISO() ?? null,
113
+ completed_at: gate.completedAt?.toISO() ?? null,
114
+ });
115
+ }
116
+ });
117
+ }
118
+ async findById(id) {
119
+ const row = this.db.queryOne("SELECT * FROM pipelines WHERE id = @id", { id: id.value });
120
+ if (!row)
121
+ return undefined;
122
+ return this.toDomain(row);
123
+ }
124
+ async findByWorkspace(workspaceId) {
125
+ const rows = this.db.queryAll("SELECT * FROM pipelines WHERE workspace_id = @workspace_id ORDER BY created_at DESC", { workspace_id: workspaceId.value });
126
+ return rows.map((row) => this.toDomain(row));
127
+ }
128
+ async findByStatus(workspaceId, status) {
129
+ const rows = this.db.queryAll("SELECT * FROM pipelines WHERE workspace_id = @workspace_id AND status = @status ORDER BY created_at DESC", { workspace_id: workspaceId.value, status });
130
+ return rows.map((row) => this.toDomain(row));
131
+ }
132
+ async findByScope(workspaceId, scope) {
133
+ const rows = this.db.queryAll("SELECT * FROM pipelines WHERE workspace_id = @workspace_id AND scope = @scope ORDER BY created_at DESC", { workspace_id: workspaceId.value, scope });
134
+ return rows.map((row) => this.toDomain(row));
135
+ }
136
+ async findActive(workspaceId) {
137
+ const row = this.db.queryOne("SELECT * FROM pipelines WHERE workspace_id = @workspace_id AND status = 'active' LIMIT 1", { workspace_id: workspaceId.value });
138
+ if (!row)
139
+ return undefined;
140
+ return this.toDomain(row);
141
+ }
142
+ async delete(id) {
143
+ // Gates are cascade-deleted via FK constraint
144
+ const result = this.db.execute("DELETE FROM pipelines WHERE id = @id", { id: id.value });
145
+ return result.changes > 0;
146
+ }
147
+ async nextSequence(workspaceId) {
148
+ const row = this.db.queryOne(`SELECT MAX(CAST(SUBSTR(id, 4) AS INTEGER)) as max_seq
149
+ FROM pipelines
150
+ WHERE workspace_id = @workspace_id`, { workspace_id: workspaceId.value });
151
+ return (row?.max_seq ?? 0) + 1;
152
+ }
153
+ // ─── Private Mapping ─────────────────────────────────────────────────
154
+ toDomain(row) {
155
+ const gateRows = this.db.queryAll("SELECT * FROM pipeline_gates WHERE pipeline_id = @pipeline_id ORDER BY gate_order ASC", { pipeline_id: row.id });
156
+ return Pipeline.reconstitute({
157
+ id: PipelineId.from(row.id),
158
+ workspaceId: WorkspaceId.from(row.workspace_id),
159
+ templateId: row.template_id,
160
+ scope: row.scope,
161
+ status: row.status,
162
+ version: SemanticVersion.from(row.version),
163
+ gates: gateRows.map((g) => this.gateToProps(g)),
164
+ createdAt: Timestamp.fromISO(row.created_at),
165
+ ...(row.activated_at !== null
166
+ ? { activatedAt: Timestamp.fromISO(row.activated_at) }
167
+ : {}),
168
+ ...(row.completed_at !== null
169
+ ? { completedAt: Timestamp.fromISO(row.completed_at) }
170
+ : {}),
171
+ ...(row.card_id !== null ? { cardId: row.card_id } : {}),
172
+ });
173
+ }
174
+ gateToProps(row) {
175
+ return {
176
+ id: GateId.from(row.id),
177
+ type: row.type,
178
+ status: row.status,
179
+ order: row.gate_order,
180
+ daggerFunction: DaggerFunctionRef.from(row.dagger_function),
181
+ skipPolicy: row.skip_policy,
182
+ ...(row.command !== null ? { command: row.command } : {}),
183
+ ...(row.output !== null ? { output: GateOutput.from(row.output) } : {}),
184
+ ...(row.skipped_reason !== null
185
+ ? { skippedReason: row.skipped_reason }
186
+ : {}),
187
+ ...(row.approved_by !== null ? { approvedBy: row.approved_by } : {}),
188
+ ...(row.started_at !== null
189
+ ? { startedAt: Timestamp.fromISO(row.started_at) }
190
+ : {}),
191
+ ...(row.completed_at !== null
192
+ ? { completedAt: Timestamp.fromISO(row.completed_at) }
193
+ : {}),
194
+ };
195
+ }
196
+ }
197
+ //# sourceMappingURL=sqlite-pipeline-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-pipeline-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/pipeline/sqlite-pipeline-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":""}
@@ -0,0 +1,300 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * JARVIS MCP Server — Standalone Entrypoint
4
+ *
5
+ * Exposes all 107 JARVIS tools via MCP protocol (stdio transport).
6
+ * Reuses all existing application/domain/infrastructure layers —
7
+ * zero logic duplication with the plugin entrypoint.
8
+ *
9
+ * Usage: bun run src/mcp-server.ts [--directory <path>]
10
+ *
11
+ * Architecture: Same DDD wiring as src/index.ts but without
12
+ * OpenCode-specific hooks and with MCP as the transport layer.
13
+ */
14
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
15
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
+ import { mkdirSync } from "node:fs";
17
+ import { basename, join, resolve } from "node:path";
18
+ import { registerToolsWithMcp } from "./application/mcp/tool-adapter.js";
19
+ import { createMcpMiddleware, McpSessionTracker } from "./application/mcp/middleware.js";
20
+ import { WorkspaceId } from "./domain/shared/value-objects.js";
21
+ import { SqliteAdapter } from "./infrastructure/database/sqlite-adapter.js";
22
+ import { SqliteSessionRepository } from "./infrastructure/context-memory/session-repository.js";
23
+ import { SqliteTodoRepository } from "./infrastructure/context-memory/todo-repository.js";
24
+ import { SqliteNoteRepository } from "./infrastructure/context-memory/note-repository.js";
25
+ import { createSimpleSearchRepo } from "./infrastructure/context-memory/search-repository.js";
26
+ import { SqliteCardRepository } from "./infrastructure/kanban/card-repository.js";
27
+ import { SqliteSprintRepository, SqliteEpicRepository } from "./infrastructure/kanban/sprint-repository.js";
28
+ import { SessionDomainService, TodoDomainService, NoteDomainService, ContextSearchService } from "./domain/context-memory/services.js";
29
+ import { CardDomainService } from "./domain/kanban/services.js";
30
+ import { DEFAULT_POLICIES } from "./domain/governance/policies.js";
31
+ import { PolicyValidationService } from "./domain/governance/services.js";
32
+ import { SessionUseCases } from "./application/context-memory/session-use-cases.js";
33
+ import { TodoUseCases } from "./application/context-memory/todo-use-cases.js";
34
+ import { NoteUseCases } from "./application/context-memory/note-use-cases.js";
35
+ import { CardUseCases } from "./application/kanban/card-use-cases.js";
36
+ import { SprintUseCases, EpicUseCases } from "./application/kanban/sprint-use-cases.js";
37
+ import { BoardUseCases } from "./application/kanban/board-use-cases.js";
38
+ import { GovernanceUseCases } from "./application/governance/validation-use-cases.js";
39
+ import { SqliteTokenMetricsRepository } from "./infrastructure/token-metrics/token-metrics-repository.js";
40
+ import { TokenMetricsUseCases } from "./application/token-metrics/tracking-use-cases.js";
41
+ import { VaultFsAdapter } from "./infrastructure/vault/vault-fs-adapter.js";
42
+ import { VaultUseCases } from "./application/vault/use-cases.js";
43
+ import { VaultManager } from "./application/vault/vault-manager.js";
44
+ import { VectraVectorRepository } from "./infrastructure/rag/vectra-adapter.js";
45
+ import { OllamaEmbeddingProvider } from "./infrastructure/rag/ollama-embeddings.js";
46
+ import { LangchainTextSplitter } from "./infrastructure/rag/text-splitter.js";
47
+ import { FileSystemDiscovery } from "./infrastructure/rag/file-discovery.js";
48
+ import { RagUseCases } from "./application/rag/use-cases.js";
49
+ import { OracleUseCases } from "./application/rag/oracle-use-cases.js";
50
+ import { LspClientAdapter } from "./infrastructure/domain-map/lsp-adapter.js";
51
+ import { LlmSemanticAnalyzer } from "./infrastructure/domain-map/llm-analyzer.js";
52
+ import { FileProjectScanner } from "./infrastructure/domain-map/project-scanner.js";
53
+ import { SqliteAgentProfileRepository } from "./infrastructure/agent-registry/agent-profile-repository.js";
54
+ import { AgentRegistryService } from "./domain/agent-registry/services.js";
55
+ import { AgentRegistryUseCases } from "./application/agent-registry/use-cases.js";
56
+ import { DomainMapUseCases } from "./application/domain-map/use-cases.js";
57
+ import { SqliteWorkspaceRegistryRepository } from "./infrastructure/workspace-registry/workspace-repository.js";
58
+ import { SqliteWorkspaceDependencyRepository } from "./infrastructure/workspace-registry/dependency-repository.js";
59
+ import { WorkspaceRegistryService } from "./domain/workspace-registry/services.js";
60
+ import { resolveJarvisHome } from "./domain/workspace-registry/value-objects.js";
61
+ import { WorkspaceRegistryUseCases } from "./application/workspace-registry/use-cases.js";
62
+ import { SqliteEnvironmentRepository } from "./infrastructure/environment/environment-repository.js";
63
+ import { EnvironmentScannerAdapter } from "./infrastructure/environment/scanner-adapter.js";
64
+ import { EnvironmentDomainService } from "./domain/environment/services.js";
65
+ import { YamlConfigRepository } from "./infrastructure/config/yaml-config-repository.js";
66
+ import { ConfigService } from "./application/config/config-service.js";
67
+ import { SqlitePipelineRepository, InMemoryPipelineTemplateRegistry, DaggerCliAdapter, DaggerScaffoldGenerator } from "./infrastructure/pipeline/index.js";
68
+ import { PipelineFactory, GateEnforcer } from "./domain/pipeline/services.js";
69
+ import { PipelineId } from "./domain/pipeline/value-objects.js";
70
+ import { PipelineUseCases } from "./application/pipeline/use-cases.js";
71
+ import { EnvironmentUseCases } from "./application/environment/use-cases.js";
72
+ import { AzureSyncUseCases } from "./application/azure-sync/push-use-cases.js";
73
+ import { AzureSyncPullUseCases } from "./application/azure-sync/pull-use-cases.js";
74
+ import { AzurePrUseCases } from "./application/azure-sync/pr-use-cases.js";
75
+ import { AzureDevOpsClient } from "./infrastructure/azure-sync/azure-devops-client.js";
76
+ import { SqliteSyncRepository } from "./infrastructure/azure-sync/sqlite-sync-repository.js";
77
+ import { BUILT_IN_PROFILES } from "./infrastructure/agent-registry/built-in-profiles.js";
78
+ // Tool factories
79
+ import { createContextMemoryTools } from "./tools/context-memory-tools.js";
80
+ import { createKanbanCardTools } from "./tools/kanban-card-tools.js";
81
+ import { createKanbanGroomingTools } from "./tools/kanban-grooming-tools.js";
82
+ import { createKanbanBoardTools } from "./tools/kanban-board-tools.js";
83
+ import { createGovernanceTools } from "./tools/governance-tools.js";
84
+ import { createRagTools } from "./tools/rag-tools.js";
85
+ import { createDataTools } from "./tools/data-tools.js";
86
+ import { createAgentTools } from "./tools/agent-tools.js";
87
+ import { createVaultTools } from "./tools/vault-tools.js";
88
+ import { createVaultManageTool } from "./tools/vault-manage-tool.js";
89
+ import { createDomainMapTools } from "./tools/domain-map-tools.js";
90
+ import { createWorkspaceRegistryTools } from "./tools/workspace-registry-tools.js";
91
+ import { createEnvironmentTools } from "./tools/environment-tools.js";
92
+ import { createTokenMetricsTools } from "./tools/token-metrics-tools.js";
93
+ import { createAgentRegistryTools } from "./tools/agent-registry-tools.js";
94
+ import { createPipelineTools } from "./tools/pipeline-tools.js";
95
+ import { createAzureSyncTools } from "./tools/azure-sync-tools.js";
96
+ // ── Helpers ───────────────────────────────────────────────────────────
97
+ /** Derive workspace name from directory path. */
98
+ function getWorkspace(directory) {
99
+ return basename(directory).toUpperCase();
100
+ }
101
+ /** Parse --directory from CLI args, default to cwd. */
102
+ function parseDirectory() {
103
+ const args = process.argv.slice(2);
104
+ const idx = args.indexOf("--directory");
105
+ if (idx !== -1) {
106
+ const val = args[idx + 1];
107
+ if (val !== undefined)
108
+ return resolve(val);
109
+ }
110
+ return process.cwd();
111
+ }
112
+ /**
113
+ * Creates a stub OpenCode client for agent tools in MCP mode.
114
+ * All methods throw a clear error indicating the feature requires OpenCode.
115
+ */
116
+ function createMcpClientStub() {
117
+ const unavailable = () => Promise.reject(new Error("Agent communication tools are not available in MCP server mode. " +
118
+ "They require the OpenCode runtime for inter-session messaging."));
119
+ return {
120
+ session: {
121
+ list: unavailable,
122
+ create: unavailable,
123
+ prompt: unavailable,
124
+ delete: unavailable,
125
+ },
126
+ };
127
+ }
128
+ /**
129
+ * Creates a stub LLM PromptFn for domain-map in MCP mode.
130
+ * Greenfield analysis works without LLM; legacy mode will error.
131
+ */
132
+ function createMcpLlmPromptStub() {
133
+ return async () => {
134
+ throw new Error("LLM-based domain map analysis is not available in MCP server mode. " +
135
+ "Use greenfield mode (force_mode: 'greenfield') instead.");
136
+ };
137
+ }
138
+ // ── Main ──────────────────────────────────────────────────────────────
139
+ async function main() {
140
+ const directory = parseDirectory();
141
+ const jarvisDir = join(directory, ".jarvis");
142
+ mkdirSync(jarvisDir, { recursive: true });
143
+ // ── Infrastructure ──────────────────────────────────────────────
144
+ const dbPath = join(jarvisDir, "jarvis.db");
145
+ const db = new SqliteAdapter({ path: dbPath });
146
+ const jarvisHome = resolveJarvisHome();
147
+ mkdirSync(jarvisHome, { recursive: true });
148
+ const registryDb = new SqliteAdapter({ path: join(jarvisHome, "registry.db") });
149
+ // ── Configuration ───────────────────────────────────────────────
150
+ const configPath = join(directory, "config", "jarvis.yaml");
151
+ const configRepo = new YamlConfigRepository(configPath);
152
+ const configService = new ConfigService(configRepo);
153
+ // ── Repositories ────────────────────────────────────────────────
154
+ const sessionRepo = new SqliteSessionRepository(db);
155
+ const todoRepo = new SqliteTodoRepository(db);
156
+ const noteRepo = new SqliteNoteRepository(db);
157
+ const searchRepo = createSimpleSearchRepo(todoRepo, noteRepo);
158
+ const cardRepo = new SqliteCardRepository(db);
159
+ const sprintRepo = new SqliteSprintRepository(db);
160
+ const epicRepo = new SqliteEpicRepository(db);
161
+ const tokenMetricsRepo = new SqliteTokenMetricsRepository(db);
162
+ const workspaceRegistryRepo = new SqliteWorkspaceRegistryRepository(registryDb);
163
+ const workspaceDependencyRepo = new SqliteWorkspaceDependencyRepository(registryDb);
164
+ const wsId = WorkspaceId.create(getWorkspace(directory));
165
+ const environmentRepo = new SqliteEnvironmentRepository(db, wsId);
166
+ const agentProfileRepo = new SqliteAgentProfileRepository(db);
167
+ const vaultRoot = join(jarvisDir, "..", "obsidian-vault");
168
+ const vaultRepo = new VaultFsAdapter(vaultRoot);
169
+ // ── Domain Services ─────────────────────────────────────────────
170
+ const sessionService = new SessionDomainService(sessionRepo);
171
+ const todoService = new TodoDomainService(todoRepo);
172
+ const noteService = new NoteDomainService(noteRepo);
173
+ const searchService = new ContextSearchService(searchRepo);
174
+ const cardService = new CardDomainService(cardRepo);
175
+ const validationService = new PolicyValidationService(DEFAULT_POLICIES);
176
+ const workspaceRegistryService = new WorkspaceRegistryService(workspaceRegistryRepo, workspaceDependencyRepo);
177
+ const environmentService = new EnvironmentDomainService(environmentRepo);
178
+ const agentRegistryService = new AgentRegistryService(agentProfileRepo);
179
+ const pipelineRepo = new SqlitePipelineRepository(db);
180
+ const templateRepo = new InMemoryPipelineTemplateRegistry();
181
+ const daggerPort = new DaggerCliAdapter();
182
+ const scaffoldPort = new DaggerScaffoldGenerator();
183
+ const pipelineFactory = new PipelineFactory(pipelineRepo, templateRepo);
184
+ const gateEnforcer = new GateEnforcer(pipelineRepo);
185
+ // ── Application Use Cases ───────────────────────────────────────
186
+ const sessionUseCases = new SessionUseCases(sessionService);
187
+ const todoUseCases = new TodoUseCases(todoService, todoRepo);
188
+ const noteUseCases = new NoteUseCases(noteService, searchService);
189
+ const pipelineStatusProvider = async (id) => (await pipelineRepo.findById(PipelineId.from(id)))?.status;
190
+ const cardUseCases = new CardUseCases(cardRepo, cardService, pipelineStatusProvider);
191
+ const sprintUseCases = new SprintUseCases(sprintRepo);
192
+ const epicUseCases = new EpicUseCases(epicRepo);
193
+ const boardUseCases = new BoardUseCases(cardRepo, cardService);
194
+ const governanceUseCases = new GovernanceUseCases(validationService);
195
+ const tokenMetricsUseCases = new TokenMetricsUseCases(tokenMetricsRepo);
196
+ const vaultUseCases = new VaultUseCases(vaultRepo);
197
+ const vaultManager = new VaultManager(vaultRepo, vaultUseCases);
198
+ const workspaceRegistryUseCases = new WorkspaceRegistryUseCases(workspaceRegistryService);
199
+ // Agent Registry (no session adapter in MCP mode — spawn not available)
200
+ const agentSessionAdapter = {
201
+ listSessions: async () => [],
202
+ createSession: async () => { throw new Error("Session spawning not available in MCP mode"); },
203
+ sendPrompt: async () => { throw new Error("Session spawning not available in MCP mode"); },
204
+ };
205
+ const agentRegistryUseCases = new AgentRegistryUseCases(agentRegistryService, agentSessionAdapter);
206
+ const pipelineUseCases = new PipelineUseCases(pipelineRepo, templateRepo, pipelineFactory, gateEnforcer, daggerPort, scaffoldPort, async (e) => {
207
+ await tokenMetricsUseCases.recordUsage({
208
+ workspace: getWorkspace(directory), toolName: "pipeline-run", agent: "pipeline",
209
+ inputTokens: 0, outputTokens: 0, model: "dagger", operation: "pipeline-gate",
210
+ ...(e.cardId !== undefined ? { cardId: e.cardId } : {}),
211
+ metadata: { pipelineId: e.pipelineId, gateId: e.gateId, success: e.success, durationMs: e.durationMs },
212
+ });
213
+ });
214
+ const projectScanner = new FileProjectScanner();
215
+ const environmentScanner = new EnvironmentScannerAdapter(projectScanner);
216
+ const environmentUseCases = new EnvironmentUseCases(environmentService, environmentScanner, getWorkspace(directory));
217
+ // ── RAG Infrastructure ──────────────────────────────────────────
218
+ const ragConfig = configService.getRagConfig();
219
+ const ragPersistRoot = join(jarvisDir, "rag");
220
+ mkdirSync(ragPersistRoot, { recursive: true });
221
+ const embeddingProvider = new OllamaEmbeddingProvider(ragConfig.ollama.url, ragConfig.ollama.model, ragConfig.ollama.dimensions);
222
+ const vectorRepository = new VectraVectorRepository(ragPersistRoot, ragConfig.ollama.model);
223
+ const textSplitter = new LangchainTextSplitter();
224
+ const fileDiscovery = new FileSystemDiscovery();
225
+ const ragUseCases = new RagUseCases({ embeddingProvider, vectorRepository, textSplitter, fileDiscovery, ragConfig });
226
+ const oracleUseCases = new OracleUseCases({ embeddingProvider, vectorRepository, textSplitter, fileDiscovery });
227
+ // ── Domain Map (LLM stub in MCP mode) ───────────────────────────
228
+ const lspClient = new LspClientAdapter();
229
+ const llmAnalyzer = new LlmSemanticAnalyzer(createMcpLlmPromptStub());
230
+ const domainMapUseCases = new DomainMapUseCases({ lspClient, llmAnalyzer, projectScanner });
231
+ // ── Azure Sync ──────────────────────────────────────────────────
232
+ const azureSyncConfig = configService.getAzureSyncConfig();
233
+ const azureClient = new AzureDevOpsClient(azureSyncConfig.authMethod);
234
+ const syncRepo = new SqliteSyncRepository(db);
235
+ const azureSyncUseCases = new AzureSyncUseCases({
236
+ azureClient, syncMappingRepo: syncRepo, syncLogRepo: syncRepo,
237
+ cardUseCases, epicUseCases, sprintUseCases, configService,
238
+ });
239
+ const azureSyncPullUseCases = new AzureSyncPullUseCases({ azureClient, syncMappingRepo: syncRepo, syncLogRepo: syncRepo, cardUseCases, epicUseCases, sprintUseCases, configService }, azureSyncUseCases);
240
+ const azurePrUseCases = new AzurePrUseCases({ azureClient, configService });
241
+ // ── Create All Tools ────────────────────────────────────────────
242
+ const allTools = {
243
+ ...createContextMemoryTools({ sessionUseCases, todoUseCases, noteUseCases, getWorkspace }),
244
+ ...createKanbanCardTools({ cardUseCases, sprintUseCases, epicUseCases, getWorkspace }),
245
+ ...createKanbanGroomingTools({ cardUseCases }),
246
+ ...createKanbanBoardTools({ sprintUseCases, epicUseCases, boardUseCases, getWorkspace }),
247
+ ...createGovernanceTools({ governanceUseCases }),
248
+ ...createRagTools({ ragUseCases, oracleUseCases, getWorkspace }),
249
+ ...createDataTools(),
250
+ ...createAgentTools({ client: createMcpClientStub(), cardUseCases, sprintUseCases, epicUseCases }),
251
+ ...createVaultTools({ vaultUseCases }),
252
+ ...createVaultManageTool({ vaultManager }),
253
+ ...createDomainMapTools({ domainMapUseCases, workspaceRegistryUseCases, getWorkspace }),
254
+ ...createWorkspaceRegistryTools({ workspaceRegistryUseCases }),
255
+ ...createEnvironmentTools({ environmentUseCases }),
256
+ ...createTokenMetricsTools({ tokenMetricsUseCases, getWorkspace, directory }),
257
+ ...createAgentRegistryTools({ agentRegistryUseCases }),
258
+ ...createPipelineTools({ pipelineUseCases, cardUseCases, getWorkspace }),
259
+ ...createAzureSyncTools({
260
+ azureSyncUseCases, azureSyncPullUseCases, azurePrUseCases, getWorkspace,
261
+ defaultOrg: azureSyncConfig.organization, defaultProject: azureSyncConfig.project, defaultRepository: azureSyncConfig.repository,
262
+ }),
263
+ };
264
+ // ── Tool Filtering (from config) ─────────────────────────────────
265
+ const mcpConfig = configService.getMcpServerConfig();
266
+ const enabledFilter = mcpConfig.enabledTools;
267
+ const filteredTools = enabledFilter !== null
268
+ ? Object.fromEntries(Object.entries(allTools).filter(([name]) => enabledFilter.includes(name)))
269
+ : allTools;
270
+ // ── Bootstrap ───────────────────────────────────────────────────
271
+ workspaceRegistryUseCases.autoRegister(getWorkspace(directory), directory).catch(() => { });
272
+ agentRegistryUseCases.bootstrapBuiltInProfiles(BUILT_IN_PROFILES).catch(() => { });
273
+ // ── Middleware (Governance + Metrics) ─────────────────────────────
274
+ const sessionTracker = new McpSessionTracker();
275
+ const middleware = createMcpMiddleware({
276
+ validationService,
277
+ tokenMetricsUseCases,
278
+ workspace: getWorkspace(directory),
279
+ sessionTracker,
280
+ });
281
+ // ── MCP Server Setup ────────────────────────────────────────────
282
+ const server = new McpServer({ name: "jarvis", version: "0.3.0", description: "JARVIS multi-agent development framework" }, { capabilities: { tools: {} } });
283
+ const result = registerToolsWithMcp(server, filteredTools, { directory, worktree: directory }, middleware);
284
+ // Log to stderr (stdout is reserved for MCP protocol)
285
+ const totalTools = Object.keys(allTools).length;
286
+ const filterMsg = enabledFilter !== null
287
+ ? ` (filtered from ${totalTools} total)`
288
+ : "";
289
+ process.stderr.write(`JARVIS MCP Server started (${result.registered} tools registered${filterMsg})\n`);
290
+ process.stderr.write(`Working directory: ${directory}\n`);
291
+ process.stderr.write(`Session: ${sessionTracker.getSessionId()}\n`);
292
+ // ── Connect Transport ───────────────────────────────────────────
293
+ const transport = new StdioServerTransport();
294
+ await server.connect(transport);
295
+ }
296
+ main().catch((err) => {
297
+ process.stderr.write(`JARVIS MCP Server fatal error: ${String(err)}\n`);
298
+ process.exit(1);
299
+ });
300
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AgentRegistryUseCases } from "../application/agent-registry/use-cases.js";
2
+ import type { ToolDefinition } from "@opencode-ai/plugin";
3
+ export interface AgentRegistryToolsDeps {
4
+ readonly agentRegistryUseCases: AgentRegistryUseCases;
5
+ }
6
+ /**
7
+ * Creates the 4 agent registry tool definitions.
8
+ * Called once during plugin initialization with wired dependencies.
9
+ */
10
+ export declare function createAgentRegistryTools(deps: AgentRegistryToolsDeps): Record<string, ToolDefinition>;
11
+ //# sourceMappingURL=agent-registry-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry-tools.d.ts","sourceRoot":"","sources":["../../src/tools/agent-registry-tools.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;CACvD;AAuCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,sBAAsB,GAC3B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAsKhC"}