@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.
- package/dist/application/agent-registry/dtos.d.ts +66 -0
- package/dist/application/agent-registry/dtos.d.ts.map +1 -0
- package/dist/application/agent-registry/dtos.js +11 -0
- package/dist/application/agent-registry/dtos.js.map +1 -0
- package/dist/application/agent-registry/use-cases.d.ts +39 -0
- package/dist/application/agent-registry/use-cases.d.ts.map +1 -0
- package/dist/application/agent-registry/use-cases.js +222 -0
- package/dist/application/agent-registry/use-cases.js.map +1 -0
- package/dist/application/azure-sync/dtos.d.ts +210 -0
- package/dist/application/azure-sync/dtos.d.ts.map +1 -0
- package/dist/application/azure-sync/dtos.js +11 -0
- package/dist/application/azure-sync/dtos.js.map +1 -0
- package/dist/application/azure-sync/field-builders.d.ts +54 -0
- package/dist/application/azure-sync/field-builders.d.ts.map +1 -0
- package/dist/application/azure-sync/field-builders.js +166 -0
- package/dist/application/azure-sync/field-builders.js.map +1 -0
- package/dist/application/azure-sync/index.d.ts +16 -0
- package/dist/application/azure-sync/index.d.ts.map +1 -0
- package/dist/application/azure-sync/index.js +10 -0
- package/dist/application/azure-sync/index.js.map +1 -0
- package/dist/application/azure-sync/pr-use-cases.d.ts +39 -0
- package/dist/application/azure-sync/pr-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/pr-use-cases.js +192 -0
- package/dist/application/azure-sync/pr-use-cases.js.map +1 -0
- package/dist/application/azure-sync/pull-use-cases.d.ts +43 -0
- package/dist/application/azure-sync/pull-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/pull-use-cases.js +322 -0
- package/dist/application/azure-sync/pull-use-cases.js.map +1 -0
- package/dist/application/azure-sync/push-use-cases.d.ts +53 -0
- package/dist/application/azure-sync/push-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/push-use-cases.js +341 -0
- package/dist/application/azure-sync/push-use-cases.js.map +1 -0
- package/dist/application/azure-sync/reverse-field-builder.d.ts +52 -0
- package/dist/application/azure-sync/reverse-field-builder.d.ts.map +1 -0
- package/dist/application/azure-sync/reverse-field-builder.js +130 -0
- package/dist/application/azure-sync/reverse-field-builder.js.map +1 -0
- package/dist/application/azure-sync/task-push-use-cases.d.ts +68 -0
- package/dist/application/azure-sync/task-push-use-cases.d.ts.map +1 -0
- package/dist/application/azure-sync/task-push-use-cases.js +162 -0
- package/dist/application/azure-sync/task-push-use-cases.js.map +1 -0
- package/dist/application/config/config-service.d.ts +64 -0
- package/dist/application/config/config-service.d.ts.map +1 -0
- package/dist/application/config/config-service.js +110 -0
- package/dist/application/config/config-service.js.map +1 -0
- package/dist/application/config/index.d.ts +5 -0
- package/dist/application/config/index.d.ts.map +1 -0
- package/dist/application/config/index.js +5 -0
- package/dist/application/config/index.js.map +1 -0
- package/dist/application/kanban/board-use-cases.d.ts.map +1 -1
- package/dist/application/kanban/board-use-cases.js +14 -0
- package/dist/application/kanban/board-use-cases.js.map +1 -1
- package/dist/application/kanban/card-use-cases.d.ts +21 -2
- package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
- package/dist/application/kanban/card-use-cases.js +180 -1
- package/dist/application/kanban/card-use-cases.js.map +1 -1
- package/dist/application/kanban/dtos.d.ts +59 -0
- package/dist/application/kanban/dtos.d.ts.map +1 -1
- package/dist/application/mcp/index.d.ts +10 -0
- package/dist/application/mcp/index.d.ts.map +1 -0
- package/dist/application/mcp/index.js +8 -0
- package/dist/application/mcp/index.js.map +1 -0
- package/dist/application/mcp/middleware.d.ts +91 -0
- package/dist/application/mcp/middleware.d.ts.map +1 -0
- package/dist/application/mcp/middleware.js +84 -0
- package/dist/application/mcp/middleware.js.map +1 -0
- package/dist/application/mcp/tool-adapter.d.ts +72 -0
- package/dist/application/mcp/tool-adapter.d.ts.map +1 -0
- package/dist/application/mcp/tool-adapter.js +132 -0
- package/dist/application/mcp/tool-adapter.js.map +1 -0
- package/dist/application/pipeline/dtos.d.ts +135 -0
- package/dist/application/pipeline/dtos.d.ts.map +1 -0
- package/dist/application/pipeline/dtos.js +11 -0
- package/dist/application/pipeline/dtos.js.map +1 -0
- package/dist/application/pipeline/index.d.ts +8 -0
- package/dist/application/pipeline/index.d.ts.map +1 -0
- package/dist/application/pipeline/index.js +7 -0
- package/dist/application/pipeline/index.js.map +1 -0
- package/dist/application/pipeline/use-cases.d.ts +67 -0
- package/dist/application/pipeline/use-cases.d.ts.map +1 -0
- package/dist/application/pipeline/use-cases.js +413 -0
- package/dist/application/pipeline/use-cases.js.map +1 -0
- package/dist/application/rag/use-cases.d.ts +3 -0
- package/dist/application/rag/use-cases.d.ts.map +1 -1
- package/dist/application/rag/use-cases.js +112 -34
- package/dist/application/rag/use-cases.js.map +1 -1
- package/dist/domain/agent-registry/entities.d.ts +68 -0
- package/dist/domain/agent-registry/entities.d.ts.map +1 -0
- package/dist/domain/agent-registry/entities.js +177 -0
- package/dist/domain/agent-registry/entities.js.map +1 -0
- package/dist/domain/agent-registry/repositories.d.ts +56 -0
- package/dist/domain/agent-registry/repositories.d.ts.map +1 -0
- package/dist/domain/agent-registry/repositories.js +12 -0
- package/dist/domain/agent-registry/repositories.js.map +1 -0
- package/dist/domain/agent-registry/services.d.ts +87 -0
- package/dist/domain/agent-registry/services.d.ts.map +1 -0
- package/dist/domain/agent-registry/services.js +188 -0
- package/dist/domain/agent-registry/services.js.map +1 -0
- package/dist/domain/agent-registry/value-objects.d.ts +145 -0
- package/dist/domain/agent-registry/value-objects.d.ts.map +1 -0
- package/dist/domain/agent-registry/value-objects.js +339 -0
- package/dist/domain/agent-registry/value-objects.js.map +1 -0
- package/dist/domain/azure-sync/entities.d.ts +165 -0
- package/dist/domain/azure-sync/entities.d.ts.map +1 -0
- package/dist/domain/azure-sync/entities.js +203 -0
- package/dist/domain/azure-sync/entities.js.map +1 -0
- package/dist/domain/azure-sync/index.d.ts +16 -0
- package/dist/domain/azure-sync/index.d.ts.map +1 -0
- package/dist/domain/azure-sync/index.js +14 -0
- package/dist/domain/azure-sync/index.js.map +1 -0
- package/dist/domain/azure-sync/ports.d.ts +117 -0
- package/dist/domain/azure-sync/ports.d.ts.map +1 -0
- package/dist/domain/azure-sync/ports.js +13 -0
- package/dist/domain/azure-sync/ports.js.map +1 -0
- package/dist/domain/azure-sync/repositories.d.ts +53 -0
- package/dist/domain/azure-sync/repositories.d.ts.map +1 -0
- package/dist/domain/azure-sync/repositories.js +11 -0
- package/dist/domain/azure-sync/repositories.js.map +1 -0
- package/dist/domain/azure-sync/services.d.ts +107 -0
- package/dist/domain/azure-sync/services.d.ts.map +1 -0
- package/dist/domain/azure-sync/services.js +316 -0
- package/dist/domain/azure-sync/services.js.map +1 -0
- package/dist/domain/azure-sync/value-objects.d.ts +129 -0
- package/dist/domain/azure-sync/value-objects.d.ts.map +1 -0
- package/dist/domain/azure-sync/value-objects.js +343 -0
- package/dist/domain/azure-sync/value-objects.js.map +1 -0
- package/dist/domain/config/index.d.ts +9 -0
- package/dist/domain/config/index.d.ts.map +1 -0
- package/dist/domain/config/index.js +7 -0
- package/dist/domain/config/index.js.map +1 -0
- package/dist/domain/config/repositories.d.ts +36 -0
- package/dist/domain/config/repositories.d.ts.map +1 -0
- package/dist/domain/config/repositories.js +12 -0
- package/dist/domain/config/repositories.js.map +1 -0
- package/dist/domain/config/value-objects.d.ts +112 -0
- package/dist/domain/config/value-objects.d.ts.map +1 -0
- package/dist/domain/config/value-objects.js +93 -0
- package/dist/domain/config/value-objects.js.map +1 -0
- package/dist/domain/governance/policies.d.ts.map +1 -1
- package/dist/domain/governance/policies.js +70 -0
- package/dist/domain/governance/policies.js.map +1 -1
- package/dist/domain/kanban/entities.d.ts +67 -15
- package/dist/domain/kanban/entities.d.ts.map +1 -1
- package/dist/domain/kanban/entities.js +177 -14
- package/dist/domain/kanban/entities.js.map +1 -1
- package/dist/domain/kanban/grooming.d.ts +27 -7
- package/dist/domain/kanban/grooming.d.ts.map +1 -1
- package/dist/domain/kanban/grooming.js +50 -12
- package/dist/domain/kanban/grooming.js.map +1 -1
- package/dist/domain/kanban/services.d.ts +16 -2
- package/dist/domain/kanban/services.d.ts.map +1 -1
- package/dist/domain/kanban/services.js +29 -2
- package/dist/domain/kanban/services.js.map +1 -1
- package/dist/domain/kanban/value-objects.d.ts +48 -0
- package/dist/domain/kanban/value-objects.d.ts.map +1 -1
- package/dist/domain/kanban/value-objects.js +53 -0
- package/dist/domain/kanban/value-objects.js.map +1 -1
- package/dist/domain/pipeline/gate.d.ts +75 -0
- package/dist/domain/pipeline/gate.d.ts.map +1 -0
- package/dist/domain/pipeline/gate.js +158 -0
- package/dist/domain/pipeline/gate.js.map +1 -0
- package/dist/domain/pipeline/index.d.ts +13 -0
- package/dist/domain/pipeline/index.d.ts.map +1 -0
- package/dist/domain/pipeline/index.js +14 -0
- package/dist/domain/pipeline/index.js.map +1 -0
- package/dist/domain/pipeline/pipeline.d.ts +99 -0
- package/dist/domain/pipeline/pipeline.d.ts.map +1 -0
- package/dist/domain/pipeline/pipeline.js +257 -0
- package/dist/domain/pipeline/pipeline.js.map +1 -0
- package/dist/domain/pipeline/ports.d.ts +120 -0
- package/dist/domain/pipeline/ports.d.ts.map +1 -0
- package/dist/domain/pipeline/ports.js +12 -0
- package/dist/domain/pipeline/ports.js.map +1 -0
- package/dist/domain/pipeline/repositories.d.ts +66 -0
- package/dist/domain/pipeline/repositories.d.ts.map +1 -0
- package/dist/domain/pipeline/repositories.js +11 -0
- package/dist/domain/pipeline/repositories.js.map +1 -0
- package/dist/domain/pipeline/services.d.ts +77 -0
- package/dist/domain/pipeline/services.d.ts.map +1 -0
- package/dist/domain/pipeline/services.js +156 -0
- package/dist/domain/pipeline/services.js.map +1 -0
- package/dist/domain/pipeline/value-objects.d.ts +117 -0
- package/dist/domain/pipeline/value-objects.d.ts.map +1 -0
- package/dist/domain/pipeline/value-objects.js +313 -0
- package/dist/domain/pipeline/value-objects.js.map +1 -0
- package/dist/domain/rag/value-objects.d.ts +9 -2
- package/dist/domain/rag/value-objects.d.ts.map +1 -1
- package/dist/domain/rag/value-objects.js +8 -2
- package/dist/domain/rag/value-objects.js.map +1 -1
- package/dist/hooks/event-handlers.d.ts +3 -0
- package/dist/hooks/event-handlers.d.ts.map +1 -1
- package/dist/hooks/event-handlers.js +4 -2
- package/dist/hooks/event-handlers.js.map +1 -1
- package/dist/hooks/logger.d.ts +46 -0
- package/dist/hooks/logger.d.ts.map +1 -0
- package/dist/hooks/logger.js +79 -0
- package/dist/hooks/logger.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +152 -108
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts +29 -0
- package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts.map +1 -0
- package/dist/infrastructure/agent-registry/agent-profile-repository.js +109 -0
- package/dist/infrastructure/agent-registry/agent-profile-repository.js.map +1 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts +28 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts.map +1 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.js +61 -0
- package/dist/infrastructure/agent-registry/agent-session-adapter.js.map +1 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.d.ts +19 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.d.ts.map +1 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.js +210 -0
- package/dist/infrastructure/agent-registry/built-in-profiles.js.map +1 -0
- package/dist/infrastructure/azure-sync/azure-auth.d.ts +40 -0
- package/dist/infrastructure/azure-sync/azure-auth.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/azure-auth.js +94 -0
- package/dist/infrastructure/azure-sync/azure-auth.js.map +1 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.d.ts +43 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.js +296 -0
- package/dist/infrastructure/azure-sync/azure-devops-client.js.map +1 -0
- package/dist/infrastructure/azure-sync/index.d.ts +9 -0
- package/dist/infrastructure/azure-sync/index.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/index.js +12 -0
- package/dist/infrastructure/azure-sync/index.js.map +1 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts +39 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts.map +1 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.js +202 -0
- package/dist/infrastructure/azure-sync/sqlite-sync-repository.js.map +1 -0
- package/dist/infrastructure/config/index.d.ts +5 -0
- package/dist/infrastructure/config/index.d.ts.map +1 -0
- package/dist/infrastructure/config/index.js +5 -0
- package/dist/infrastructure/config/index.js.map +1 -0
- package/dist/infrastructure/config/yaml-config-repository.d.ts +22 -0
- package/dist/infrastructure/config/yaml-config-repository.d.ts.map +1 -0
- package/dist/infrastructure/config/yaml-config-repository.js +68 -0
- package/dist/infrastructure/config/yaml-config-repository.js.map +1 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts +21 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts.map +1 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.js +49 -0
- package/dist/infrastructure/domain-map/llm-prompt-factory.js.map +1 -0
- package/dist/infrastructure/kanban/card-repository.d.ts +6 -0
- package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -1
- package/dist/infrastructure/kanban/card-repository.js +79 -7
- package/dist/infrastructure/kanban/card-repository.js.map +1 -1
- package/dist/infrastructure/pipeline/dagger-adapter.d.ts +50 -0
- package/dist/infrastructure/pipeline/dagger-adapter.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/dagger-adapter.js +153 -0
- package/dist/infrastructure/pipeline/dagger-adapter.js.map +1 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts +35 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.js +132 -0
- package/dist/infrastructure/pipeline/dagger-scaffold-generator.js.map +1 -0
- package/dist/infrastructure/pipeline/index.d.ts +20 -0
- package/dist/infrastructure/pipeline/index.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/index.js +19 -0
- package/dist/infrastructure/pipeline/index.js.map +1 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts +23 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.js +63 -0
- package/dist/infrastructure/pipeline/pipeline-template-registry.js.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts +17 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.js +467 -0
- package/dist/infrastructure/pipeline/scaffold-templates-extra.js.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates.d.ts +23 -0
- package/dist/infrastructure/pipeline/scaffold-templates.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/scaffold-templates.js +476 -0
- package/dist/infrastructure/pipeline/scaffold-templates.js.map +1 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts +32 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts.map +1 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js +197 -0
- package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js.map +1 -0
- package/dist/mcp-server.d.ts +3 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +300 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tools/agent-registry-tools.d.ts +11 -0
- package/dist/tools/agent-registry-tools.d.ts.map +1 -0
- package/dist/tools/agent-registry-tools.js +208 -0
- package/dist/tools/agent-registry-tools.js.map +1 -0
- package/dist/tools/azure-sync-tools.d.ts +15 -0
- package/dist/tools/azure-sync-tools.d.ts.map +1 -0
- package/dist/tools/azure-sync-tools.js +332 -0
- package/dist/tools/azure-sync-tools.js.map +1 -0
- package/dist/tools/kanban-card-tools.d.ts.map +1 -1
- package/dist/tools/kanban-card-tools.js +41 -16
- package/dist/tools/kanban-card-tools.js.map +1 -1
- package/dist/tools/kanban-gate-tools.d.ts +7 -0
- package/dist/tools/kanban-gate-tools.d.ts.map +1 -0
- package/dist/tools/kanban-gate-tools.js +106 -0
- package/dist/tools/kanban-gate-tools.js.map +1 -0
- package/dist/tools/kanban-grooming-tools.d.ts +7 -0
- package/dist/tools/kanban-grooming-tools.d.ts.map +1 -0
- package/dist/tools/kanban-grooming-tools.js +180 -0
- package/dist/tools/kanban-grooming-tools.js.map +1 -0
- package/dist/tools/pipeline-tools.d.ts +15 -0
- package/dist/tools/pipeline-tools.d.ts.map +1 -0
- package/dist/tools/pipeline-tools.js +424 -0
- package/dist/tools/pipeline-tools.js.map +1 -0
- 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":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAM3C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAQtB,yEAAyE;AAEzE,oDAAoD;AACpD,SAAS,YAAY,CACnB,MAAsE,EACtE,SAA8B;IAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,uDAAuD;AACvD,SAAS,aAAa,CAAC,CAAuB;IAC5C,MAAM,KAAK,GAAG;QACZ,UAAU,CAAC,CAAC,EAAE,EAAE;QAChB,WAAW,CAAC,CAAC,WAAW,EAAE;QAC1B,WAAW,CAAC,CAAC,IAAI,EAAE;QACnB,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE;QACxD,YAAY,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;KACjH,CAAC;IACF,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,yEAAyE;AAEzE;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAA4B;IAE5B,MAAM,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;IAEvC,kEAAkE;IAElE,MAAM,aAAa,GAAG,IAAI,CAAC;QACzB,WAAW,EACT,oEAAoE;YACpE,uEAAuE;YACvE,gDAAgD;QAClD,IAAI,EAAE;YACJ,EAAE,EAAE,CAAC;iBACF,MAAM,EAAE;iBACR,QAAQ,CAAC,qDAAqD,CAAC;YAClE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC9D,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CACP,kEAAkE;gBAChE,6CAA6C,CAChD;YACH,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,CAAC,yDAAyD,CAAC;YACtE,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wCAAwC,CAAC;YACrD,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;YAClD,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,aAAa,EAAE,CAAC;iBACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;SAC7D;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC;gBACvD,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;oBAClC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;oBACtC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS;oBACpC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;oBACjC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;oBACrC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS;oBAClC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE;oBACtC,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBACtC,OAAO,mCAAmC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,kEAAkE;IAElE,MAAM,YAAY,GAAG,IAAI,CAAC;QACxB,WAAW,EACT,6DAA6D;YAC7D,6DAA6D;YAC7D,oBAAoB;QACtB,IAAI,EAAE;YACJ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACnE;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,eAAe,CAAC;gBACzD,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBACtC,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,kBAAkB,IAAI,CAAC,EAAE,cAAc,CAAC;gBACrE,OAAO;oBACL,aAAa,CAAC,OAAO,CAAC;oBACtB,EAAE;oBACF,gBAAgB;oBAChB,OAAO,CAAC,YAAY;iBACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,kEAAkE;IAElE,MAAM,SAAS,GAAG,IAAI,CAAC;QACrB,WAAW,EACT,gEAAgE;YAChE,yCAAyC;QAC3C,IAAI,EAAE;YACJ,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4CAA4C,CAAC;YACzD,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,QAAQ,CAAC,kBAAkB,CAAC;SAChC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,UAAU,CAAC;gBACpD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,0BAA0B,CAAC;gBAC7D,MAAM,MAAM,GAAG,mBAAmB,QAAQ,CAAC,MAAM,IAAI,CAAC;gBACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/C,OAAO,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;gBACzE,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,kEAAkE;IAElE,MAAM,UAAU,GAAG,IAAI,CAAC;QACtB,WAAW,EACT,oEAAoE;YACpE,iEAAiE;YACjE,uCAAuC;QACzC,IAAI,EAAE;YACJ,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,yDAAyD,CAAC;YACtE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;SAC9D;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAAC;gBAC3D,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC,CAAC;YACH,OAAO,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG;oBACZ,qCAAqC;oBACrC,iBAAiB,IAAI,CAAC,SAAS,EAAE;oBACjC,YAAY,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,GAAG;iBAC/C,CAAC;gBACF,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,gBAAgB,EAAE,aAAa;QAC/B,eAAe,EAAE,YAAY;QAC7B,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,UAAU;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -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":"
|
|
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"}
|