macro-agent 0.1.0 → 0.1.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/.claude/settings.local.json +3 -1
- package/.sudocode/specs.jsonl +4 -0
- package/CLAUDE.md +16 -14
- package/README.md +11 -29
- package/dist/acp/macro-agent.d.ts +15 -0
- package/dist/acp/macro-agent.d.ts.map +1 -1
- package/dist/acp/macro-agent.js +131 -35
- package/dist/acp/macro-agent.js.map +1 -1
- package/dist/acp/types.d.ts +32 -1
- package/dist/acp/types.d.ts.map +1 -1
- package/dist/acp/types.js.map +1 -1
- package/dist/agent/agent-manager.d.ts +65 -1
- package/dist/agent/agent-manager.d.ts.map +1 -1
- package/dist/agent/agent-manager.js +464 -183
- package/dist/agent/agent-manager.js.map +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/api/server.d.ts +3 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +37 -6
- package/dist/api/server.js.map +1 -1
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/token.d.ts +41 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +73 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/cli/acp.d.ts +2 -23
- package/dist/cli/acp.d.ts.map +1 -1
- package/dist/cli/acp.js +127 -61
- package/dist/cli/acp.js.map +1 -1
- package/dist/cli/index.js +147 -15
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.d.ts +6 -0
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +268 -181
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/parse-args.d.ts +20 -0
- package/dist/cli/parse-args.d.ts.map +1 -0
- package/dist/cli/parse-args.js +43 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/stable-instance-id.d.ts +8 -0
- package/dist/cli/stable-instance-id.d.ts.map +1 -0
- package/dist/cli/stable-instance-id.js +14 -0
- package/dist/cli/stable-instance-id.js.map +1 -0
- package/dist/config/project-config.d.ts +74 -7
- package/dist/config/project-config.d.ts.map +1 -1
- package/dist/config/project-config.js +123 -20
- package/dist/config/project-config.js.map +1 -1
- package/dist/map/adapter/acp-over-map.d.ts +17 -0
- package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
- package/dist/map/adapter/acp-over-map.js +384 -23
- package/dist/map/adapter/acp-over-map.js.map +1 -1
- package/dist/map/adapter/connection-manager.d.ts.map +1 -1
- package/dist/map/adapter/connection-manager.js +3 -0
- package/dist/map/adapter/connection-manager.js.map +1 -1
- package/dist/map/adapter/event-log.d.ts +87 -0
- package/dist/map/adapter/event-log.d.ts.map +1 -0
- package/dist/map/adapter/event-log.js +122 -0
- package/dist/map/adapter/event-log.js.map +1 -0
- package/dist/map/adapter/event-translator.js +6 -6
- package/dist/map/adapter/event-translator.js.map +1 -1
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
- package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
- package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
- package/dist/map/adapter/extensions/index.d.ts +10 -1
- package/dist/map/adapter/extensions/index.d.ts.map +1 -1
- package/dist/map/adapter/extensions/index.js +34 -0
- package/dist/map/adapter/extensions/index.js.map +1 -1
- package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
- package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
- package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
- package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
- package/dist/map/adapter/extensions/rename.d.ts +29 -0
- package/dist/map/adapter/extensions/rename.d.ts.map +1 -0
- package/dist/map/adapter/extensions/rename.js +49 -0
- package/dist/map/adapter/extensions/rename.js.map +1 -0
- package/dist/map/adapter/extensions/task.d.ts.map +1 -1
- package/dist/map/adapter/extensions/task.js +10 -0
- package/dist/map/adapter/extensions/task.js.map +1 -1
- package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
- package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
- package/dist/map/adapter/extensions/update-metadata.js +67 -0
- package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
- package/dist/map/adapter/index.d.ts +2 -1
- package/dist/map/adapter/index.d.ts.map +1 -1
- package/dist/map/adapter/index.js +8 -2
- package/dist/map/adapter/index.js.map +1 -1
- package/dist/map/adapter/interface.d.ts +2 -0
- package/dist/map/adapter/interface.d.ts.map +1 -1
- package/dist/map/adapter/map-adapter.d.ts +3 -0
- package/dist/map/adapter/map-adapter.d.ts.map +1 -1
- package/dist/map/adapter/map-adapter.js +258 -35
- package/dist/map/adapter/map-adapter.js.map +1 -1
- package/dist/map/adapter/subscription-manager.d.ts.map +1 -1
- package/dist/map/adapter/subscription-manager.js +5 -1
- package/dist/map/adapter/subscription-manager.js.map +1 -1
- package/dist/map/adapter/types.d.ts +2 -0
- package/dist/map/adapter/types.d.ts.map +1 -1
- package/dist/mcp/map-client.d.ts +39 -0
- package/dist/mcp/map-client.d.ts.map +1 -0
- package/dist/mcp/map-client.js +129 -0
- package/dist/mcp/map-client.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +14 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -1
- package/dist/mcp/mcp-server.js +113 -85
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/mcp/types.d.ts +9 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/metrics/metrics.js +1 -1
- package/dist/metrics/metrics.js.map +1 -1
- package/dist/roles/capabilities.d.ts +3 -1
- package/dist/roles/capabilities.d.ts.map +1 -1
- package/dist/roles/capabilities.js +17 -7
- package/dist/roles/capabilities.js.map +1 -1
- package/dist/roles/config-loader.d.ts +6 -6
- package/dist/roles/config-loader.d.ts.map +1 -1
- package/dist/roles/config-loader.js +6 -6
- package/dist/roles/config-loader.js.map +1 -1
- package/dist/roles/registry.d.ts +2 -2
- package/dist/roles/registry.js +2 -2
- package/dist/server/combined-server.d.ts +20 -0
- package/dist/server/combined-server.d.ts.map +1 -1
- package/dist/server/combined-server.js +107 -8
- package/dist/server/combined-server.js.map +1 -1
- package/dist/store/event-store.d.ts +2 -1
- package/dist/store/event-store.d.ts.map +1 -1
- package/dist/store/event-store.js +69 -20
- package/dist/store/event-store.js.map +1 -1
- package/dist/store/types/agents.d.ts +18 -0
- package/dist/store/types/agents.d.ts.map +1 -1
- package/dist/store/types/events.d.ts +1 -1
- package/dist/store/types/events.d.ts.map +1 -1
- package/dist/task/backend/index.d.ts +47 -29
- package/dist/task/backend/index.d.ts.map +1 -1
- package/dist/task/backend/index.js +109 -71
- package/dist/task/backend/index.js.map +1 -1
- package/dist/task/backend/memory.d.ts +1 -0
- package/dist/task/backend/memory.d.ts.map +1 -1
- package/dist/task/backend/memory.js +3 -0
- package/dist/task/backend/memory.js.map +1 -1
- package/dist/task/backend/opentasks/backend.d.ts +140 -0
- package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
- package/dist/task/backend/opentasks/backend.js +1023 -0
- package/dist/task/backend/opentasks/backend.js.map +1 -0
- package/dist/task/backend/opentasks/client.d.ts +337 -0
- package/dist/task/backend/opentasks/client.d.ts.map +1 -0
- package/dist/task/backend/opentasks/client.js +225 -0
- package/dist/task/backend/opentasks/client.js.map +1 -0
- package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
- package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
- package/dist/task/backend/opentasks/daemon-manager.js +195 -0
- package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
- package/dist/task/backend/opentasks/index.d.ts +21 -0
- package/dist/task/backend/opentasks/index.d.ts.map +1 -0
- package/dist/task/backend/opentasks/index.js +21 -0
- package/dist/task/backend/opentasks/index.js.map +1 -0
- package/dist/task/backend/opentasks/mapping.d.ts +48 -0
- package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
- package/dist/task/backend/opentasks/mapping.js +77 -0
- package/dist/task/backend/opentasks/mapping.js.map +1 -0
- package/dist/task/backend/types.d.ts +33 -53
- package/dist/task/backend/types.d.ts.map +1 -1
- package/dist/task/backend/types.js +7 -11
- package/dist/task/backend/types.js.map +1 -1
- package/dist/task/backend/unified-tool-provider.d.ts +57 -0
- package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
- package/dist/task/backend/unified-tool-provider.js +623 -0
- package/dist/task/backend/unified-tool-provider.js.map +1 -0
- package/dist/teams/team-loader.d.ts +2 -2
- package/dist/teams/team-loader.js +3 -3
- package/dist/teams/team-loader.js.map +1 -1
- package/dist/teams/team-runtime.d.ts.map +1 -1
- package/dist/teams/team-runtime.js +2 -0
- package/dist/teams/team-runtime.js.map +1 -1
- package/docs/architecture.md +7 -6
- package/docs/configuration.md +26 -62
- package/docs/implementation-details.md +5 -5
- package/docs/implementation-summary.md +17 -17
- package/docs/plan-self-driving-support.md +4 -4
- package/docs/spec-self-driving-support.md +10 -10
- package/docs/team-templates.md +2 -2
- package/docs/teams.md +3 -3
- package/docs/troubleshooting.md +10 -11
- package/package.json +6 -4
- package/src/__tests__/e2e/agent-spawn-visibility.e2e.test.ts +761 -0
- package/src/__tests__/e2e/full-agent-conflict-resolution.e2e.test.ts +2 -2
- package/src/__tests__/e2e/mcp-thin-client-bridge.e2e.test.ts +304 -0
- package/src/__tests__/e2e/mcp-tools-available.e2e.test.ts +324 -0
- package/src/__tests__/e2e/multi-agent.e2e.test.ts +5 -5
- package/src/__tests__/e2e/spawn-session-streaming.e2e.test.ts +563 -0
- package/src/acp/__tests__/integration.test.ts +56 -31
- package/src/acp/__tests__/macro-agent.test.ts +16 -7
- package/src/acp/macro-agent.ts +170 -36
- package/src/acp/types.ts +46 -1
- package/src/agent/__tests__/agent-manager.test.ts +228 -2
- package/src/agent/agent-manager.ts +714 -261
- package/src/agent/types.ts +3 -1
- package/src/api/server.ts +41 -7
- package/src/auth/__tests__/token.test.ts +100 -0
- package/src/auth/index.ts +1 -0
- package/src/auth/token.ts +82 -0
- package/src/cli/__tests__/acp.test.ts +1 -1
- package/src/cli/__tests__/stable-instance-id.test.ts +1 -1
- package/src/cli/acp.ts +130 -72
- package/src/cli/index.ts +120 -14
- package/src/cli/mcp.ts +311 -207
- package/src/cli/parse-args.ts +54 -0
- package/src/cli/stable-instance-id.ts +14 -0
- package/src/config/project-config.ts +190 -27
- package/src/lifecycle/__tests__/cascade-termination.test.ts +1 -1
- package/src/map/adapter/__tests__/acp-over-map-cancel.test.ts +22 -4
- package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +355 -0
- package/src/map/adapter/__tests__/acp-over-map-history.test.ts +263 -0
- package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +1 -1
- package/src/map/adapter/__tests__/event-broadcast.test.ts +420 -0
- package/src/map/adapter/__tests__/event-log.test.ts +527 -0
- package/src/map/adapter/__tests__/event-translator.test.ts +3 -3
- package/src/map/adapter/__tests__/extensions.test.ts +408 -0
- package/src/map/adapter/__tests__/map-adapter.test.ts +99 -0
- package/src/map/adapter/__tests__/mcp-bridge.test.ts +1187 -0
- package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +711 -0
- package/src/map/adapter/__tests__/websocket-integration.test.ts +218 -0
- package/src/map/adapter/acp-over-map.ts +678 -66
- package/src/map/adapter/connection-manager.ts +3 -0
- package/src/map/adapter/event-log.ts +208 -0
- package/src/map/adapter/event-translator.ts +6 -6
- package/src/map/adapter/extensions/agent-lifecycle.ts +267 -0
- package/src/map/adapter/extensions/index.ts +60 -0
- package/src/map/adapter/extensions/mcp-bridge.ts +995 -0
- package/src/map/adapter/extensions/task.ts +11 -0
- package/src/map/adapter/extensions/update-metadata.ts +126 -0
- package/src/map/adapter/index.ts +28 -0
- package/src/map/adapter/interface.ts +2 -0
- package/src/map/adapter/map-adapter.ts +312 -47
- package/src/map/adapter/subscription-manager.ts +5 -1
- package/src/map/adapter/types.ts +2 -0
- package/src/mcp/__tests__/map-client.test.ts +386 -0
- package/src/mcp/__tests__/mcp-server-thin-client.test.ts +368 -0
- package/src/mcp/__tests__/mcp-server.test.ts +100 -1
- package/src/mcp/map-client.ts +177 -0
- package/src/mcp/mcp-server.ts +191 -100
- package/src/mcp/types.ts +6 -1
- package/src/metrics/metrics.ts +1 -1
- package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +1 -1
- package/src/roles/__tests__/config-loader.test.ts +7 -7
- package/src/roles/capabilities.ts +17 -7
- package/src/roles/config-loader.ts +6 -6
- package/src/roles/registry.ts +2 -2
- package/src/server/__tests__/combined-server.test.ts +94 -21
- package/src/server/combined-server.ts +189 -33
- package/src/steering/__tests__/steering-integration.test.ts +1 -1
- package/src/store/__tests__/event-store.test.ts +196 -1
- package/src/store/__tests__/instance.test.ts +3 -3
- package/src/store/event-store.ts +80 -21
- package/src/store/types/agents.ts +15 -0
- package/src/store/types/events.ts +1 -1
- package/src/task/backend/__tests__/create-task-backend.test.ts +225 -0
- package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +524 -0
- package/src/task/backend/__tests__/unified-tool-provider.test.ts +579 -0
- package/src/task/backend/index.ts +156 -106
- package/src/task/backend/memory.ts +4 -0
- package/src/task/backend/opentasks/__tests__/backend.test.ts +968 -0
- package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +406 -0
- package/src/task/backend/opentasks/__tests__/mapping.test.ts +84 -0
- package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +1338 -0
- package/src/task/backend/opentasks/backend.ts +1323 -0
- package/src/task/backend/opentasks/client.ts +652 -0
- package/src/task/backend/opentasks/daemon-manager.ts +253 -0
- package/src/task/backend/opentasks/index.ts +69 -0
- package/src/task/backend/opentasks/mapping.ts +94 -0
- package/src/task/backend/types.ts +42 -66
- package/src/task/backend/unified-tool-provider.ts +779 -0
- package/src/teams/__tests__/cross-subsystem.integration.test.ts +1 -1
- package/src/teams/team-loader.ts +3 -3
- package/src/teams/team-runtime.ts +2 -0
- package/test_fixtures/README.md +2 -3
- package/test_fixtures/fixtures/index.ts +0 -3
- package/test_fixtures/fixtures/projects/project-with-specs.ts +7 -149
- package/test_fixtures/fixtures/repos/index.ts +1 -3
- package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -116
- package/test_fixtures/fixtures/repos/types.ts +0 -11
- package/test_fixtures/harness/__tests__/fixtures.test.ts +10 -102
- package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -33
- package/test_fixtures/harness/simulator/agent-simulator.ts +4 -4
- package/vitest.config.ts +1 -1
- package/vitest.e2e.config.ts +1 -1
- package/vitest.setup.ts +1 -30
- package/.macro-agent/teams/self-driving/prompts/grinder.md +0 -27
- package/.macro-agent/teams/self-driving/prompts/judge.md +0 -27
- package/.macro-agent/teams/self-driving/prompts/planner.md +0 -33
- package/.macro-agent/teams/self-driving/roles/grinder.yaml +0 -17
- package/.macro-agent/teams/self-driving/roles/judge.yaml +0 -24
- package/.macro-agent/teams/self-driving/roles/planner.yaml +0 -18
- package/.macro-agent/teams/self-driving/team.yaml +0 -103
- package/.macro-agent/teams/structured/prompts/developer.md +0 -26
- package/.macro-agent/teams/structured/prompts/lead.md +0 -25
- package/.macro-agent/teams/structured/prompts/reviewer.md +0 -24
- package/.macro-agent/teams/structured/roles/developer.yaml +0 -12
- package/.macro-agent/teams/structured/roles/lead.yaml +0 -11
- package/.macro-agent/teams/structured/roles/reviewer.yaml +0 -19
- package/.macro-agent/teams/structured/team.yaml +0 -89
- package/docs/sudocode-integration.md +0 -383
- package/src/task/backend/__tests__/backend-parity.test.ts +0 -451
- package/src/task/backend/__tests__/tool-provider-edge-cases.test.ts +0 -430
- package/src/task/backend/__tests__/tool-provider.test.ts +0 -983
- package/src/task/backend/sudocode/__tests__/backend-edge-cases.test.ts +0 -575
- package/src/task/backend/sudocode/__tests__/backend.test.ts +0 -1194
- package/src/task/backend/sudocode/__tests__/client-integration.test.ts +0 -418
- package/src/task/backend/sudocode/__tests__/client.test.ts +0 -345
- package/src/task/backend/sudocode/__tests__/e2e/backend.e2e.test.ts +0 -753
- package/src/task/backend/sudocode/__tests__/e2e/server-client.e2e.test.ts +0 -680
- package/src/task/backend/sudocode/__tests__/e2e-workflow.test.ts +0 -666
- package/src/task/backend/sudocode/__tests__/integration/standalone-client.integration.test.ts +0 -396
- package/src/task/backend/sudocode/__tests__/integration/sudocode-cli.integration.test.ts +0 -328
- package/src/task/backend/sudocode/__tests__/integration/test-utils.ts +0 -175
- package/src/task/backend/sudocode/__tests__/mapping-edge-cases.test.ts +0 -265
- package/src/task/backend/sudocode/__tests__/server-client.test.ts +0 -675
- package/src/task/backend/sudocode/__tests__/sync-policy-edge-cases.test.ts +0 -521
- package/src/task/backend/sudocode/__tests__/sync-policy.test.ts +0 -519
- package/src/task/backend/sudocode/__tests__/tools.test.ts +0 -471
- package/src/task/backend/sudocode/backend.ts +0 -1237
- package/src/task/backend/sudocode/client.ts +0 -515
- package/src/task/backend/sudocode/index.ts +0 -120
- package/src/task/backend/sudocode/mapping.ts +0 -93
- package/src/task/backend/sudocode/server-client.ts +0 -522
- package/src/task/backend/sudocode/standalone-client.ts +0 -623
- package/src/task/backend/sudocode/sync-policy.ts +0 -387
- package/src/task/backend/sudocode/tools.ts +0 -896
- package/src/task/backend/tool-provider.ts +0 -506
- package/test_fixtures/fixtures/sudocode/index.ts +0 -29
- package/test_fixtures/fixtures/sudocode/issues.ts +0 -185
- package/test_fixtures/fixtures/sudocode/specs.ts +0 -159
|
@@ -1,515 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SudocodeClient Interface
|
|
3
|
-
*
|
|
4
|
-
* Abstracts over deployment modes (managed vs standalone) for sudocode integration.
|
|
5
|
-
* This interface is the foundation for all sudocode interactions in the task backend.
|
|
6
|
-
*
|
|
7
|
-
* @module task/backend/sudocode/client
|
|
8
|
-
* @see s-8472 Pluggable Task Backend Integration with Sudocode
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
// =============================================================================
|
|
12
|
-
// Re-export Sudocode Types
|
|
13
|
-
// =============================================================================
|
|
14
|
-
|
|
15
|
-
// We re-export the core sudocode types that we use in the client interface.
|
|
16
|
-
// These come from the @sudocode-ai/types package.
|
|
17
|
-
export type {
|
|
18
|
-
Issue,
|
|
19
|
-
IssueStatus,
|
|
20
|
-
Spec,
|
|
21
|
-
Relationship,
|
|
22
|
-
RelationshipType,
|
|
23
|
-
EntityType,
|
|
24
|
-
IssueFeedback,
|
|
25
|
-
FeedbackType,
|
|
26
|
-
FeedbackAnchor,
|
|
27
|
-
} from "@sudocode-ai/types";
|
|
28
|
-
|
|
29
|
-
// =============================================================================
|
|
30
|
-
// Client Configuration Types
|
|
31
|
-
// =============================================================================
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Deployment mode for sudocode client
|
|
35
|
-
*
|
|
36
|
-
* - `managed`: Connect to sudocode server via REST + WebSocket
|
|
37
|
-
* - `standalone`: Direct file/CLI access without server
|
|
38
|
-
* - `auto`: Auto-detect based on server availability
|
|
39
|
-
*/
|
|
40
|
-
export type SudocodeClientMode = "managed" | "standalone" | "auto";
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Configuration for creating a SudocodeClient
|
|
44
|
-
*/
|
|
45
|
-
export interface SudocodeClientConfig {
|
|
46
|
-
/** Deployment mode */
|
|
47
|
-
mode: SudocodeClientMode;
|
|
48
|
-
|
|
49
|
-
/** Server URL for managed mode (default: 'http://localhost:3001') */
|
|
50
|
-
serverUrl?: string;
|
|
51
|
-
|
|
52
|
-
/** WebSocket URL for managed mode (derived from serverUrl if not specified) */
|
|
53
|
-
wsUrl?: string;
|
|
54
|
-
|
|
55
|
-
/** Path to project root for standalone mode (default: process.cwd()) */
|
|
56
|
-
projectPath?: string;
|
|
57
|
-
|
|
58
|
-
/** Options for auto-detection mode */
|
|
59
|
-
autoDetect?: AutoDetectOptions;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Options for auto-detection of deployment mode
|
|
64
|
-
*/
|
|
65
|
-
export interface AutoDetectOptions {
|
|
66
|
-
/** URL to check for running server (default: 'http://localhost:3001') */
|
|
67
|
-
serverUrl?: string;
|
|
68
|
-
|
|
69
|
-
/** Detection timeout in milliseconds (default: 2000) */
|
|
70
|
-
timeout?: number;
|
|
71
|
-
|
|
72
|
-
/** If both modes available, prefer managed (default: true) */
|
|
73
|
-
preferManaged?: boolean;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Configuration for ServerClient (managed mode)
|
|
78
|
-
*/
|
|
79
|
-
export interface ServerClientConfig {
|
|
80
|
-
/** Server URL (e.g., 'http://localhost:3001') */
|
|
81
|
-
serverUrl: string;
|
|
82
|
-
|
|
83
|
-
/** WebSocket URL (e.g., 'ws://localhost:3001/ws') */
|
|
84
|
-
wsUrl?: string;
|
|
85
|
-
|
|
86
|
-
/** Project ID for multi-project servers */
|
|
87
|
-
projectId?: string;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Configuration for StandaloneClient (standalone mode)
|
|
92
|
-
*/
|
|
93
|
-
export interface StandaloneClientConfig {
|
|
94
|
-
/** Path to project root (contains .sudocode/) */
|
|
95
|
-
projectPath: string;
|
|
96
|
-
|
|
97
|
-
/** Fallback polling interval in ms (default: 5000) */
|
|
98
|
-
pollInterval?: number;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// =============================================================================
|
|
102
|
-
// Filter and Input Types
|
|
103
|
-
// =============================================================================
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Options for listing issues
|
|
107
|
-
*/
|
|
108
|
-
export interface ListIssuesOptions {
|
|
109
|
-
/** Filter by status */
|
|
110
|
-
status?: import("@sudocode-ai/types").IssueStatus;
|
|
111
|
-
|
|
112
|
-
/** Filter by priority (0=highest, 4=lowest) */
|
|
113
|
-
priority?: number;
|
|
114
|
-
|
|
115
|
-
/** Search text in title/content */
|
|
116
|
-
search?: string;
|
|
117
|
-
|
|
118
|
-
/** Include archived issues (default: false) */
|
|
119
|
-
archived?: boolean;
|
|
120
|
-
|
|
121
|
-
/** Maximum results to return (default: 50) */
|
|
122
|
-
limit?: number;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Options for listing specs
|
|
127
|
-
*/
|
|
128
|
-
export interface ListSpecsOptions {
|
|
129
|
-
/** Search text in title/content */
|
|
130
|
-
search?: string;
|
|
131
|
-
|
|
132
|
-
/** Maximum results to return (default: 50) */
|
|
133
|
-
limit?: number;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Input for updating an issue
|
|
138
|
-
*/
|
|
139
|
-
export interface UpdateIssueInput {
|
|
140
|
-
/** Update title */
|
|
141
|
-
title?: string;
|
|
142
|
-
|
|
143
|
-
/** Update content/description */
|
|
144
|
-
content?: string;
|
|
145
|
-
|
|
146
|
-
/** Update status */
|
|
147
|
-
status?: import("@sudocode-ai/types").IssueStatus;
|
|
148
|
-
|
|
149
|
-
/** Update priority */
|
|
150
|
-
priority?: number;
|
|
151
|
-
|
|
152
|
-
/** Update assignee */
|
|
153
|
-
assignee?: string | null;
|
|
154
|
-
|
|
155
|
-
/** Archive/unarchive */
|
|
156
|
-
archived?: boolean;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Input for adding feedback to a spec or issue
|
|
161
|
-
*/
|
|
162
|
-
export interface FeedbackInput {
|
|
163
|
-
/** Feedback type */
|
|
164
|
-
type: import("@sudocode-ai/types").FeedbackType;
|
|
165
|
-
|
|
166
|
-
/** Feedback content */
|
|
167
|
-
content: string;
|
|
168
|
-
|
|
169
|
-
/** Optional agent identifier */
|
|
170
|
-
agent?: string;
|
|
171
|
-
|
|
172
|
-
/** Optional anchor to specific location */
|
|
173
|
-
anchor?: {
|
|
174
|
-
/** Line number to anchor to */
|
|
175
|
-
line?: number;
|
|
176
|
-
/** Text snippet to anchor to */
|
|
177
|
-
text?: string;
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// =============================================================================
|
|
182
|
-
// Event Types
|
|
183
|
-
// =============================================================================
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Types of issue change events
|
|
187
|
-
*/
|
|
188
|
-
export type IssueChangeType =
|
|
189
|
-
| "created"
|
|
190
|
-
| "updated"
|
|
191
|
-
| "deleted"
|
|
192
|
-
| "status_changed"
|
|
193
|
-
| "blocked"
|
|
194
|
-
| "unblocked";
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Issue change event emitted when an issue changes
|
|
198
|
-
*/
|
|
199
|
-
export interface IssueChangeEvent {
|
|
200
|
-
/** Type of change */
|
|
201
|
-
type: IssueChangeType;
|
|
202
|
-
|
|
203
|
-
/** Issue ID that changed */
|
|
204
|
-
issueId: string;
|
|
205
|
-
|
|
206
|
-
/** Current issue state (undefined if deleted) */
|
|
207
|
-
issue?: import("@sudocode-ai/types").Issue;
|
|
208
|
-
|
|
209
|
-
/** Previous issue state (for updates) */
|
|
210
|
-
previousIssue?: import("@sudocode-ai/types").Issue;
|
|
211
|
-
|
|
212
|
-
/** Additional metadata */
|
|
213
|
-
metadata?: Record<string, unknown>;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Callback for issue change events
|
|
218
|
-
*/
|
|
219
|
-
export type IssueChangeCallback = (event: IssueChangeEvent) => void;
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Unsubscribe function returned by event subscriptions
|
|
223
|
-
*/
|
|
224
|
-
export type Unsubscribe = () => void;
|
|
225
|
-
|
|
226
|
-
// =============================================================================
|
|
227
|
-
// SudocodeClient Interface
|
|
228
|
-
// =============================================================================
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* SudocodeClient Interface
|
|
232
|
-
*
|
|
233
|
-
* Abstracts over deployment modes for sudocode access:
|
|
234
|
-
* - ServerClient: REST + WebSocket for managed mode
|
|
235
|
-
* - StandaloneClient: CLI + file watcher for standalone mode
|
|
236
|
-
*
|
|
237
|
-
* @example
|
|
238
|
-
* ```typescript
|
|
239
|
-
* const client = await createSudocodeClient({
|
|
240
|
-
* mode: 'auto',
|
|
241
|
-
* serverUrl: 'http://localhost:3001',
|
|
242
|
-
* projectPath: process.cwd(),
|
|
243
|
-
* });
|
|
244
|
-
*
|
|
245
|
-
* const issue = await client.getIssue('i-abc123');
|
|
246
|
-
* const ready = await client.getReadyIssues();
|
|
247
|
-
*
|
|
248
|
-
* client.onIssueChange((event) => {
|
|
249
|
-
* console.log('Issue changed:', event.issueId, event.type);
|
|
250
|
-
* });
|
|
251
|
-
* ```
|
|
252
|
-
*/
|
|
253
|
-
export interface SudocodeClient {
|
|
254
|
-
// ─── Issue Operations ────────────────────────────────────────────────────────
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Get an issue by ID
|
|
258
|
-
* @param id Issue ID (e.g., 'i-abc123')
|
|
259
|
-
* @returns Issue or null if not found
|
|
260
|
-
*/
|
|
261
|
-
getIssue(
|
|
262
|
-
id: string
|
|
263
|
-
): Promise<import("@sudocode-ai/types").Issue | null>;
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* List issues with optional filtering
|
|
267
|
-
* @param filter Optional filter options
|
|
268
|
-
* @returns Array of issues matching filter
|
|
269
|
-
*/
|
|
270
|
-
listIssues(
|
|
271
|
-
filter?: ListIssuesOptions
|
|
272
|
-
): Promise<import("@sudocode-ai/types").Issue[]>;
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Get issues that are ready to work on (no blocking dependencies)
|
|
276
|
-
* @returns Array of ready issues
|
|
277
|
-
*/
|
|
278
|
-
getReadyIssues(): Promise<
|
|
279
|
-
import("@sudocode-ai/types").Issue[]
|
|
280
|
-
>;
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Update an issue
|
|
284
|
-
* @param id Issue ID
|
|
285
|
-
* @param updates Fields to update
|
|
286
|
-
* @returns Updated issue
|
|
287
|
-
*/
|
|
288
|
-
updateIssue(
|
|
289
|
-
id: string,
|
|
290
|
-
updates: UpdateIssueInput
|
|
291
|
-
): Promise<import("@sudocode-ai/types").Issue>;
|
|
292
|
-
|
|
293
|
-
// ─── Relationship Operations ─────────────────────────────────────────────────
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Create a relationship between two entities
|
|
297
|
-
* @param from Source entity ID (issue or spec)
|
|
298
|
-
* @param to Target entity ID (issue or spec)
|
|
299
|
-
* @param type Relationship type
|
|
300
|
-
*/
|
|
301
|
-
createLink(
|
|
302
|
-
from: string,
|
|
303
|
-
to: string,
|
|
304
|
-
type: import("@sudocode-ai/types").RelationshipType
|
|
305
|
-
): Promise<void>;
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Remove a relationship between two entities
|
|
309
|
-
* @param from Source entity ID
|
|
310
|
-
* @param to Target entity ID
|
|
311
|
-
* @param type Relationship type
|
|
312
|
-
*/
|
|
313
|
-
removeLink(
|
|
314
|
-
from: string,
|
|
315
|
-
to: string,
|
|
316
|
-
type: import("@sudocode-ai/types").RelationshipType
|
|
317
|
-
): Promise<void>;
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Get issues that block a given issue
|
|
321
|
-
* @param issueId Issue ID to check
|
|
322
|
-
* @returns Array of blocking issues
|
|
323
|
-
*/
|
|
324
|
-
getBlockers(
|
|
325
|
-
issueId: string
|
|
326
|
-
): Promise<import("@sudocode-ai/types").Issue[]>;
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Get issues that a given issue blocks
|
|
330
|
-
* @param issueId Issue ID to check
|
|
331
|
-
* @returns Array of issues blocked by this issue
|
|
332
|
-
*/
|
|
333
|
-
getBlocking(
|
|
334
|
-
issueId: string
|
|
335
|
-
): Promise<import("@sudocode-ai/types").Issue[]>;
|
|
336
|
-
|
|
337
|
-
// ─── Spec Operations (read-only) ─────────────────────────────────────────────
|
|
338
|
-
|
|
339
|
-
/**
|
|
340
|
-
* Get a spec by ID
|
|
341
|
-
* @param id Spec ID (e.g., 's-abc123')
|
|
342
|
-
* @returns Spec or null if not found
|
|
343
|
-
*/
|
|
344
|
-
getSpec(
|
|
345
|
-
id: string
|
|
346
|
-
): Promise<import("@sudocode-ai/types").Spec | null>;
|
|
347
|
-
|
|
348
|
-
/**
|
|
349
|
-
* List specs with optional filtering
|
|
350
|
-
* @param filter Optional filter options
|
|
351
|
-
* @returns Array of specs matching filter
|
|
352
|
-
*/
|
|
353
|
-
listSpecs(
|
|
354
|
-
filter?: ListSpecsOptions
|
|
355
|
-
): Promise<import("@sudocode-ai/types").Spec[]>;
|
|
356
|
-
|
|
357
|
-
// ─── Feedback Operations ─────────────────────────────────────────────────────
|
|
358
|
-
|
|
359
|
-
/**
|
|
360
|
-
* Add feedback to a spec or issue
|
|
361
|
-
* @param fromIssueId Issue ID providing the feedback (optional for anonymous)
|
|
362
|
-
* @param toId Target spec or issue ID receiving feedback
|
|
363
|
-
* @param feedback Feedback content and metadata
|
|
364
|
-
*/
|
|
365
|
-
addFeedback(
|
|
366
|
-
fromIssueId: string | undefined,
|
|
367
|
-
toId: string,
|
|
368
|
-
feedback: FeedbackInput
|
|
369
|
-
): Promise<void>;
|
|
370
|
-
|
|
371
|
-
// ─── Event Subscription ──────────────────────────────────────────────────────
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Subscribe to all issue changes
|
|
375
|
-
* @param callback Callback invoked on each change
|
|
376
|
-
* @returns Unsubscribe function
|
|
377
|
-
*/
|
|
378
|
-
onIssueChange(callback: IssueChangeCallback): Unsubscribe;
|
|
379
|
-
|
|
380
|
-
/**
|
|
381
|
-
* Subscribe to changes for a specific issue
|
|
382
|
-
* @param issueId Issue ID to watch
|
|
383
|
-
* @param callback Callback invoked on changes to this issue
|
|
384
|
-
* @returns Unsubscribe function
|
|
385
|
-
*/
|
|
386
|
-
onIssueChange(issueId: string, callback: IssueChangeCallback): Unsubscribe;
|
|
387
|
-
|
|
388
|
-
// ─── Lifecycle ───────────────────────────────────────────────────────────────
|
|
389
|
-
|
|
390
|
-
/**
|
|
391
|
-
* Check if the client is connected/ready
|
|
392
|
-
* @returns True if client is ready for operations
|
|
393
|
-
*/
|
|
394
|
-
isReady(): boolean;
|
|
395
|
-
|
|
396
|
-
/**
|
|
397
|
-
* Close the client and release resources
|
|
398
|
-
*/
|
|
399
|
-
close(): void;
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
// =============================================================================
|
|
403
|
-
// Client Factory
|
|
404
|
-
// =============================================================================
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* Default configuration values
|
|
408
|
-
*/
|
|
409
|
-
export const DEFAULT_CLIENT_CONFIG: Required<
|
|
410
|
-
Omit<SudocodeClientConfig, "mode">
|
|
411
|
-
> = {
|
|
412
|
-
serverUrl: "http://localhost:3001",
|
|
413
|
-
wsUrl: "ws://localhost:3001/ws",
|
|
414
|
-
projectPath: process.cwd(),
|
|
415
|
-
autoDetect: {
|
|
416
|
-
serverUrl: "http://localhost:3001",
|
|
417
|
-
timeout: 2000,
|
|
418
|
-
preferManaged: true,
|
|
419
|
-
},
|
|
420
|
-
};
|
|
421
|
-
|
|
422
|
-
/**
|
|
423
|
-
* Check if a sudocode server is available at the given URL
|
|
424
|
-
* @param serverUrl Server URL to check
|
|
425
|
-
* @param timeout Timeout in milliseconds
|
|
426
|
-
* @returns True if server is available
|
|
427
|
-
*/
|
|
428
|
-
export async function checkServerHealth(
|
|
429
|
-
serverUrl: string,
|
|
430
|
-
timeout: number = 2000
|
|
431
|
-
): Promise<boolean> {
|
|
432
|
-
try {
|
|
433
|
-
const controller = new AbortController();
|
|
434
|
-
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
435
|
-
|
|
436
|
-
const response = await fetch(`${serverUrl}/health`, {
|
|
437
|
-
signal: controller.signal,
|
|
438
|
-
});
|
|
439
|
-
|
|
440
|
-
clearTimeout(timeoutId);
|
|
441
|
-
return response.ok;
|
|
442
|
-
} catch {
|
|
443
|
-
return false;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
/**
|
|
448
|
-
* Create a SudocodeClient based on configuration
|
|
449
|
-
*
|
|
450
|
-
* @param config Client configuration
|
|
451
|
-
* @returns Configured SudocodeClient
|
|
452
|
-
*
|
|
453
|
-
* @example
|
|
454
|
-
* ```typescript
|
|
455
|
-
* // Auto-detect mode
|
|
456
|
-
* const client = await createSudocodeClient({ mode: 'auto' });
|
|
457
|
-
*
|
|
458
|
-
* // Explicit managed mode
|
|
459
|
-
* const serverClient = await createSudocodeClient({
|
|
460
|
-
* mode: 'managed',
|
|
461
|
-
* serverUrl: 'http://localhost:3001',
|
|
462
|
-
* });
|
|
463
|
-
*
|
|
464
|
-
* // Explicit standalone mode
|
|
465
|
-
* const standaloneClient = await createSudocodeClient({
|
|
466
|
-
* mode: 'standalone',
|
|
467
|
-
* projectPath: '/path/to/project',
|
|
468
|
-
* });
|
|
469
|
-
* ```
|
|
470
|
-
*/
|
|
471
|
-
export async function createSudocodeClient(
|
|
472
|
-
config: SudocodeClientConfig
|
|
473
|
-
): Promise<SudocodeClient> {
|
|
474
|
-
const {
|
|
475
|
-
mode,
|
|
476
|
-
serverUrl = DEFAULT_CLIENT_CONFIG.serverUrl,
|
|
477
|
-
wsUrl,
|
|
478
|
-
projectPath = DEFAULT_CLIENT_CONFIG.projectPath,
|
|
479
|
-
autoDetect = DEFAULT_CLIENT_CONFIG.autoDetect,
|
|
480
|
-
} = config;
|
|
481
|
-
|
|
482
|
-
if (mode === "managed") {
|
|
483
|
-
// Import and create ServerClient
|
|
484
|
-
const { ServerClient } = await import("./server-client.js");
|
|
485
|
-
return new ServerClient({
|
|
486
|
-
serverUrl,
|
|
487
|
-
wsUrl: wsUrl ?? serverUrl.replace(/^http/, "ws") + "/ws",
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
if (mode === "standalone") {
|
|
492
|
-
// Import and create StandaloneClient
|
|
493
|
-
const { createStandaloneClient } = await import("./standalone-client.js");
|
|
494
|
-
return createStandaloneClient({ projectPath });
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
// Auto mode: detect server availability
|
|
498
|
-
const checkUrl = autoDetect.serverUrl ?? serverUrl;
|
|
499
|
-
const timeout = autoDetect.timeout ?? 2000;
|
|
500
|
-
const preferManaged = autoDetect.preferManaged ?? true;
|
|
501
|
-
|
|
502
|
-
const serverAvailable = await checkServerHealth(checkUrl, timeout);
|
|
503
|
-
|
|
504
|
-
if (serverAvailable && preferManaged) {
|
|
505
|
-
const { ServerClient } = await import("./server-client.js");
|
|
506
|
-
return new ServerClient({
|
|
507
|
-
serverUrl: checkUrl,
|
|
508
|
-
wsUrl: wsUrl ?? checkUrl.replace(/^http/, "ws") + "/ws",
|
|
509
|
-
});
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
// Fall back to standalone
|
|
513
|
-
const { createStandaloneClient } = await import("./standalone-client.js");
|
|
514
|
-
return createStandaloneClient({ projectPath });
|
|
515
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sudocode Task Backend Module
|
|
3
|
-
*
|
|
4
|
-
* Provides integration with sudocode for task management.
|
|
5
|
-
*
|
|
6
|
-
* @module task/backend/sudocode
|
|
7
|
-
* @see s-8472 Pluggable Task Backend Integration with Sudocode
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
// =============================================================================
|
|
11
|
-
// Client Types and Factory
|
|
12
|
-
// =============================================================================
|
|
13
|
-
|
|
14
|
-
export type {
|
|
15
|
-
// Configuration types
|
|
16
|
-
SudocodeClientMode,
|
|
17
|
-
SudocodeClientConfig,
|
|
18
|
-
AutoDetectOptions,
|
|
19
|
-
ServerClientConfig,
|
|
20
|
-
StandaloneClientConfig,
|
|
21
|
-
|
|
22
|
-
// Filter and input types
|
|
23
|
-
ListIssuesOptions,
|
|
24
|
-
ListSpecsOptions,
|
|
25
|
-
UpdateIssueInput,
|
|
26
|
-
FeedbackInput,
|
|
27
|
-
|
|
28
|
-
// Event types
|
|
29
|
-
IssueChangeType,
|
|
30
|
-
IssueChangeEvent,
|
|
31
|
-
IssueChangeCallback,
|
|
32
|
-
Unsubscribe,
|
|
33
|
-
|
|
34
|
-
// Client interface
|
|
35
|
-
SudocodeClient,
|
|
36
|
-
} from "./client.js";
|
|
37
|
-
|
|
38
|
-
export {
|
|
39
|
-
DEFAULT_CLIENT_CONFIG,
|
|
40
|
-
checkServerHealth,
|
|
41
|
-
createSudocodeClient,
|
|
42
|
-
} from "./client.js";
|
|
43
|
-
|
|
44
|
-
// Re-export sudocode types for convenience
|
|
45
|
-
export type {
|
|
46
|
-
Issue,
|
|
47
|
-
IssueStatus,
|
|
48
|
-
Spec,
|
|
49
|
-
Relationship,
|
|
50
|
-
RelationshipType,
|
|
51
|
-
EntityType,
|
|
52
|
-
IssueFeedback,
|
|
53
|
-
FeedbackType,
|
|
54
|
-
FeedbackAnchor,
|
|
55
|
-
} from "./client.js";
|
|
56
|
-
|
|
57
|
-
// =============================================================================
|
|
58
|
-
// Backend Implementation
|
|
59
|
-
// =============================================================================
|
|
60
|
-
|
|
61
|
-
export type { SudocodeTaskBackendConfig } from "./backend.js";
|
|
62
|
-
|
|
63
|
-
export {
|
|
64
|
-
SudocodeTaskBackend,
|
|
65
|
-
SudocodeTaskBackendError,
|
|
66
|
-
createSudocodeTaskBackend,
|
|
67
|
-
} from "./backend.js";
|
|
68
|
-
|
|
69
|
-
// =============================================================================
|
|
70
|
-
// Mapping Utilities
|
|
71
|
-
// =============================================================================
|
|
72
|
-
|
|
73
|
-
export {
|
|
74
|
-
mapSudocodeStatus,
|
|
75
|
-
mapTaskStatus,
|
|
76
|
-
mapIssuePriority,
|
|
77
|
-
isIssueComplete,
|
|
78
|
-
isIssueBlocked,
|
|
79
|
-
} from "./mapping.js";
|
|
80
|
-
|
|
81
|
-
// =============================================================================
|
|
82
|
-
// Sync Policy
|
|
83
|
-
// =============================================================================
|
|
84
|
-
|
|
85
|
-
export type {
|
|
86
|
-
SyncPolicy,
|
|
87
|
-
IssueClosed,
|
|
88
|
-
DescriptionChanged,
|
|
89
|
-
BlockerChanged,
|
|
90
|
-
UpdateIssueOnComplete,
|
|
91
|
-
SyncEvent,
|
|
92
|
-
SyncEventCallback,
|
|
93
|
-
IssueClosedSyncEvent,
|
|
94
|
-
IssueDeletedSyncEvent,
|
|
95
|
-
BlockerAddedSyncEvent,
|
|
96
|
-
BlockerRemovedSyncEvent,
|
|
97
|
-
DescriptionChangedSyncEvent,
|
|
98
|
-
} from "./sync-policy.js";
|
|
99
|
-
|
|
100
|
-
export {
|
|
101
|
-
SyncPolicyEngine,
|
|
102
|
-
defaultSyncPolicy,
|
|
103
|
-
createSyncPolicyEngine,
|
|
104
|
-
} from "./sync-policy.js";
|
|
105
|
-
|
|
106
|
-
// =============================================================================
|
|
107
|
-
// Tool Provider
|
|
108
|
-
// =============================================================================
|
|
109
|
-
|
|
110
|
-
export type {
|
|
111
|
-
TaskToolMode,
|
|
112
|
-
SudocodeToolContext,
|
|
113
|
-
GetSudocodeToolContext,
|
|
114
|
-
SudocodeTaskToolProviderConfig,
|
|
115
|
-
} from "./tools.js";
|
|
116
|
-
|
|
117
|
-
export {
|
|
118
|
-
SudocodeTaskToolProvider,
|
|
119
|
-
createSudocodeTaskToolProvider,
|
|
120
|
-
} from "./tools.js";
|