@mc1global/opencode-jarvis 0.1.1 → 0.3.1

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 (299) 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/hooks/event-handlers.d.ts +3 -0
  190. package/dist/hooks/event-handlers.d.ts.map +1 -1
  191. package/dist/hooks/event-handlers.js +4 -2
  192. package/dist/hooks/event-handlers.js.map +1 -1
  193. package/dist/hooks/logger.d.ts +46 -0
  194. package/dist/hooks/logger.d.ts.map +1 -0
  195. package/dist/hooks/logger.js +79 -0
  196. package/dist/hooks/logger.js.map +1 -0
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +152 -108
  199. package/dist/index.js.map +1 -1
  200. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts +29 -0
  201. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts.map +1 -0
  202. package/dist/infrastructure/agent-registry/agent-profile-repository.js +109 -0
  203. package/dist/infrastructure/agent-registry/agent-profile-repository.js.map +1 -0
  204. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts +28 -0
  205. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts.map +1 -0
  206. package/dist/infrastructure/agent-registry/agent-session-adapter.js +61 -0
  207. package/dist/infrastructure/agent-registry/agent-session-adapter.js.map +1 -0
  208. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts +19 -0
  209. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts.map +1 -0
  210. package/dist/infrastructure/agent-registry/built-in-profiles.js +210 -0
  211. package/dist/infrastructure/agent-registry/built-in-profiles.js.map +1 -0
  212. package/dist/infrastructure/azure-sync/azure-auth.d.ts +40 -0
  213. package/dist/infrastructure/azure-sync/azure-auth.d.ts.map +1 -0
  214. package/dist/infrastructure/azure-sync/azure-auth.js +94 -0
  215. package/dist/infrastructure/azure-sync/azure-auth.js.map +1 -0
  216. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts +43 -0
  217. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts.map +1 -0
  218. package/dist/infrastructure/azure-sync/azure-devops-client.js +296 -0
  219. package/dist/infrastructure/azure-sync/azure-devops-client.js.map +1 -0
  220. package/dist/infrastructure/azure-sync/index.d.ts +9 -0
  221. package/dist/infrastructure/azure-sync/index.d.ts.map +1 -0
  222. package/dist/infrastructure/azure-sync/index.js +12 -0
  223. package/dist/infrastructure/azure-sync/index.js.map +1 -0
  224. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts +39 -0
  225. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts.map +1 -0
  226. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js +202 -0
  227. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js.map +1 -0
  228. package/dist/infrastructure/config/index.d.ts +5 -0
  229. package/dist/infrastructure/config/index.d.ts.map +1 -0
  230. package/dist/infrastructure/config/index.js +5 -0
  231. package/dist/infrastructure/config/index.js.map +1 -0
  232. package/dist/infrastructure/config/yaml-config-repository.d.ts +22 -0
  233. package/dist/infrastructure/config/yaml-config-repository.d.ts.map +1 -0
  234. package/dist/infrastructure/config/yaml-config-repository.js +68 -0
  235. package/dist/infrastructure/config/yaml-config-repository.js.map +1 -0
  236. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts +21 -0
  237. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts.map +1 -0
  238. package/dist/infrastructure/domain-map/llm-prompt-factory.js +49 -0
  239. package/dist/infrastructure/domain-map/llm-prompt-factory.js.map +1 -0
  240. package/dist/infrastructure/kanban/card-repository.d.ts +6 -0
  241. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -1
  242. package/dist/infrastructure/kanban/card-repository.js +79 -7
  243. package/dist/infrastructure/kanban/card-repository.js.map +1 -1
  244. package/dist/infrastructure/pipeline/dagger-adapter.d.ts +50 -0
  245. package/dist/infrastructure/pipeline/dagger-adapter.d.ts.map +1 -0
  246. package/dist/infrastructure/pipeline/dagger-adapter.js +153 -0
  247. package/dist/infrastructure/pipeline/dagger-adapter.js.map +1 -0
  248. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts +35 -0
  249. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts.map +1 -0
  250. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js +132 -0
  251. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js.map +1 -0
  252. package/dist/infrastructure/pipeline/index.d.ts +20 -0
  253. package/dist/infrastructure/pipeline/index.d.ts.map +1 -0
  254. package/dist/infrastructure/pipeline/index.js +19 -0
  255. package/dist/infrastructure/pipeline/index.js.map +1 -0
  256. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts +23 -0
  257. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts.map +1 -0
  258. package/dist/infrastructure/pipeline/pipeline-template-registry.js +63 -0
  259. package/dist/infrastructure/pipeline/pipeline-template-registry.js.map +1 -0
  260. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts +17 -0
  261. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts.map +1 -0
  262. package/dist/infrastructure/pipeline/scaffold-templates-extra.js +467 -0
  263. package/dist/infrastructure/pipeline/scaffold-templates-extra.js.map +1 -0
  264. package/dist/infrastructure/pipeline/scaffold-templates.d.ts +23 -0
  265. package/dist/infrastructure/pipeline/scaffold-templates.d.ts.map +1 -0
  266. package/dist/infrastructure/pipeline/scaffold-templates.js +476 -0
  267. package/dist/infrastructure/pipeline/scaffold-templates.js.map +1 -0
  268. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts +32 -0
  269. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts.map +1 -0
  270. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js +197 -0
  271. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js.map +1 -0
  272. package/dist/mcp-server.d.ts +3 -0
  273. package/dist/mcp-server.d.ts.map +1 -0
  274. package/dist/mcp-server.js +300 -0
  275. package/dist/mcp-server.js.map +1 -0
  276. package/dist/tools/agent-registry-tools.d.ts +11 -0
  277. package/dist/tools/agent-registry-tools.d.ts.map +1 -0
  278. package/dist/tools/agent-registry-tools.js +208 -0
  279. package/dist/tools/agent-registry-tools.js.map +1 -0
  280. package/dist/tools/azure-sync-tools.d.ts +15 -0
  281. package/dist/tools/azure-sync-tools.d.ts.map +1 -0
  282. package/dist/tools/azure-sync-tools.js +332 -0
  283. package/dist/tools/azure-sync-tools.js.map +1 -0
  284. package/dist/tools/kanban-card-tools.d.ts.map +1 -1
  285. package/dist/tools/kanban-card-tools.js +41 -16
  286. package/dist/tools/kanban-card-tools.js.map +1 -1
  287. package/dist/tools/kanban-gate-tools.d.ts +7 -0
  288. package/dist/tools/kanban-gate-tools.d.ts.map +1 -0
  289. package/dist/tools/kanban-gate-tools.js +106 -0
  290. package/dist/tools/kanban-gate-tools.js.map +1 -0
  291. package/dist/tools/kanban-grooming-tools.d.ts +7 -0
  292. package/dist/tools/kanban-grooming-tools.d.ts.map +1 -0
  293. package/dist/tools/kanban-grooming-tools.js +180 -0
  294. package/dist/tools/kanban-grooming-tools.js.map +1 -0
  295. package/dist/tools/pipeline-tools.d.ts +15 -0
  296. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  297. package/dist/tools/pipeline-tools.js +424 -0
  298. package/dist/tools/pipeline-tools.js.map +1 -0
  299. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/domain/agent-registry/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Agent Registry - Value Objects
3
+ *
4
+ * Immutable value objects for the agent registry bounded context.
5
+ * Defines agent profiles, roles, capabilities, and configuration.
6
+ *
7
+ * DDD: Value Objects (no identity, compared by value)
8
+ * SOLID: SRP - value definitions and validation only
9
+ * Zero external dependencies.
10
+ */
11
+ import { EntityId, Timestamp } from "../shared/value-objects.js";
12
+ /**
13
+ * Unique identifier for an agent profile.
14
+ * Convention: lowercase-hyphen format (e.g., "release-manager").
15
+ */
16
+ export declare class AgentProfileId extends EntityId {
17
+ private constructor();
18
+ static create(value: string): AgentProfileId;
19
+ static from(value: string): AgentProfileId;
20
+ }
21
+ /**
22
+ * Predefined agent role categories.
23
+ * Each role maps to a general area of responsibility.
24
+ */
25
+ export declare const AGENT_ROLES: readonly ["release-manager", "code-reviewer", "tester", "documenter", "security-auditor", "architect", "devops", "custom"];
26
+ export type AgentRole = (typeof AGENT_ROLES)[number];
27
+ export declare function isValidAgentRole(value: string): value is AgentRole;
28
+ export declare function parseAgentRole(value: string): AgentRole;
29
+ /**
30
+ * System prompt defining agent behavior and personality.
31
+ * Immutable string wrapper with validation.
32
+ */
33
+ export declare class SystemPrompt {
34
+ readonly value: string;
35
+ private constructor();
36
+ static create(value: string): SystemPrompt;
37
+ static from(value: string): SystemPrompt;
38
+ get length(): number;
39
+ equals(other: SystemPrompt): boolean;
40
+ toString(): string;
41
+ }
42
+ /**
43
+ * LLM model preference for an agent.
44
+ * Defines a primary model and optional fallback chain.
45
+ */
46
+ export declare class ModelPreference {
47
+ readonly primary: string;
48
+ readonly fallbacks: readonly string[];
49
+ private constructor();
50
+ static create(primary: string, fallbacks?: readonly string[]): ModelPreference;
51
+ static from(primary: string, fallbacks: readonly string[]): ModelPreference;
52
+ /** Default model preference (no specific model requested). */
53
+ static default(): ModelPreference;
54
+ get isDefault(): boolean;
55
+ /** All models in preference order: primary then fallbacks. */
56
+ get chain(): readonly string[];
57
+ equals(other: ModelPreference): boolean;
58
+ toJSON(): {
59
+ primary: string;
60
+ fallbacks: string[];
61
+ };
62
+ static fromJSON(json: {
63
+ primary: string;
64
+ fallbacks: string[];
65
+ }): ModelPreference;
66
+ }
67
+ /**
68
+ * A single capability tag describing what an agent can do.
69
+ * Normalized to lowercase, trimmed.
70
+ */
71
+ export declare class AgentCapability {
72
+ readonly value: string;
73
+ private constructor();
74
+ static create(name: string): AgentCapability;
75
+ static from(value: string): AgentCapability;
76
+ equals(other: AgentCapability): boolean;
77
+ toString(): string;
78
+ }
79
+ /** Immutable ordered collection of agent capabilities. */
80
+ export declare class AgentCapabilities {
81
+ readonly items: readonly AgentCapability[];
82
+ private constructor();
83
+ static create(names: readonly string[]): AgentCapabilities;
84
+ static empty(): AgentCapabilities;
85
+ static fromItems(items: readonly AgentCapability[]): AgentCapabilities;
86
+ get size(): number;
87
+ get isEmpty(): boolean;
88
+ has(name: string): boolean;
89
+ add(name: string): AgentCapabilities;
90
+ remove(name: string): AgentCapabilities;
91
+ toArray(): readonly string[];
92
+ toJSON(): string;
93
+ static fromJSON(json: string): AgentCapabilities;
94
+ equals(other: AgentCapabilities): boolean;
95
+ }
96
+ /**
97
+ * Whitelist of tool names an agent is allowed to use.
98
+ * Empty list means ALL tools are allowed (no restriction).
99
+ */
100
+ export declare class AllowedTools {
101
+ readonly tools: readonly string[];
102
+ private constructor();
103
+ static create(tools: readonly string[]): AllowedTools;
104
+ /** No restriction -- all tools allowed. */
105
+ static unrestricted(): AllowedTools;
106
+ static from(tools: readonly string[]): AllowedTools;
107
+ get isUnrestricted(): boolean;
108
+ get size(): number;
109
+ isAllowed(toolName: string): boolean;
110
+ add(toolName: string): AllowedTools;
111
+ remove(toolName: string): AllowedTools;
112
+ toArray(): readonly string[];
113
+ toJSON(): string;
114
+ static fromJSON(json: string): AllowedTools;
115
+ equals(other: AllowedTools): boolean;
116
+ }
117
+ export declare const AGENT_PROFILE_STATUSES: readonly ["active", "inactive", "draft"];
118
+ export type AgentProfileStatus = (typeof AGENT_PROFILE_STATUSES)[number];
119
+ export declare function isValidAgentProfileStatus(value: string): value is AgentProfileStatus;
120
+ /** Data required to register a new agent profile. */
121
+ export interface AgentProfileRegistrationData {
122
+ readonly id: AgentProfileId;
123
+ readonly displayName: string;
124
+ readonly role: AgentRole;
125
+ readonly systemPrompt: SystemPrompt;
126
+ readonly modelPreference?: ModelPreference;
127
+ readonly capabilities?: AgentCapabilities;
128
+ readonly allowedTools?: AllowedTools;
129
+ readonly builtIn?: boolean;
130
+ }
131
+ /** Data required to reconstitute an AgentProfile from persistence. */
132
+ export interface AgentProfileData {
133
+ readonly id: AgentProfileId;
134
+ readonly displayName: string;
135
+ readonly role: AgentRole;
136
+ readonly systemPrompt: SystemPrompt;
137
+ readonly modelPreference: ModelPreference;
138
+ readonly capabilities: AgentCapabilities;
139
+ readonly allowedTools: AllowedTools;
140
+ readonly status: AgentProfileStatus;
141
+ readonly builtIn: boolean;
142
+ readonly createdAt: Timestamp;
143
+ readonly updatedAt: Timestamp;
144
+ }
145
+ //# sourceMappingURL=value-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/domain/agent-registry/value-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ /**
2
+ * Agent Registry - Value Objects
3
+ *
4
+ * Immutable value objects for the agent registry bounded context.
5
+ * Defines agent profiles, roles, capabilities, and configuration.
6
+ *
7
+ * DDD: Value Objects (no identity, compared by value)
8
+ * SOLID: SRP - value definitions and validation only
9
+ * Zero external dependencies.
10
+ */
11
+ import { EntityId, Timestamp } from "../shared/value-objects.js";
12
+ // ── Agent Profile ID ─────────────────────────────────────────────────
13
+ /**
14
+ * Unique identifier for an agent profile.
15
+ * Convention: lowercase-hyphen format (e.g., "release-manager").
16
+ */
17
+ export class AgentProfileId extends EntityId {
18
+ constructor(value) {
19
+ super(value);
20
+ }
21
+ static create(value) {
22
+ const trimmed = value.trim().toLowerCase();
23
+ if (trimmed.length === 0) {
24
+ throw new Error("AgentProfileId: value cannot be empty");
25
+ }
26
+ if (!/^[a-z][a-z0-9-]*$/.test(trimmed)) {
27
+ throw new Error(`AgentProfileId: must be lowercase alphanumeric with hyphens, got "${trimmed}"`);
28
+ }
29
+ if (trimmed.length > 64) {
30
+ throw new Error("AgentProfileId: cannot exceed 64 characters");
31
+ }
32
+ return new AgentProfileId(trimmed);
33
+ }
34
+ static from(value) {
35
+ return new AgentProfileId(value);
36
+ }
37
+ }
38
+ // ── Agent Role ───────────────────────────────────────────────────────
39
+ /**
40
+ * Predefined agent role categories.
41
+ * Each role maps to a general area of responsibility.
42
+ */
43
+ export const AGENT_ROLES = [
44
+ "release-manager",
45
+ "code-reviewer",
46
+ "tester",
47
+ "documenter",
48
+ "security-auditor",
49
+ "architect",
50
+ "devops",
51
+ "custom",
52
+ ];
53
+ export function isValidAgentRole(value) {
54
+ return AGENT_ROLES.includes(value);
55
+ }
56
+ export function parseAgentRole(value) {
57
+ const lower = value.toLowerCase().trim();
58
+ if (isValidAgentRole(lower)) {
59
+ return lower;
60
+ }
61
+ // Common aliases
62
+ const aliases = {
63
+ release: "release-manager",
64
+ deploy: "release-manager",
65
+ reviewer: "code-reviewer",
66
+ review: "code-reviewer",
67
+ testing: "tester",
68
+ qa: "tester",
69
+ docs: "documenter",
70
+ documentation: "documenter",
71
+ security: "security-auditor",
72
+ audit: "security-auditor",
73
+ arch: "architect",
74
+ ops: "devops",
75
+ cicd: "devops",
76
+ "ci/cd": "devops",
77
+ };
78
+ return aliases[lower] ?? "custom";
79
+ }
80
+ // ── System Prompt ────────────────────────────────────────────────────
81
+ /**
82
+ * System prompt defining agent behavior and personality.
83
+ * Immutable string wrapper with validation.
84
+ */
85
+ export class SystemPrompt {
86
+ value;
87
+ constructor(value) {
88
+ this.value = value;
89
+ }
90
+ static create(value) {
91
+ const trimmed = value.trim();
92
+ if (trimmed.length === 0) {
93
+ throw new Error("SystemPrompt: cannot be empty");
94
+ }
95
+ if (trimmed.length > 10000) {
96
+ throw new Error("SystemPrompt: cannot exceed 10000 characters");
97
+ }
98
+ return new SystemPrompt(trimmed);
99
+ }
100
+ static from(value) {
101
+ return new SystemPrompt(value);
102
+ }
103
+ get length() {
104
+ return this.value.length;
105
+ }
106
+ equals(other) {
107
+ return this.value === other.value;
108
+ }
109
+ toString() {
110
+ return this.value;
111
+ }
112
+ }
113
+ // ── Model Preference ─────────────────────────────────────────────────
114
+ /**
115
+ * LLM model preference for an agent.
116
+ * Defines a primary model and optional fallback chain.
117
+ */
118
+ export class ModelPreference {
119
+ primary;
120
+ fallbacks;
121
+ constructor(primary, fallbacks) {
122
+ this.primary = primary;
123
+ this.fallbacks = fallbacks;
124
+ }
125
+ static create(primary, fallbacks) {
126
+ const trimmedPrimary = primary.trim();
127
+ if (trimmedPrimary.length === 0) {
128
+ throw new Error("ModelPreference: primary model cannot be empty");
129
+ }
130
+ const cleanFallbacks = (fallbacks ?? [])
131
+ .map((f) => f.trim())
132
+ .filter((f) => f.length > 0 && f !== trimmedPrimary);
133
+ return new ModelPreference(trimmedPrimary, cleanFallbacks);
134
+ }
135
+ static from(primary, fallbacks) {
136
+ return new ModelPreference(primary, fallbacks);
137
+ }
138
+ /** Default model preference (no specific model requested). */
139
+ static default() {
140
+ return new ModelPreference("default", []);
141
+ }
142
+ get isDefault() {
143
+ return this.primary === "default";
144
+ }
145
+ /** All models in preference order: primary then fallbacks. */
146
+ get chain() {
147
+ return [this.primary, ...this.fallbacks];
148
+ }
149
+ equals(other) {
150
+ if (this.primary !== other.primary)
151
+ return false;
152
+ if (this.fallbacks.length !== other.fallbacks.length)
153
+ return false;
154
+ return this.fallbacks.every((f, i) => f === other.fallbacks[i]);
155
+ }
156
+ toJSON() {
157
+ return { primary: this.primary, fallbacks: [...this.fallbacks] };
158
+ }
159
+ static fromJSON(json) {
160
+ return new ModelPreference(json.primary, json.fallbacks);
161
+ }
162
+ }
163
+ // ── Agent Capability ─────────────────────────────────────────────────
164
+ /**
165
+ * A single capability tag describing what an agent can do.
166
+ * Normalized to lowercase, trimmed.
167
+ */
168
+ export class AgentCapability {
169
+ value;
170
+ constructor(value) {
171
+ this.value = value;
172
+ }
173
+ static create(name) {
174
+ const trimmed = name.trim().toLowerCase();
175
+ if (trimmed.length === 0) {
176
+ throw new Error("AgentCapability: name cannot be empty");
177
+ }
178
+ if (trimmed.length > 64) {
179
+ throw new Error("AgentCapability: cannot exceed 64 characters");
180
+ }
181
+ return new AgentCapability(trimmed);
182
+ }
183
+ static from(value) {
184
+ return new AgentCapability(value);
185
+ }
186
+ equals(other) {
187
+ return this.value === other.value;
188
+ }
189
+ toString() {
190
+ return this.value;
191
+ }
192
+ }
193
+ /** Immutable ordered collection of agent capabilities. */
194
+ export class AgentCapabilities {
195
+ items;
196
+ constructor(items) {
197
+ this.items = items;
198
+ }
199
+ static create(names) {
200
+ const items = names.map((n) => AgentCapability.create(n));
201
+ const seen = new Set();
202
+ const unique = [];
203
+ for (const item of items) {
204
+ if (!seen.has(item.value)) {
205
+ seen.add(item.value);
206
+ unique.push(item);
207
+ }
208
+ }
209
+ return new AgentCapabilities(unique);
210
+ }
211
+ static empty() {
212
+ return new AgentCapabilities([]);
213
+ }
214
+ static fromItems(items) {
215
+ return new AgentCapabilities(items);
216
+ }
217
+ get size() {
218
+ return this.items.length;
219
+ }
220
+ get isEmpty() {
221
+ return this.items.length === 0;
222
+ }
223
+ has(name) {
224
+ const normalized = name.trim().toLowerCase();
225
+ return this.items.some((item) => item.value === normalized);
226
+ }
227
+ add(name) {
228
+ if (this.has(name))
229
+ return this;
230
+ return new AgentCapabilities([...this.items, AgentCapability.create(name)]);
231
+ }
232
+ remove(name) {
233
+ const normalized = name.trim().toLowerCase();
234
+ const filtered = this.items.filter((item) => item.value !== normalized);
235
+ if (filtered.length === this.items.length)
236
+ return this;
237
+ return new AgentCapabilities(filtered);
238
+ }
239
+ toArray() {
240
+ return this.items.map((item) => item.value);
241
+ }
242
+ toJSON() {
243
+ return JSON.stringify(this.toArray());
244
+ }
245
+ static fromJSON(json) {
246
+ const parsed = JSON.parse(json);
247
+ if (!Array.isArray(parsed)) {
248
+ throw new Error("AgentCapabilities.fromJSON: expected JSON array");
249
+ }
250
+ return AgentCapabilities.create(parsed);
251
+ }
252
+ equals(other) {
253
+ if (this.items.length !== other.items.length)
254
+ return false;
255
+ return this.items.every((item, i) => {
256
+ const otherItem = other.items[i];
257
+ return otherItem !== undefined && item.equals(otherItem);
258
+ });
259
+ }
260
+ }
261
+ // ── Allowed Tools ────────────────────────────────────────────────────
262
+ /**
263
+ * Whitelist of tool names an agent is allowed to use.
264
+ * Empty list means ALL tools are allowed (no restriction).
265
+ */
266
+ export class AllowedTools {
267
+ tools;
268
+ constructor(tools) {
269
+ this.tools = tools;
270
+ }
271
+ static create(tools) {
272
+ const cleaned = tools
273
+ .map((t) => t.trim())
274
+ .filter((t) => t.length > 0);
275
+ const unique = [...new Set(cleaned)];
276
+ return new AllowedTools(unique);
277
+ }
278
+ /** No restriction -- all tools allowed. */
279
+ static unrestricted() {
280
+ return new AllowedTools([]);
281
+ }
282
+ static from(tools) {
283
+ return new AllowedTools(tools);
284
+ }
285
+ get isUnrestricted() {
286
+ return this.tools.length === 0;
287
+ }
288
+ get size() {
289
+ return this.tools.length;
290
+ }
291
+ isAllowed(toolName) {
292
+ if (this.isUnrestricted)
293
+ return true;
294
+ return this.tools.includes(toolName.trim());
295
+ }
296
+ add(toolName) {
297
+ const name = toolName.trim();
298
+ if (name.length === 0)
299
+ return this;
300
+ if (this.tools.includes(name))
301
+ return this;
302
+ return new AllowedTools([...this.tools, name]);
303
+ }
304
+ remove(toolName) {
305
+ const name = toolName.trim();
306
+ const filtered = this.tools.filter((t) => t !== name);
307
+ if (filtered.length === this.tools.length)
308
+ return this;
309
+ return new AllowedTools(filtered);
310
+ }
311
+ toArray() {
312
+ return [...this.tools];
313
+ }
314
+ toJSON() {
315
+ return JSON.stringify(this.tools);
316
+ }
317
+ static fromJSON(json) {
318
+ const parsed = JSON.parse(json);
319
+ if (!Array.isArray(parsed)) {
320
+ throw new Error("AllowedTools.fromJSON: expected JSON array");
321
+ }
322
+ return AllowedTools.create(parsed);
323
+ }
324
+ equals(other) {
325
+ if (this.tools.length !== other.tools.length)
326
+ return false;
327
+ return this.tools.every((t, i) => t === other.tools[i]);
328
+ }
329
+ }
330
+ // ── Agent Profile Status ─────────────────────────────────────────────
331
+ export const AGENT_PROFILE_STATUSES = [
332
+ "active",
333
+ "inactive",
334
+ "draft",
335
+ ];
336
+ export function isValidAgentProfileStatus(value) {
337
+ return AGENT_PROFILE_STATUSES.includes(value);
338
+ }
339
+ //# sourceMappingURL=value-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/domain/agent-registry/value-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Azure Sync Domain — Entities
3
+ *
4
+ * SyncMapping tracks the bidirectional relationship between local JARVIS
5
+ * entities and Azure DevOps work items. SyncLog records individual sync
6
+ * operations for auditability.
7
+ *
8
+ * SOLID: SRP — each entity manages its own state and invariants
9
+ * DDD: Entities with identity and lifecycle, mutable state with guards
10
+ */
11
+ import type { Timestamp } from "../shared/value-objects.js";
12
+ import type { SyncMappingId, SyncLogId, WorkItemId, SyncDirection, SyncStatus, LocalEntityType, ProcessTemplate } from "./value-objects.js";
13
+ /** Serializable properties for SyncMapping persistence. */
14
+ export interface SyncMappingProps {
15
+ readonly id: string;
16
+ readonly localId: string;
17
+ readonly localEntityType: LocalEntityType;
18
+ readonly azureWorkItemId: number;
19
+ readonly azureProject: string;
20
+ readonly azureOrg: string;
21
+ readonly processTemplate: ProcessTemplate;
22
+ readonly syncStatus: SyncStatus;
23
+ readonly lastSyncedAt: string;
24
+ readonly localModifiedAt: string;
25
+ readonly azureModifiedAt: string;
26
+ readonly syncDirection: SyncDirection;
27
+ readonly azureRevision: number;
28
+ readonly createdAt: string;
29
+ }
30
+ /**
31
+ * Tracks the mapping between a local JARVIS entity and an Azure DevOps work item.
32
+ * Maintains timestamps for conflict detection (last-write-wins with revision check).
33
+ */
34
+ export declare class SyncMapping {
35
+ private readonly _id;
36
+ private readonly _localId;
37
+ private readonly _localEntityType;
38
+ private readonly _azureWorkItemId;
39
+ private readonly _azureProject;
40
+ private readonly _azureOrg;
41
+ private readonly _processTemplate;
42
+ private readonly _syncDirection;
43
+ private readonly _createdAt;
44
+ private _syncStatus;
45
+ private _lastSyncedAt;
46
+ private _localModifiedAt;
47
+ private _azureModifiedAt;
48
+ private _azureRevision;
49
+ private constructor();
50
+ /** Create a new sync mapping for a freshly synced entity pair. */
51
+ static create(params: {
52
+ id: SyncMappingId;
53
+ localId: string;
54
+ localEntityType: LocalEntityType;
55
+ azureWorkItemId: WorkItemId;
56
+ azureProject: string;
57
+ azureOrg: string;
58
+ processTemplate: ProcessTemplate;
59
+ syncDirection: SyncDirection;
60
+ now: Timestamp;
61
+ azureRevision: number;
62
+ }): SyncMapping;
63
+ /** Reconstitute from persistence (no validation — data is trusted). */
64
+ static reconstitute(params: {
65
+ id: SyncMappingId;
66
+ localId: string;
67
+ localEntityType: LocalEntityType;
68
+ azureWorkItemId: WorkItemId;
69
+ azureProject: string;
70
+ azureOrg: string;
71
+ processTemplate: ProcessTemplate;
72
+ syncStatus: SyncStatus;
73
+ lastSyncedAt: Timestamp;
74
+ localModifiedAt: Timestamp;
75
+ azureModifiedAt: Timestamp;
76
+ syncDirection: SyncDirection;
77
+ azureRevision: number;
78
+ createdAt: Timestamp;
79
+ }): SyncMapping;
80
+ get id(): SyncMappingId;
81
+ get localId(): string;
82
+ get localEntityType(): LocalEntityType;
83
+ get azureWorkItemId(): WorkItemId;
84
+ get azureProject(): string;
85
+ get azureOrg(): string;
86
+ get processTemplate(): ProcessTemplate;
87
+ get syncStatus(): SyncStatus;
88
+ get lastSyncedAt(): Timestamp;
89
+ get localModifiedAt(): Timestamp;
90
+ get azureModifiedAt(): Timestamp;
91
+ get syncDirection(): SyncDirection;
92
+ get azureRevision(): number;
93
+ get createdAt(): Timestamp;
94
+ /** Mark as successfully synced with updated timestamps and revision. */
95
+ markSynced(now: Timestamp, azureRevision: number): void;
96
+ /** Mark that the local entity was modified (needs push). */
97
+ markLocalModified(at: Timestamp): void;
98
+ /** Mark that the Azure work item was modified (needs pull). */
99
+ markAzureModified(at: Timestamp, azureRevision: number): void;
100
+ /** Mark as having a conflict (both sides modified since last sync). */
101
+ markConflict(): void;
102
+ /** Mark as having an error during sync. */
103
+ markError(): void;
104
+ /**
105
+ * Detect if there is a conflict based on timestamps.
106
+ * A conflict exists when both local and Azure were modified after
107
+ * the last successful sync.
108
+ */
109
+ hasConflict(): boolean;
110
+ /** Check if the local side was modified since last sync. */
111
+ isLocalNewer(): boolean;
112
+ /** Check if the Azure side was modified since last sync. */
113
+ isAzureNewer(): boolean;
114
+ toProps(): SyncMappingProps;
115
+ }
116
+ /** Serializable properties for SyncLog persistence. */
117
+ export interface SyncLogProps {
118
+ readonly id: string;
119
+ readonly mappingId: string;
120
+ readonly direction: SyncDirection;
121
+ readonly status: SyncLogStatus;
122
+ readonly detail: string;
123
+ readonly timestamp: string;
124
+ }
125
+ export declare const SYNC_LOG_STATUSES: readonly ["success", "failed", "skipped", "conflict"];
126
+ export type SyncLogStatus = (typeof SYNC_LOG_STATUSES)[number];
127
+ /**
128
+ * Records an individual sync operation for auditability.
129
+ * Immutable after creation — log entries are never modified.
130
+ */
131
+ export declare class SyncLog {
132
+ private readonly _id;
133
+ private readonly _mappingId;
134
+ private readonly _direction;
135
+ private readonly _status;
136
+ private readonly _detail;
137
+ private readonly _timestamp;
138
+ private constructor();
139
+ /** Create a new sync log entry. */
140
+ static create(params: {
141
+ id: SyncLogId;
142
+ mappingId: SyncMappingId;
143
+ direction: SyncDirection;
144
+ status: SyncLogStatus;
145
+ detail: string;
146
+ timestamp: Timestamp;
147
+ }): SyncLog;
148
+ /** Reconstitute from persistence. */
149
+ static reconstitute(params: {
150
+ id: SyncLogId;
151
+ mappingId: SyncMappingId;
152
+ direction: SyncDirection;
153
+ status: SyncLogStatus;
154
+ detail: string;
155
+ timestamp: Timestamp;
156
+ }): SyncLog;
157
+ get id(): SyncLogId;
158
+ get mappingId(): SyncMappingId;
159
+ get direction(): SyncDirection;
160
+ get status(): SyncLogStatus;
161
+ get detail(): string;
162
+ get timestamp(): Timestamp;
163
+ toProps(): SyncLogProps;
164
+ }
165
+ //# sourceMappingURL=entities.d.ts.map