@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,208 @@
1
+ /**
2
+ * Agent Registry Tools
3
+ *
4
+ * OpenCode tool definitions for agent profile management and spawning.
5
+ * Each tool is a thin adapter: validates args (Zod), delegates to use cases,
6
+ * formats the result as a compact string for LLM consumption.
7
+ *
8
+ * Tools (4):
9
+ * agent-register — Register a new agent profile
10
+ * agent-profile — Get details of a specific agent profile
11
+ * agent-list — List registered agent profiles (optional filters)
12
+ * agent-spawn — Spawn a new session with an agent's persona
13
+ *
14
+ * SOLID: SRP - each tool handles one user action
15
+ * SOLID: DIP - depends on use case abstractions, not infrastructure
16
+ */
17
+ import { tool } from "@opencode-ai/plugin";
18
+ const z = tool.schema;
19
+ // ── Result Formatting ─────────────────────────────────────────────────
20
+ /** Format a Result<T> as a tool response string. */
21
+ function formatResult(result, formatter) {
22
+ if (!result.success) {
23
+ return `ERROR: ${result.error}`;
24
+ }
25
+ return formatter(result.data);
26
+ }
27
+ /** Format an agent profile DTO as a compact string. */
28
+ function formatProfile(p) {
29
+ const lines = [
30
+ `Agent: ${p.id}`,
31
+ ` Name: ${p.displayName}`,
32
+ ` Role: ${p.role}`,
33
+ ` Status: ${p.status}${p.builtIn ? " (built-in)" : ""}`,
34
+ ` Model: ${p.modelPrimary}${p.modelFallbacks.length > 0 ? ` [fallbacks: ${p.modelFallbacks.join(", ")}]` : ""}`,
35
+ ];
36
+ if (p.capabilities.length > 0) {
37
+ lines.push(` Capabilities: ${p.capabilities.join(", ")}`);
38
+ }
39
+ if (p.allowedTools.length > 0) {
40
+ lines.push(` Allowed Tools: ${p.allowedTools.length} tools`);
41
+ }
42
+ else {
43
+ lines.push(` Allowed Tools: unrestricted`);
44
+ }
45
+ lines.push(` Created: ${p.createdAt}`);
46
+ lines.push(` Updated: ${p.updatedAt}`);
47
+ return lines.join("\n");
48
+ }
49
+ // ── Tool Factory ──────────────────────────────────────────────────────
50
+ /**
51
+ * Creates the 4 agent registry tool definitions.
52
+ * Called once during plugin initialization with wired dependencies.
53
+ */
54
+ export function createAgentRegistryTools(deps) {
55
+ const { agentRegistryUseCases } = deps;
56
+ // ── agent-register ─────────────────────────────────────────────
57
+ const agentRegister = tool({
58
+ description: "Register a new agent profile with a specific role, system prompt, " +
59
+ "and tool access. Agents are specialized personas that can be spawned " +
60
+ "as separate sessions with predefined behavior.",
61
+ args: {
62
+ id: z
63
+ .string()
64
+ .describe("Unique agent ID (lowercase-hyphen, e.g. 'my-agent')"),
65
+ display_name: z.string().describe("Human-readable agent name"),
66
+ role: z
67
+ .string()
68
+ .describe("Agent role: release-manager, code-reviewer, tester, documenter, " +
69
+ "security-auditor, architect, devops, custom"),
70
+ system_prompt: z
71
+ .string()
72
+ .describe("System prompt defining agent behavior (max 10000 chars)"),
73
+ model_primary: z
74
+ .string()
75
+ .optional()
76
+ .describe("Primary LLM model (default: 'default')"),
77
+ model_fallbacks: z
78
+ .array(z.string())
79
+ .optional()
80
+ .describe("Fallback models in preference order"),
81
+ capabilities: z
82
+ .array(z.string())
83
+ .optional()
84
+ .describe("Capability tags (e.g. 'code-review', 'testing')"),
85
+ allowed_tools: z
86
+ .array(z.string())
87
+ .optional()
88
+ .describe("Whitelisted tool names (empty = unrestricted)"),
89
+ },
90
+ async execute(args) {
91
+ const result = await agentRegistryUseCases.registerAgent({
92
+ id: args.id,
93
+ displayName: args.display_name,
94
+ role: args.role,
95
+ systemPrompt: args.system_prompt,
96
+ ...(args.model_primary !== undefined
97
+ ? { modelPrimary: args.model_primary }
98
+ : {}),
99
+ ...(args.model_fallbacks !== undefined
100
+ ? { modelFallbacks: args.model_fallbacks }
101
+ : {}),
102
+ ...(args.capabilities !== undefined
103
+ ? { capabilities: args.capabilities }
104
+ : {}),
105
+ ...(args.allowed_tools !== undefined
106
+ ? { allowedTools: args.allowed_tools }
107
+ : {}),
108
+ });
109
+ return formatResult(result, (profile) => {
110
+ return `Agent registered successfully.\n${formatProfile(profile)}`;
111
+ });
112
+ },
113
+ });
114
+ // ── agent-profile ──────────────────────────────────────────────
115
+ const agentProfile = tool({
116
+ description: "Get detailed information about a registered agent profile. " +
117
+ "Shows role, system prompt, model preference, capabilities, " +
118
+ "and allowed tools.",
119
+ args: {
120
+ id: z.string().describe("Agent profile ID (e.g. 'code-reviewer')"),
121
+ },
122
+ async execute(args) {
123
+ const result = await agentRegistryUseCases.getAgentProfile({
124
+ id: args.id,
125
+ });
126
+ return formatResult(result, (profile) => {
127
+ if (profile === null)
128
+ return `Agent profile "${args.id}" not found.`;
129
+ return [
130
+ formatProfile(profile),
131
+ "",
132
+ "System Prompt:",
133
+ profile.systemPrompt,
134
+ ].join("\n");
135
+ });
136
+ },
137
+ });
138
+ // ── agent-list ─────────────────────────────────────────────────
139
+ const agentList = tool({
140
+ description: "List all registered agent profiles. Optionally filter by role " +
141
+ "or status. Shows summary of each agent.",
142
+ args: {
143
+ role: z
144
+ .string()
145
+ .optional()
146
+ .describe("Filter by role (e.g. 'tester', 'reviewer')"),
147
+ status: z
148
+ .enum(["active", "inactive", "draft"])
149
+ .optional()
150
+ .describe("Filter by status"),
151
+ },
152
+ async execute(args) {
153
+ const result = await agentRegistryUseCases.listAgents({
154
+ ...(args.role !== undefined ? { role: args.role } : {}),
155
+ ...(args.status !== undefined ? { status: args.status } : {}),
156
+ });
157
+ return formatResult(result, (profiles) => {
158
+ if (profiles.length === 0)
159
+ return "No agent profiles found.";
160
+ const header = `Agent Profiles (${profiles.length}):`;
161
+ const items = profiles.map((p) => {
162
+ const builtIn = p.builtIn ? " (built-in)" : "";
163
+ return ` ${p.id}: ${p.displayName} [${p.role}] ${p.status}${builtIn}`;
164
+ });
165
+ return [header, ...items].join("\n");
166
+ });
167
+ },
168
+ });
169
+ // ── agent-spawn ────────────────────────────────────────────────
170
+ const agentSpawn = tool({
171
+ description: "Spawn a new OpenCode session configured with a registered agent's " +
172
+ "system prompt and model preference. Optionally send an initial " +
173
+ "message to kick off the agent's work.",
174
+ args: {
175
+ agent_id: z
176
+ .string()
177
+ .describe("ID of the agent profile to spawn (e.g. 'code-reviewer')"),
178
+ message: z
179
+ .string()
180
+ .optional()
181
+ .describe("Initial message to send after session creation"),
182
+ },
183
+ async execute(args) {
184
+ const result = await agentRegistryUseCases.spawnAgentSession({
185
+ agentId: args.agent_id,
186
+ ...(args.message !== undefined ? { message: args.message } : {}),
187
+ });
188
+ return formatResult(result, (data) => {
189
+ const lines = [
190
+ `Agent session spawned successfully.`,
191
+ ` Session ID: ${data.sessionId}`,
192
+ ` Agent: ${data.agentName} (${data.agentId})`,
193
+ ];
194
+ if (data.sessionTitle !== undefined) {
195
+ lines.push(` Title: ${data.sessionTitle}`);
196
+ }
197
+ return lines.join("\n");
198
+ });
199
+ },
200
+ });
201
+ return {
202
+ "agent-register": agentRegister,
203
+ "agent-profile": agentProfile,
204
+ "agent-list": agentList,
205
+ "agent-spawn": agentSpawn,
206
+ };
207
+ }
208
+ //# sourceMappingURL=agent-registry-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry-tools.js","sourceRoot":"","sources":["../../src/tools/agent-registry-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AzureSyncUseCases } from "../application/azure-sync/push-use-cases.js";
2
+ import type { AzureSyncPullUseCases } from "../application/azure-sync/pull-use-cases.js";
3
+ import type { AzurePrUseCases } from "../application/azure-sync/pr-use-cases.js";
4
+ import type { ToolDefinition } from "@opencode-ai/plugin";
5
+ export interface AzureSyncToolsDeps {
6
+ readonly azureSyncUseCases: AzureSyncUseCases;
7
+ readonly azureSyncPullUseCases: AzureSyncPullUseCases;
8
+ readonly azurePrUseCases: AzurePrUseCases;
9
+ readonly getWorkspace: (directory: string) => string;
10
+ readonly defaultOrg: string;
11
+ readonly defaultProject: string;
12
+ readonly defaultRepository: string;
13
+ }
14
+ export declare function createAzureSyncTools(deps: AzureSyncToolsDeps): Record<string, ToolDefinition>;
15
+ //# sourceMappingURL=azure-sync-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-sync-tools.d.ts","sourceRoot":"","sources":["../../src/tools/azure-sync-tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAW1D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACtD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAgKD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,kBAAkB,GACvB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAiMhC"}
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Azure Sync Tools — OpenCode tool definitions for Azure DevOps Board sync.
3
+ *
4
+ * 6 tools: discover, push, pull, sync, status, config.
5
+ *
6
+ * SOLID: SRP — azure-sync tools only
7
+ * SOLID: DIP — depends on use case abstractions
8
+ */
9
+ import { tool } from "@opencode-ai/plugin";
10
+ const z = tool.schema;
11
+ // ── Result Formatting ─────────────────────────────────────────────────
12
+ /** Generic Result-to-string formatter. */
13
+ function formatResult(result, formatter) {
14
+ if (!result.success)
15
+ return `ERROR: ${result.error}`;
16
+ return formatter(result.data);
17
+ }
18
+ // ── Formatters ────────────────────────────────────────────────────────
19
+ function formatDiscover(data) {
20
+ const lines = [
21
+ `Project: ${data.projectName} (${data.projectId})`,
22
+ `Process Template: ${data.processTemplate}`,
23
+ `Work Item Types: ${data.workItemTypes.join(", ")}`,
24
+ "",
25
+ `Existing Work Items (${data.existingWorkItems.length}):`,
26
+ ];
27
+ for (const wi of data.existingWorkItems) {
28
+ lines.push(` #${wi.id} [${wi.state}] ${wi.title}${wi.tags ? ` (${wi.tags})` : ""}`);
29
+ }
30
+ lines.push("", `Iterations (${data.iterations.length}):`);
31
+ for (const it of data.iterations) {
32
+ lines.push(` ${it.name} (${it.path})`);
33
+ }
34
+ return lines.join("\n");
35
+ }
36
+ function formatPush(data) {
37
+ const lines = [data.summary, ""];
38
+ if (data.pushed.length > 0) {
39
+ lines.push("Pushed:");
40
+ for (const item of data.pushed) {
41
+ lines.push(` ${item.action === "created" ? "+" : "~"} ${item.localId} "${item.localTitle}" -> #${item.azureWorkItemId}${item.url ? ` (${item.url})` : ""}`);
42
+ }
43
+ }
44
+ if (data.skipped.length > 0) {
45
+ lines.push("Skipped:");
46
+ for (const item of data.skipped) {
47
+ lines.push(` - ${item.localId}: ${item.reason}`);
48
+ }
49
+ }
50
+ if (data.errors.length > 0) {
51
+ lines.push("Errors:");
52
+ for (const item of data.errors) {
53
+ lines.push(` ! ${item.localId}: ${item.error}`);
54
+ }
55
+ }
56
+ return lines.join("\n");
57
+ }
58
+ function formatSyncStatus(data) {
59
+ const lines = [data.summary, ""];
60
+ if (data.mappings.length > 0) {
61
+ lines.push("Synced Mappings:");
62
+ for (const m of data.mappings) {
63
+ lines.push(` ${m.localId} <-> #${m.azureWorkItemId} [${m.syncStatus}] last: ${m.lastSyncedAt}`);
64
+ }
65
+ }
66
+ if (data.unmappedLocal.length > 0) {
67
+ lines.push("", "Local Only (not synced):");
68
+ for (const item of data.unmappedLocal) {
69
+ lines.push(` ${item.localId} "${item.localTitle}" (${item.entityType})`);
70
+ }
71
+ }
72
+ if (data.unmappedAzure.length > 0) {
73
+ lines.push("", "Azure Only (not mapped):");
74
+ for (const item of data.unmappedAzure) {
75
+ lines.push(` #${item.azureWorkItemId} "${item.title}" [${item.state}]`);
76
+ }
77
+ }
78
+ return lines.join("\n");
79
+ }
80
+ function formatPull(data) {
81
+ const lines = [data.summary, ""];
82
+ if (data.created.length > 0) {
83
+ lines.push("Created:");
84
+ for (const item of data.created) {
85
+ lines.push(` + #${item.azureWorkItemId} "${item.azureTitle}" -> ${item.localId} (${item.entityType})`);
86
+ }
87
+ }
88
+ if (data.updated.length > 0) {
89
+ lines.push("Updated:");
90
+ for (const item of data.updated) {
91
+ lines.push(` ~ ${item.localId} <- #${item.azureWorkItemId} [${item.changes.join(", ")}]`);
92
+ }
93
+ }
94
+ if (data.conflicts.length > 0) {
95
+ lines.push("Conflicts:");
96
+ for (const item of data.conflicts) {
97
+ lines.push(` ! ${item.localId} <-> #${item.azureWorkItemId}: ${item.winner} wins (${item.reason})`);
98
+ }
99
+ }
100
+ if (data.skipped.length > 0) {
101
+ lines.push("Skipped:");
102
+ for (const item of data.skipped) {
103
+ lines.push(` - #${item.azureWorkItemId}: ${item.reason}`);
104
+ }
105
+ }
106
+ if (data.errors.length > 0) {
107
+ lines.push("Errors:");
108
+ for (const item of data.errors) {
109
+ lines.push(` ! ${item.localId}: ${item.error}`);
110
+ }
111
+ }
112
+ return lines.join("\n");
113
+ }
114
+ function formatBidiSync(data) {
115
+ return [
116
+ data.summary,
117
+ "",
118
+ "=== Push ===",
119
+ formatPush(data.pushResult),
120
+ "",
121
+ "=== Pull ===",
122
+ formatPull(data.pullResult),
123
+ ].join("\n");
124
+ }
125
+ function formatPr(data) {
126
+ const reviewerLines = data.reviewers.map((r) => ` ${r.displayName} (${r.voteLabel})`);
127
+ return [
128
+ `PR #${data.pullRequestId}: ${data.title}`,
129
+ ` Status: ${data.status} | Merge: ${data.mergeStatus}`,
130
+ ` ${data.sourceBranch} -> ${data.targetBranch}`,
131
+ ` Created by: ${data.createdBy} on ${data.creationDate}`,
132
+ ...(data.workItemIds.length > 0 ? [` Work Items: ${data.workItemIds.map((id) => `#${id}`).join(", ")}`] : []),
133
+ ...(reviewerLines.length > 0 ? [" Reviewers:", ...reviewerLines] : []),
134
+ ...(data.url ? [` URL: ${data.url}`] : []),
135
+ ].join("\n");
136
+ }
137
+ function formatListPr(data) {
138
+ if (data.pullRequests.length === 0)
139
+ return data.summary;
140
+ return [data.summary, "", ...data.pullRequests.map(formatPr)].join("\n\n");
141
+ }
142
+ function formatConfig(data) {
143
+ return [
144
+ `Organization: ${data.organization}`,
145
+ `Project: ${data.project}`,
146
+ `Repository: ${data.repository}`,
147
+ `Auth Method: ${data.authMethod}`,
148
+ `Default Direction: ${data.defaultSyncDirection}`,
149
+ `Auto-detect Template: ${data.autoDetectTemplate}`,
150
+ `Connection: ${data.connectionStatus}`,
151
+ ].join("\n");
152
+ }
153
+ // ── Tool Definitions ──────────────────────────────────────────────────
154
+ export function createAzureSyncTools(deps) {
155
+ const discoverTool = tool({
156
+ description: "Detect Azure DevOps project process template, list existing work items and iterations. Use this first to understand the target project.",
157
+ args: {
158
+ org: z.string().optional().describe("Azure DevOps organization name (defaults to config)"),
159
+ project: z.string().optional().describe("Azure DevOps project name (defaults to config)"),
160
+ },
161
+ async execute(args) {
162
+ const result = await deps.azureSyncUseCases.discover({
163
+ org: args.org ?? deps.defaultOrg,
164
+ project: args.project ?? deps.defaultProject,
165
+ });
166
+ return formatResult(result, formatDiscover);
167
+ },
168
+ });
169
+ const pushTool = tool({
170
+ description: "Push local JARVIS cards, epics, or sprints to Azure DevOps Board. Creates or updates work items with proper field mapping per process template.",
171
+ args: {
172
+ entity_type: z
173
+ .enum(["card", "epic", "sprint", "all"])
174
+ .describe("Type of entities to push: card, epic, sprint, or all"),
175
+ entity_id: z
176
+ .string()
177
+ .optional()
178
+ .describe("Specific entity ID to push (e.g. CD-001, EP-001). Omit to push all of the type"),
179
+ org: z.string().optional().describe("Azure DevOps organization (defaults to config)"),
180
+ project: z.string().optional().describe("Azure DevOps project (defaults to config)"),
181
+ },
182
+ async execute(args, ctx) {
183
+ const workspace = deps.getWorkspace(ctx.directory);
184
+ const result = await deps.azureSyncUseCases.push({
185
+ workspace,
186
+ org: args.org ?? deps.defaultOrg,
187
+ project: args.project ?? deps.defaultProject,
188
+ entityType: args.entity_type,
189
+ ...(args.entity_id !== undefined
190
+ ? { entityId: args.entity_id }
191
+ : {}),
192
+ });
193
+ return formatResult(result, formatPush);
194
+ },
195
+ });
196
+ const statusTool = tool({
197
+ description: "Show sync status between local JARVIS kanban and Azure DevOps Board. Highlights synced, stale, conflict, and unmapped items.",
198
+ args: {
199
+ org: z.string().optional().describe("Azure DevOps organization (defaults to config)"),
200
+ project: z.string().optional().describe("Azure DevOps project (defaults to config)"),
201
+ },
202
+ async execute(args, ctx) {
203
+ const workspace = deps.getWorkspace(ctx.directory);
204
+ const result = await deps.azureSyncPullUseCases.enhancedSyncStatus({
205
+ workspace,
206
+ org: args.org ?? deps.defaultOrg,
207
+ project: args.project ?? deps.defaultProject,
208
+ });
209
+ return formatResult(result, formatSyncStatus);
210
+ },
211
+ });
212
+ const pullTool = tool({
213
+ description: "Pull work items from Azure DevOps Board to local JARVIS kanban. Creates new local cards/epics or updates existing mapped entities.",
214
+ args: {
215
+ entity_type: z
216
+ .enum(["card", "epic", "all"])
217
+ .describe("Type of entities to pull: card, epic, or all"),
218
+ entity_id: z
219
+ .number()
220
+ .optional()
221
+ .describe("Specific Azure work item ID to pull. Omit to pull all of the type"),
222
+ dry_run: z
223
+ .boolean()
224
+ .optional()
225
+ .describe("If true, report planned actions without executing"),
226
+ org: z.string().optional().describe("Azure DevOps organization (defaults to config)"),
227
+ project: z.string().optional().describe("Azure DevOps project (defaults to config)"),
228
+ },
229
+ async execute(args, ctx) {
230
+ const workspace = deps.getWorkspace(ctx.directory);
231
+ const result = await deps.azureSyncPullUseCases.pull({
232
+ workspace,
233
+ org: args.org ?? deps.defaultOrg,
234
+ project: args.project ?? deps.defaultProject,
235
+ entityType: args.entity_type,
236
+ ...(args.entity_id !== undefined ? { entityId: args.entity_id } : {}),
237
+ ...(args.dry_run !== undefined ? { dryRun: args.dry_run } : {}),
238
+ });
239
+ return formatResult(result, formatPull);
240
+ },
241
+ });
242
+ const syncTool = tool({
243
+ description: "Bidirectional sync: push local changes to Azure then pull Azure changes to local, resolving conflicts automatically.",
244
+ args: {
245
+ dry_run: z
246
+ .boolean()
247
+ .optional()
248
+ .describe("If true, report planned actions without executing"),
249
+ org: z.string().optional().describe("Azure DevOps organization (defaults to config)"),
250
+ project: z.string().optional().describe("Azure DevOps project (defaults to config)"),
251
+ },
252
+ async execute(args, ctx) {
253
+ const workspace = deps.getWorkspace(ctx.directory);
254
+ const result = await deps.azureSyncPullUseCases.bidiSync({
255
+ workspace,
256
+ org: args.org ?? deps.defaultOrg,
257
+ project: args.project ?? deps.defaultProject,
258
+ ...(args.dry_run !== undefined ? { dryRun: args.dry_run } : {}),
259
+ });
260
+ return formatResult(result, formatBidiSync);
261
+ },
262
+ });
263
+ const configTool = tool({
264
+ description: "Display current Azure Sync configuration and test connectivity to Azure DevOps.",
265
+ args: {},
266
+ async execute() {
267
+ const result = await deps.azureSyncUseCases.configStatus();
268
+ return formatResult(result, formatConfig);
269
+ },
270
+ });
271
+ const prCreateTool = tool({
272
+ description: "Create a Pull Request in Azure Repos. Links work items and assigns reviewers. Branches must already exist.",
273
+ args: {
274
+ title: z.string().describe("PR title"),
275
+ description: z.string().optional().describe("PR description (default: empty)"),
276
+ source_branch: z.string().describe("Source branch name (e.g. 'feature/azure-sync')"),
277
+ target_branch: z.string().optional().describe("Target branch (default: main)"),
278
+ work_item_ids: z.array(z.number()).optional().describe("Azure work item IDs to link"),
279
+ reviewers: z.array(z.string()).optional().describe("Reviewer email addresses / unique names"),
280
+ org: z.string().optional().describe("Azure DevOps organization (defaults to config)"),
281
+ project: z.string().optional().describe("Azure DevOps project (defaults to config)"),
282
+ repository: z.string().optional().describe("Azure Repos repository name (defaults to config)"),
283
+ },
284
+ async execute(args) {
285
+ const result = await deps.azurePrUseCases.createPr({
286
+ org: args.org ?? deps.defaultOrg,
287
+ project: args.project ?? deps.defaultProject,
288
+ repository: args.repository ?? deps.defaultRepository,
289
+ title: args.title,
290
+ description: args.description ?? "",
291
+ sourceBranch: args.source_branch,
292
+ ...(args.target_branch !== undefined ? { targetBranch: args.target_branch } : {}),
293
+ ...(args.work_item_ids !== undefined ? { workItemIds: args.work_item_ids } : {}),
294
+ ...(args.reviewers !== undefined ? { reviewers: args.reviewers } : {}),
295
+ });
296
+ return formatResult(result, formatPr);
297
+ },
298
+ });
299
+ const prListTool = tool({
300
+ description: "List Pull Requests in Azure Repos, or get a specific PR by ID. Shows status, reviewers, and linked work items.",
301
+ args: {
302
+ pr_id: z.number().optional().describe("Specific PR ID to retrieve"),
303
+ status: z.enum(["active", "abandoned", "completed", "all"]).optional().describe("Filter by PR status (default: active)"),
304
+ top: z.number().optional().describe("Maximum PRs to return (default: 50)"),
305
+ org: z.string().optional().describe("Azure DevOps organization (defaults to config)"),
306
+ project: z.string().optional().describe("Azure DevOps project (defaults to config)"),
307
+ repository: z.string().optional().describe("Azure Repos repository name (defaults to config)"),
308
+ },
309
+ async execute(args) {
310
+ const result = await deps.azurePrUseCases.listPrs({
311
+ org: args.org ?? deps.defaultOrg,
312
+ project: args.project ?? deps.defaultProject,
313
+ repository: args.repository ?? deps.defaultRepository,
314
+ ...(args.pr_id !== undefined ? { pullRequestId: args.pr_id } : {}),
315
+ ...(args.status !== undefined ? { status: args.status } : {}),
316
+ ...(args.top !== undefined ? { top: args.top } : {}),
317
+ });
318
+ return formatResult(result, formatListPr);
319
+ },
320
+ });
321
+ return {
322
+ "azure-sync-discover": discoverTool,
323
+ "azure-sync-push": pushTool,
324
+ "azure-sync-pull": pullTool,
325
+ "azure-sync-sync": syncTool,
326
+ "azure-sync-status": statusTool,
327
+ "azure-sync-config": configTool,
328
+ "azure-pr-create": prCreateTool,
329
+ "azure-pr-list": prListTool,
330
+ };
331
+ }
332
+ //# sourceMappingURL=azure-sync-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-sync-tools.js","sourceRoot":"","sources":["../../src/tools/azure-sync-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kanban-card-tools.d.ts","sourceRoot":"","sources":["../../src/tools/kanban-card-tools.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACb,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACtD;AAuDD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,GACxB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CA4XhC"}
1
+ {"version":3,"file":"kanban-card-tools.d.ts","sourceRoot":"","sources":["../../src/tools/kanban-card-tools.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACb,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACtD;AAoED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,GACxB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAqZhC"}