@voybio/ace-swarm 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/LICENSE +186 -0
  3. package/README.md +229 -0
  4. package/assets/.agents/ACE/ACE-Init/AGENTS.md +210 -0
  5. package/assets/.agents/ACE/ACE-Init/instructions.md +118 -0
  6. package/assets/.agents/ACE/ACE_coders/AGENTS.md +154 -0
  7. package/assets/.agents/ACE/ACE_coders/INSTRUCTIONS.md +216 -0
  8. package/assets/.agents/ACE/AGENT_REGISTRY.md +70 -0
  9. package/assets/.agents/ACE/AGENT_REGISTRY_7.md +9 -0
  10. package/assets/.agents/ACE/DIRECTIVE_KERNEL.md +234 -0
  11. package/assets/.agents/ACE/UI/AGENTS.md +115 -0
  12. package/assets/.agents/ACE/UI/instructions.md +178 -0
  13. package/assets/.agents/ACE/VOS/ACE_VOS_MISSING_INFO_MATRIX.md +42 -0
  14. package/assets/.agents/ACE/VOS/AGENTS.md +72 -0
  15. package/assets/.agents/ACE/VOS/instructions.md +211 -0
  16. package/assets/.agents/ACE/agent-astgrep/AGENTS.md +123 -0
  17. package/assets/.agents/ACE/agent-astgrep/instructions.md +91 -0
  18. package/assets/.agents/ACE/agent-builder/AGENTS.md +172 -0
  19. package/assets/.agents/ACE/agent-builder/instructions.md +137 -0
  20. package/assets/.agents/ACE/agent-docs/AGENTS.md +159 -0
  21. package/assets/.agents/ACE/agent-docs/instructions.md +133 -0
  22. package/assets/.agents/ACE/agent-eval/AGENTS.md +46 -0
  23. package/assets/.agents/ACE/agent-eval/instructions.md +56 -0
  24. package/assets/.agents/ACE/agent-memory/AGENTS.md +49 -0
  25. package/assets/.agents/ACE/agent-memory/instructions.md +50 -0
  26. package/assets/.agents/ACE/agent-observability/AGENTS.md +46 -0
  27. package/assets/.agents/ACE/agent-observability/instructions.md +50 -0
  28. package/assets/.agents/ACE/agent-ops/AGENTS.md +201 -0
  29. package/assets/.agents/ACE/agent-ops/instructions.md +136 -0
  30. package/assets/.agents/ACE/agent-qa/AGENTS.md +189 -0
  31. package/assets/.agents/ACE/agent-qa/instructions.md +121 -0
  32. package/assets/.agents/ACE/agent-release/AGENTS.md +48 -0
  33. package/assets/.agents/ACE/agent-release/instructions.md +49 -0
  34. package/assets/.agents/ACE/agent-research/AGENTS.md +160 -0
  35. package/assets/.agents/ACE/agent-research/instructions.md +118 -0
  36. package/assets/.agents/ACE/agent-security/AGENTS.md +48 -0
  37. package/assets/.agents/ACE/agent-security/instructions.md +50 -0
  38. package/assets/.agents/ACE/agent-skeptic/AGENTS.md +178 -0
  39. package/assets/.agents/ACE/agent-skeptic/instructions.md +196 -0
  40. package/assets/.agents/ACE/agent-spec/AGENTS.md +169 -0
  41. package/assets/.agents/ACE/agent-spec/instructions.md +116 -0
  42. package/assets/.agents/ACE/orchestrator/AGENTS.md +365 -0
  43. package/assets/.agents/ACE/orchestrator/instructions.md +231 -0
  44. package/assets/.agents/skills/ace-orchestrator/SKILL.md +63 -0
  45. package/assets/.agents/skills/ace-orchestrator/references/engineering-bootstrap-playbook.md +360 -0
  46. package/assets/.agents/skills/astgrep-index/SKILL.md +58 -0
  47. package/assets/.agents/skills/codemunch/SKILL.md +65 -0
  48. package/assets/.agents/skills/codemunch/references/ast-driven-protocol.md +543 -0
  49. package/assets/.agents/skills/codesnipe/SKILL.md +64 -0
  50. package/assets/.agents/skills/codesnipe/references/dual-codebase-playbook.md +671 -0
  51. package/assets/.agents/skills/eval-harness/SKILL.md +203 -0
  52. package/assets/.agents/skills/handoff-lint/SKILL.md +164 -0
  53. package/assets/.agents/skills/incident-commander/SKILL.md +174 -0
  54. package/assets/.agents/skills/landing-review-watcher/SKILL.md +68 -0
  55. package/assets/.agents/skills/memory-curator/SKILL.md +179 -0
  56. package/assets/.agents/skills/problem-triage/SKILL.md +57 -0
  57. package/assets/.agents/skills/problem-triage/agents/openai.yaml +3 -0
  58. package/assets/.agents/skills/release-sentry/SKILL.md +189 -0
  59. package/assets/.agents/skills/risk-quant/SKILL.md +190 -0
  60. package/assets/.agents/skills/schema-forge/SKILL.md +174 -0
  61. package/assets/.agents/skills/skill-auditor/SKILL.md +52 -0
  62. package/assets/.agents/skills/state-auditor/SKILL.md +182 -0
  63. package/assets/.github/hooks/ace-copilot.json +68 -0
  64. package/assets/agent-state/ACE_WORKFLOW.md +131 -0
  65. package/assets/agent-state/ARTIFACT_MANIFEST.json +5 -0
  66. package/assets/agent-state/AST_GREP_COMMANDS.md +121 -0
  67. package/assets/agent-state/AST_GREP_INDEX.json +13 -0
  68. package/assets/agent-state/AST_GREP_INDEX.md +15 -0
  69. package/assets/agent-state/DECISIONS.md +7 -0
  70. package/assets/agent-state/EVIDENCE_LOG.md +7 -0
  71. package/assets/agent-state/HANDOFF.json +24 -0
  72. package/assets/agent-state/INTERFACE_REGISTRY.md +75 -0
  73. package/assets/agent-state/MODULES/gates/gate-autonomy.json +7 -0
  74. package/assets/agent-state/MODULES/gates/gate-completeness.json +7 -0
  75. package/assets/agent-state/MODULES/gates/gate-correctness.json +7 -0
  76. package/assets/agent-state/MODULES/gates/gate-evaluation.json +7 -0
  77. package/assets/agent-state/MODULES/gates/gate-operability.json +7 -0
  78. package/assets/agent-state/MODULES/gates/gate-security.json +7 -0
  79. package/assets/agent-state/MODULES/gates/gate-typescript-public-surface.json +7 -0
  80. package/assets/agent-state/MODULES/registry.json +41 -0
  81. package/assets/agent-state/MODULES/roles/capability-astgrep.json +49 -0
  82. package/assets/agent-state/MODULES/roles/capability-build.json +39 -0
  83. package/assets/agent-state/MODULES/roles/capability-docs.json +38 -0
  84. package/assets/agent-state/MODULES/roles/capability-eval.json +20 -0
  85. package/assets/agent-state/MODULES/roles/capability-memory.json +20 -0
  86. package/assets/agent-state/MODULES/roles/capability-observability.json +20 -0
  87. package/assets/agent-state/MODULES/roles/capability-ops.json +45 -0
  88. package/assets/agent-state/MODULES/roles/capability-qa.json +40 -0
  89. package/assets/agent-state/MODULES/roles/capability-release.json +21 -0
  90. package/assets/agent-state/MODULES/roles/capability-research.json +44 -0
  91. package/assets/agent-state/MODULES/roles/capability-security.json +21 -0
  92. package/assets/agent-state/MODULES/roles/capability-skeptic.json +48 -0
  93. package/assets/agent-state/MODULES/roles/capability-spec.json +42 -0
  94. package/assets/agent-state/MODULES/schemas/ACE_RUNTIME_PROFILE.schema.json +289 -0
  95. package/assets/agent-state/MODULES/schemas/ARTIFACT_MANIFEST.schema.json +185 -0
  96. package/assets/agent-state/MODULES/schemas/HANDOFF.agent-state.schema.json +124 -0
  97. package/assets/agent-state/MODULES/schemas/HANDOFF.schema.json +55 -0
  98. package/assets/agent-state/MODULES/schemas/RUNTIME_EXECUTOR_SESSION_REGISTRY.schema.json +290 -0
  99. package/assets/agent-state/MODULES/schemas/RUNTIME_TOOL_SPEC_REGISTRY.schema.json +144 -0
  100. package/assets/agent-state/MODULES/schemas/STATUS_EVENT.schema.json +84 -0
  101. package/assets/agent-state/MODULES/schemas/SWARM_HANDOFF.schema.json +138 -0
  102. package/assets/agent-state/MODULES/schemas/TRACKER_SNAPSHOT.schema.json +134 -0
  103. package/assets/agent-state/MODULES/schemas/VERICIFY_BRIDGE_SNAPSHOT.schema.json +157 -0
  104. package/assets/agent-state/MODULES/schemas/VERICIFY_PROCESS_POST_LOG.schema.json +93 -0
  105. package/assets/agent-state/MODULES/schemas/WORKSPACE_SESSION_REGISTRY.schema.json +133 -0
  106. package/assets/agent-state/PROVENANCE_LOG.md +28 -0
  107. package/assets/agent-state/QUALITY_GATES.md +15 -0
  108. package/assets/agent-state/RISKS.md +8 -0
  109. package/assets/agent-state/SCOPE.md +20 -0
  110. package/assets/agent-state/SKILL_CATALOG.md +48 -0
  111. package/assets/agent-state/STATUS.md +8 -0
  112. package/assets/agent-state/STATUS_EVENTS.ndjson +1 -0
  113. package/assets/agent-state/TASK.md +18 -0
  114. package/assets/agent-state/TEAL_CONFIG.md +117 -0
  115. package/assets/agent-state/handoff-registry.json +5 -0
  116. package/assets/agent-state/index-fingerprints.json +7 -0
  117. package/assets/agent-state/index.json +32 -0
  118. package/assets/agent-state/run-ledger.json +5 -0
  119. package/assets/agent-state/runtime-executor-sessions.json +5 -0
  120. package/assets/agent-state/runtime-tool-specs.json +5 -0
  121. package/assets/agent-state/runtime-workspaces.json +5 -0
  122. package/assets/agent-state/todo-state.json +7 -0
  123. package/assets/agent-state/tracker-snapshot.json +7 -0
  124. package/assets/agent-state/vericify/ace-bridge.json +60 -0
  125. package/assets/agent-state/vericify/process-posts.json +5 -0
  126. package/assets/instructions/ACE.instructions.md +187 -0
  127. package/assets/instructions/ACE_Coder.instructions.md +146 -0
  128. package/assets/instructions/ACE_UI.instructions.md +178 -0
  129. package/assets/instructions/ACE_VOS.instructions.md +211 -0
  130. package/assets/scripts/ace-hook-dispatch.mjs +538 -0
  131. package/assets/scripts/bootstrap-workspace.sh +27 -0
  132. package/assets/scripts/copilot-hook-dispatch.mjs +3 -0
  133. package/assets/scripts/eval-harness.sh +68 -0
  134. package/assets/scripts/render-mcp-configs.sh +396 -0
  135. package/assets/tasks/README.md +48 -0
  136. package/assets/tasks/SWARM_HANDOFF.example.json +53 -0
  137. package/assets/tasks/SWARM_HANDOFF.example_ui_to_coders.json +55 -0
  138. package/assets/tasks/SWARM_HANDOFF.example_vos_to_ui.json +55 -0
  139. package/assets/tasks/SWARM_HANDOFF.template.json +52 -0
  140. package/assets/tasks/cli_work_split.md +22 -0
  141. package/assets/tasks/lessons.md +17 -0
  142. package/assets/tasks/role_tasks.md +206 -0
  143. package/assets/tasks/todo.md +23 -0
  144. package/dist/ace-autonomy.d.ts +137 -0
  145. package/dist/ace-autonomy.js +472 -0
  146. package/dist/ace-context.d.ts +29 -0
  147. package/dist/ace-context.js +240 -0
  148. package/dist/ace-internal-tools.d.ts +8 -0
  149. package/dist/ace-internal-tools.js +76 -0
  150. package/dist/ace-server-instructions.d.ts +12 -0
  151. package/dist/ace-server-instructions.js +324 -0
  152. package/dist/agent-runtime/role-adapters.d.ts +29 -0
  153. package/dist/agent-runtime/role-adapters.js +573 -0
  154. package/dist/astgrep-index.d.ts +24 -0
  155. package/dist/astgrep-index.js +476 -0
  156. package/dist/cli.d.ts +3 -0
  157. package/dist/cli.js +591 -0
  158. package/dist/git-ops.d.ts +53 -0
  159. package/dist/git-ops.js +238 -0
  160. package/dist/handoff-registry.d.ts +71 -0
  161. package/dist/handoff-registry.js +422 -0
  162. package/dist/helpers.d.ts +126 -0
  163. package/dist/helpers.js +1687 -0
  164. package/dist/index-store.d.ts +51 -0
  165. package/dist/index-store.js +328 -0
  166. package/dist/index.d.ts +3 -0
  167. package/dist/index.js +7 -0
  168. package/dist/internal-tool-runtime.d.ts +21 -0
  169. package/dist/internal-tool-runtime.js +136 -0
  170. package/dist/job-scheduler.d.ts +175 -0
  171. package/dist/job-scheduler.js +1217 -0
  172. package/dist/kanban.d.ts +27 -0
  173. package/dist/kanban.js +339 -0
  174. package/dist/local-model-runtime.d.ts +40 -0
  175. package/dist/local-model-runtime.js +174 -0
  176. package/dist/model-bridge.d.ts +54 -0
  177. package/dist/model-bridge.js +587 -0
  178. package/dist/orchestrator-supervisor.d.ts +100 -0
  179. package/dist/orchestrator-supervisor.js +399 -0
  180. package/dist/problem-triage.d.ts +23 -0
  181. package/dist/problem-triage.js +448 -0
  182. package/dist/prompts.d.ts +7 -0
  183. package/dist/prompts.js +628 -0
  184. package/dist/public-surface.d.ts +30 -0
  185. package/dist/public-surface.js +316 -0
  186. package/dist/resources.d.ts +7 -0
  187. package/dist/resources.js +545 -0
  188. package/dist/run-ledger.d.ts +36 -0
  189. package/dist/run-ledger.js +257 -0
  190. package/dist/runtime-command.d.ts +18 -0
  191. package/dist/runtime-command.js +76 -0
  192. package/dist/runtime-executor.d.ts +104 -0
  193. package/dist/runtime-executor.js +985 -0
  194. package/dist/runtime-profile.d.ts +116 -0
  195. package/dist/runtime-profile.js +532 -0
  196. package/dist/runtime-tool-specs.d.ts +68 -0
  197. package/dist/runtime-tool-specs.js +527 -0
  198. package/dist/safe-edit.d.ts +52 -0
  199. package/dist/safe-edit.js +255 -0
  200. package/dist/schemas.d.ts +44 -0
  201. package/dist/schemas.js +830 -0
  202. package/dist/semantic-cache.d.ts +147 -0
  203. package/dist/semantic-cache.js +552 -0
  204. package/dist/semantic-hash.d.ts +83 -0
  205. package/dist/semantic-hash.js +346 -0
  206. package/dist/server.d.ts +10 -0
  207. package/dist/server.js +46 -0
  208. package/dist/shared.d.ts +136 -0
  209. package/dist/shared.js +269 -0
  210. package/dist/skill-auditor.d.ts +26 -0
  211. package/dist/skill-auditor.js +184 -0
  212. package/dist/skill-catalog.d.ts +60 -0
  213. package/dist/skill-catalog.js +305 -0
  214. package/dist/status-events.d.ts +40 -0
  215. package/dist/status-events.js +269 -0
  216. package/dist/store/ace-packed-store.d.ts +69 -0
  217. package/dist/store/ace-packed-store.js +434 -0
  218. package/dist/store/bootstrap-store.d.ts +46 -0
  219. package/dist/store/bootstrap-store.js +242 -0
  220. package/dist/store/catalog-builder.d.ts +21 -0
  221. package/dist/store/catalog-builder.js +68 -0
  222. package/dist/store/importer.d.ts +19 -0
  223. package/dist/store/importer.js +157 -0
  224. package/dist/store/knowledge-bake.d.ts +59 -0
  225. package/dist/store/knowledge-bake.js +339 -0
  226. package/dist/store/materializers/hook-context-materializer.d.ts +25 -0
  227. package/dist/store/materializers/hook-context-materializer.js +100 -0
  228. package/dist/store/materializers/host-file-materializer.d.ts +37 -0
  229. package/dist/store/materializers/host-file-materializer.js +271 -0
  230. package/dist/store/materializers/todo-syncer.d.ts +30 -0
  231. package/dist/store/materializers/todo-syncer.js +140 -0
  232. package/dist/store/materializers/vericify-projector.d.ts +38 -0
  233. package/dist/store/materializers/vericify-projector.js +239 -0
  234. package/dist/store/repositories/discovery-repository.d.ts +24 -0
  235. package/dist/store/repositories/discovery-repository.js +58 -0
  236. package/dist/store/repositories/handoff-repository.d.ts +31 -0
  237. package/dist/store/repositories/handoff-repository.js +67 -0
  238. package/dist/store/repositories/ledger-repository.d.ts +26 -0
  239. package/dist/store/repositories/ledger-repository.js +49 -0
  240. package/dist/store/repositories/runtime-kv-repository.d.ts +16 -0
  241. package/dist/store/repositories/runtime-kv-repository.js +36 -0
  242. package/dist/store/repositories/scheduler-repository.d.ts +50 -0
  243. package/dist/store/repositories/scheduler-repository.js +123 -0
  244. package/dist/store/repositories/session-repository.d.ts +33 -0
  245. package/dist/store/repositories/session-repository.js +82 -0
  246. package/dist/store/repositories/todo-repository.d.ts +31 -0
  247. package/dist/store/repositories/todo-repository.js +77 -0
  248. package/dist/store/repositories/tracker-repository.d.ts +25 -0
  249. package/dist/store/repositories/tracker-repository.js +43 -0
  250. package/dist/store/repositories/vericify-repository.d.ts +32 -0
  251. package/dist/store/repositories/vericify-repository.js +58 -0
  252. package/dist/store/skills-install.d.ts +28 -0
  253. package/dist/store/skills-install.js +86 -0
  254. package/dist/store/state-reader.d.ts +49 -0
  255. package/dist/store/state-reader.js +111 -0
  256. package/dist/store/store-artifacts.d.ts +12 -0
  257. package/dist/store/store-artifacts.js +138 -0
  258. package/dist/store/store-snapshot.d.ts +19 -0
  259. package/dist/store/store-snapshot.js +140 -0
  260. package/dist/store/topology-bake.d.ts +15 -0
  261. package/dist/store/topology-bake.js +215 -0
  262. package/dist/store/types.d.ts +155 -0
  263. package/dist/store/types.js +35 -0
  264. package/dist/store/workspace-snapshot.d.ts +26 -0
  265. package/dist/store/workspace-snapshot.js +107 -0
  266. package/dist/store/write-queue.d.ts +7 -0
  267. package/dist/store/write-queue.js +26 -0
  268. package/dist/todo-state.d.ts +41 -0
  269. package/dist/todo-state.js +399 -0
  270. package/dist/tools-agent.d.ts +7 -0
  271. package/dist/tools-agent.js +1542 -0
  272. package/dist/tools-discovery.d.ts +6 -0
  273. package/dist/tools-discovery.js +178 -0
  274. package/dist/tools-drift.d.ts +13 -0
  275. package/dist/tools-drift.js +357 -0
  276. package/dist/tools-files.d.ts +6 -0
  277. package/dist/tools-files.js +679 -0
  278. package/dist/tools-framework.d.ts +7 -0
  279. package/dist/tools-framework.js +1414 -0
  280. package/dist/tools-git.d.ts +6 -0
  281. package/dist/tools-git.js +183 -0
  282. package/dist/tools-handoff.d.ts +32 -0
  283. package/dist/tools-handoff.js +489 -0
  284. package/dist/tools-lifecycle.d.ts +6 -0
  285. package/dist/tools-lifecycle.js +205 -0
  286. package/dist/tools-memory.d.ts +6 -0
  287. package/dist/tools-memory.js +260 -0
  288. package/dist/tools-scheduler.d.ts +6 -0
  289. package/dist/tools-scheduler.js +228 -0
  290. package/dist/tools-skills.d.ts +3 -0
  291. package/dist/tools-skills.js +104 -0
  292. package/dist/tools-todo.d.ts +6 -0
  293. package/dist/tools-todo.js +154 -0
  294. package/dist/tools.d.ts +9 -0
  295. package/dist/tools.js +33 -0
  296. package/dist/tracker-adapters.d.ts +74 -0
  297. package/dist/tracker-adapters.js +776 -0
  298. package/dist/tracker-sync.d.ts +10 -0
  299. package/dist/tracker-sync.js +84 -0
  300. package/dist/tui/agent-runner.d.ts +137 -0
  301. package/dist/tui/agent-runner.js +466 -0
  302. package/dist/tui/agent-worker.d.ts +10 -0
  303. package/dist/tui/agent-worker.js +347 -0
  304. package/dist/tui/chat.d.ts +84 -0
  305. package/dist/tui/chat.js +368 -0
  306. package/dist/tui/commands.d.ts +57 -0
  307. package/dist/tui/commands.js +432 -0
  308. package/dist/tui/dashboard.d.ts +24 -0
  309. package/dist/tui/dashboard.js +110 -0
  310. package/dist/tui/index.d.ts +114 -0
  311. package/dist/tui/index.js +1059 -0
  312. package/dist/tui/input.d.ts +49 -0
  313. package/dist/tui/input.js +336 -0
  314. package/dist/tui/layout.d.ts +116 -0
  315. package/dist/tui/layout.js +367 -0
  316. package/dist/tui/ollama.d.ts +116 -0
  317. package/dist/tui/ollama.js +192 -0
  318. package/dist/tui/openai-compatible.d.ts +63 -0
  319. package/dist/tui/openai-compatible.js +370 -0
  320. package/dist/tui/provider-discovery.d.ts +59 -0
  321. package/dist/tui/provider-discovery.js +530 -0
  322. package/dist/tui/renderer.d.ts +166 -0
  323. package/dist/tui/renderer.js +304 -0
  324. package/dist/tui/tabs.d.ts +70 -0
  325. package/dist/tui/tabs.js +208 -0
  326. package/dist/tui/telemetry.d.ts +56 -0
  327. package/dist/tui/telemetry.js +106 -0
  328. package/dist/vericify-bridge.d.ts +146 -0
  329. package/dist/vericify-bridge.js +571 -0
  330. package/dist/vericify-context.d.ts +10 -0
  331. package/dist/vericify-context.js +72 -0
  332. package/dist/workspace-manager.d.ts +107 -0
  333. package/dist/workspace-manager.js +636 -0
  334. package/package.json +83 -0
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Job scheduler tool registrations.
3
+ */
4
+ import { z } from "zod";
5
+ import { acknowledgeJob, completeJob, dispatchJobNow, dispatchJobs, enqueueJob, getJobLockTablePath, getJobQueuePath, getSchedulerLeasePath, readJobQueue, readJobLockTable, readSchedulerLease, } from "./job-scheduler.js";
6
+ // Event emission handled in core job-scheduler.ts — no wrapper duplication.
7
+ const PRIORITY_BAND_ENUM = z.enum(["P0", "P1", "P2", "P3"]);
8
+ const JOB_STATUS_ENUM = z.enum([
9
+ "pending",
10
+ "accepted",
11
+ "blocked",
12
+ "ready",
13
+ "running",
14
+ "done",
15
+ "failed",
16
+ "failed_terminal",
17
+ "canceled",
18
+ "unknown_recovery",
19
+ ]);
20
+ const DEPENDENCY_KIND_ENUM = z.enum(["gate", "handoff", "todo", "time"]);
21
+ function asJsonBlock(value) {
22
+ return `\`\`\`json\n${JSON.stringify(value, null, 2)}\n\`\`\``;
23
+ }
24
+ export function registerSchedulerTools(server) {
25
+ server.tool("enqueue_job", "Add a handoff job to the scheduler queue with priority/dependency/resource metadata", {
26
+ kind: z.string().describe("Job kind/type identifier"),
27
+ payload: z
28
+ .record(z.string(), z.unknown())
29
+ .optional()
30
+ .describe("Arbitrary JSON payload for the worker"),
31
+ priority: PRIORITY_BAND_ENUM.optional().describe("Priority band P0..P3"),
32
+ dependencies: z
33
+ .array(z.object({
34
+ kind: DEPENDENCY_KIND_ENUM,
35
+ ref: z.string(),
36
+ expected: z.string().optional(),
37
+ }))
38
+ .optional()
39
+ .describe("Optional dependency gates/todos/handoffs/time markers"),
40
+ resource_requirements: z
41
+ .array(z.string())
42
+ .optional()
43
+ .describe("Shared resources that must remain collision-free while a job is running"),
44
+ run_after: z.string().optional().describe("ISO timestamp to defer execution until"),
45
+ max_attempts: z.number().int().min(1).max(25).optional(),
46
+ backoff_ms: z.number().int().min(1000).max(86_400_000).optional(),
47
+ job_id: z.string().optional().describe("Optional caller-provided job id"),
48
+ }, async (input) => {
49
+ const result = await enqueueJob(input);
50
+ return {
51
+ content: [
52
+ {
53
+ type: "text",
54
+ text: result.ok
55
+ ? [
56
+ "✅ Job enqueued",
57
+ `Queue: ${result.path}`,
58
+ `Job: ${result.ack?.job_id ?? "n/a"}`,
59
+ asJsonBlock(result),
60
+ ].join("\n")
61
+ : [
62
+ "❌ enqueue_job rejected",
63
+ `Queue: ${result.path}`,
64
+ result.nack
65
+ ? `${result.nack.reason_code}: ${result.nack.reason}`
66
+ : "Unknown enqueue error",
67
+ asJsonBlock(result),
68
+ ].join("\n"),
69
+ },
70
+ ],
71
+ };
72
+ });
73
+ server.tool("list_jobs", "List scheduler jobs and lock table snapshot", {
74
+ status: JOB_STATUS_ENUM.optional().describe("Optional status filter"),
75
+ include_locks: z
76
+ .boolean()
77
+ .optional()
78
+ .describe("Include lock table payload (default true)"),
79
+ limit: z.number().int().min(1).max(1000).optional().describe("Max jobs returned"),
80
+ }, async ({ status, include_locks, limit }) => {
81
+ const queue = readJobQueue();
82
+ const filtered = queue.jobs.filter((job) => (status ? job.status === status : true));
83
+ const clipped = typeof limit === "number" ? filtered.slice(0, limit) : filtered;
84
+ const lockTable = readJobLockTable();
85
+ const lease = readSchedulerLease();
86
+ const payload = {
87
+ queue_path: getJobQueuePath(),
88
+ lock_path: getJobLockTablePath(),
89
+ lease_path: getSchedulerLeasePath(),
90
+ total_jobs: queue.jobs.length,
91
+ returned_jobs: clipped.length,
92
+ jobs: clipped,
93
+ lease,
94
+ };
95
+ if (include_locks !== false) {
96
+ payload.locks = lockTable;
97
+ }
98
+ return {
99
+ content: [
100
+ {
101
+ type: "text",
102
+ text: ["# Scheduler Queue", "", asJsonBlock(payload)].join("\n"),
103
+ },
104
+ ],
105
+ };
106
+ });
107
+ server.tool("ack_job", "Acknowledge or update scheduler job lifecycle (accept/reject/cancel/resume)", {
108
+ job_id: z.string(),
109
+ action: z.enum(["accept", "reject", "cancel", "resume"]),
110
+ reason: z.string().optional(),
111
+ }, async ({ job_id, action, reason }) => {
112
+ const result = await acknowledgeJob({ job_id, action, reason });
113
+ return {
114
+ content: [
115
+ {
116
+ type: "text",
117
+ text: result.ok
118
+ ? [
119
+ "✅ Job acknowledgement applied",
120
+ `Queue: ${result.path}`,
121
+ `Transition: ${result.from ?? "unknown"} -> ${result.to ?? "unknown"}`,
122
+ asJsonBlock(result),
123
+ ].join("\n")
124
+ : [
125
+ "❌ ack_job failed",
126
+ result.error ?? "Unknown ack error",
127
+ asJsonBlock(result),
128
+ ].join("\n"),
129
+ },
130
+ ],
131
+ };
132
+ });
133
+ server.tool("dispatch_jobs", "Dispatch runnable jobs immediately with priority-aware collision-free resource locks", {
134
+ owner: z.string().optional().describe("Lease owner identity"),
135
+ lease_ttl_seconds: z.number().int().min(5).max(3600).optional(),
136
+ now_iso: z.string().optional().describe("Optional deterministic clock override"),
137
+ }, async (input) => {
138
+ const result = await dispatchJobs(input);
139
+ return {
140
+ content: [
141
+ {
142
+ type: "text",
143
+ text: [
144
+ result.ok ? "✅ Scheduler dispatch completed" : "⚠️ Scheduler lease not acquired",
145
+ `Owner: ${result.owner}`,
146
+ `Lease acquired: ${result.lease_acquired}`,
147
+ `Queue: ${result.queue_path}`,
148
+ `Locks: ${result.lock_path}`,
149
+ asJsonBlock(result),
150
+ ].join("\n"),
151
+ },
152
+ ],
153
+ };
154
+ });
155
+ server.tool("dispatch_job_now", "Immediately start a single ready job if its dependencies are clear and resources are free", {
156
+ job_id: z.string(),
157
+ owner: z.string().optional(),
158
+ now_iso: z.string().optional(),
159
+ }, async ({ job_id, owner, now_iso }) => {
160
+ const result = await dispatchJobNow({ job_id, owner, now_iso });
161
+ return {
162
+ content: [
163
+ {
164
+ type: "text",
165
+ text: result.ok
166
+ ? ["✅ Job started", asJsonBlock(result)].join("\n")
167
+ : ["❌ dispatch_job_now failed", result.error ?? "Unknown error", asJsonBlock(result)].join("\n"),
168
+ },
169
+ ],
170
+ };
171
+ });
172
+ server.tool("complete_job", "Finalize a running job, recording success/failure and retry scheduling", {
173
+ job_id: z.string(),
174
+ owner: z.string().optional().describe("Lease owner identity (defaults to capability-ops)"),
175
+ success: z.boolean().optional(),
176
+ evidence_ref: z.string().optional(),
177
+ error: z.string().optional(),
178
+ now_iso: z.string().optional(),
179
+ }, async ({ job_id, owner, success, evidence_ref, error, now_iso }) => {
180
+ const result = await completeJob({
181
+ job_id,
182
+ owner,
183
+ success,
184
+ evidence_ref,
185
+ error,
186
+ now_iso,
187
+ });
188
+ return {
189
+ content: [
190
+ {
191
+ type: "text",
192
+ text: result.ok
193
+ ? ["✅ Job completion recorded", asJsonBlock(result)].join("\n")
194
+ : ["❌ complete_job failed", result.error ?? "Unknown error", asJsonBlock(result)].join("\n"),
195
+ },
196
+ ],
197
+ };
198
+ });
199
+ server.tool("get_lock_table", "Read the scheduler lock table", {}, async () => ({
200
+ content: [
201
+ {
202
+ type: "text",
203
+ text: [
204
+ "# Lock Table",
205
+ "",
206
+ `Path: ${getJobLockTablePath()}`,
207
+ "",
208
+ asJsonBlock(readJobLockTable()),
209
+ ].join("\n"),
210
+ },
211
+ ],
212
+ }));
213
+ server.tool("get_scheduler_lease", "Read the scheduler lease owner and expiry", {}, async () => ({
214
+ content: [
215
+ {
216
+ type: "text",
217
+ text: [
218
+ "# Scheduler Lease",
219
+ "",
220
+ `Path: ${getSchedulerLeasePath()}`,
221
+ "",
222
+ asJsonBlock(readSchedulerLease() ?? null),
223
+ ].join("\n"),
224
+ },
225
+ ],
226
+ }));
227
+ }
228
+ //# sourceMappingURL=tools-scheduler.js.map
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerSkillTools(server: McpServer): void;
3
+ //# sourceMappingURL=tools-skills.d.ts.map
@@ -0,0 +1,104 @@
1
+ import { z } from "zod";
2
+ import { auditSkillCatalog, writeSkillAuditReport, } from "./skill-auditor.js";
3
+ import { triageProblemRequest, writeProblemTriageReport, } from "./problem-triage.js";
4
+ import { listSkillCatalogEntries, summarizeSkillCatalog, } from "./skill-catalog.js";
5
+ export function registerSkillTools(server) {
6
+ server.tool("skill_catalog_summary", "Summarize discoverable ACE skills and current readiness gaps", {}, async () => {
7
+ const entries = listSkillCatalogEntries();
8
+ const summary = summarizeSkillCatalog(entries);
9
+ const lines = [
10
+ "# Skill Catalog Summary",
11
+ "",
12
+ `- total skills: ${summary.total_skills}`,
13
+ `- portable-contract-ready skills: ${summary.portable_contract_ready_skills}`,
14
+ `- skills with frontmatter: ${summary.with_frontmatter}`,
15
+ `- trigger-aware descriptions: ${summary.trigger_aware_descriptions}`,
16
+ `- skills with validation surface: ${summary.with_validation_surface}`,
17
+ `- skills with portability notes: ${summary.with_portability_notes}`,
18
+ `- skills with optional adapters: ${summary.with_adapter_overlays}`,
19
+ `- adapter clients observed: ${summary.adapter_clients.length > 0 ? summary.adapter_clients.join(", ") : "none"}`,
20
+ `- legacy openai overlays observed: ${summary.with_openai_yaml}`,
21
+ `- long skills (>500 lines): ${summary.long_skills.length > 0
22
+ ? summary.long_skills.map((entry) => `${entry.name} (${entry.line_count})`).join(", ")
23
+ : "none"}`,
24
+ "",
25
+ "## Skills",
26
+ ...entries.map((entry) => `- ${entry.name} (${entry.source}) — adapters=${entry.adapter_overlay_clients.length > 0
27
+ ? entry.adapter_overlay_clients.join("/")
28
+ : "none"}, sections=${[
29
+ entry.has_inputs_section ? "inputs" : "",
30
+ entry.has_workflow_section ? "workflow" : "",
31
+ entry.has_outputs_section ? "outputs" : "",
32
+ entry.has_failure_policy ? "failure" : "",
33
+ ]
34
+ .filter(Boolean)
35
+ .join("/") || "missing core sections"}, validation=${entry.has_validation_surface ? "yes" : "no"}, portability=${entry.has_portability_notes ? "yes" : "no"}`),
36
+ ];
37
+ return {
38
+ content: [{ type: "text", text: lines.join("\n") }],
39
+ };
40
+ });
41
+ server.tool("skill_audit", "Audit discoverable ACE skills against the portable skill contract and write SKILL_AUDIT_REPORT.md", {
42
+ write_artifact: z
43
+ .boolean()
44
+ .optional()
45
+ .describe("Write agent-state/SKILL_AUDIT_REPORT.md (default: true)"),
46
+ artifact_path: z
47
+ .string()
48
+ .optional()
49
+ .describe("Optional workspace-relative path for the audit report"),
50
+ }, async ({ write_artifact, artifact_path }) => {
51
+ const result = auditSkillCatalog();
52
+ const writtenPath = write_artifact === false
53
+ ? undefined
54
+ : writeSkillAuditReport(result, artifact_path || "agent-state/SKILL_AUDIT_REPORT.md");
55
+ const failCount = result.entries.filter((entry) => entry.status === "fail").length;
56
+ const warnCount = result.entries.filter((entry) => entry.status === "warn").length;
57
+ return {
58
+ content: [
59
+ {
60
+ type: "text",
61
+ text: [
62
+ `Portable-contract-ready skills: ${result.summary.portable_contract_ready_skills}/${result.summary.total_skills}`,
63
+ `Fail/Warn: ${failCount}/${warnCount}`,
64
+ ...(result.rollout_backlog.slice(0, 5).map((line) => `- ${line}`)),
65
+ ...(writtenPath ? [`- Artifact written: ${writtenPath}`] : []),
66
+ ].join("\n"),
67
+ },
68
+ ],
69
+ };
70
+ });
71
+ server.tool("problem_triage", "Classify whether a request fits an existing skill, needs a skill patch, warrants a new skill, or should stay one-off", {
72
+ request: z.string().describe("The request or workflow to triage"),
73
+ write_artifact: z
74
+ .boolean()
75
+ .optional()
76
+ .describe("Write agent-state/PROBLEM_TRIAGE.md (default: true)"),
77
+ artifact_path: z
78
+ .string()
79
+ .optional()
80
+ .describe("Optional workspace-relative path for the triage report"),
81
+ }, async ({ request, write_artifact, artifact_path }) => {
82
+ const result = triageProblemRequest(request);
83
+ const writtenPath = write_artifact === false
84
+ ? undefined
85
+ : writeProblemTriageReport(result, artifact_path || "agent-state/PROBLEM_TRIAGE.md");
86
+ const reportLines = [
87
+ ...result.rationale,
88
+ ...(writtenPath ? [`Artifact written: ${writtenPath}`] : []),
89
+ ];
90
+ return {
91
+ content: [
92
+ {
93
+ type: "text",
94
+ text: [
95
+ `Route: ${result.route}`,
96
+ `Confidence: ${result.confidence.toFixed(2)}`,
97
+ ...reportLines.map((line) => `- ${line}`),
98
+ ].join("\n"),
99
+ },
100
+ ],
101
+ };
102
+ });
103
+ }
104
+ //# sourceMappingURL=tools-skills.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * TODO, task management, and run-ledger tool registrations.
3
+ */
4
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ export declare function registerTodoTools(server: McpServer): void;
6
+ //# sourceMappingURL=tools-todo.d.ts.map
@@ -0,0 +1,154 @@
1
+ /**
2
+ * TODO, task management, and run-ledger tool registrations.
3
+ */
4
+ import { z } from "zod";
5
+ import { ACE_TASKS_ROOT_REL, readTaskArtifact, resolveWritableTaskPath, safeWrite, } from "./helpers.js";
6
+ import { TODO_STATUS_ENUM } from "./shared.js";
7
+ import { getTodoStatePath, readTodoState, syncTodoStateSafe, transitionTodoNodeSafe, } from "./todo-state.js";
8
+ import { appendRunLedgerEntrySafe, getRunLedgerPath, readRunLedger, } from "./run-ledger.js";
9
+ import { refreshKanbanArtifacts } from "./kanban.js";
10
+ export function registerTodoTools(server) {
11
+ server.tool("get_todo", "Read the current swarm TODO execution board", {}, async () => ({
12
+ content: [{ type: "text", text: readTaskArtifact("todo") }],
13
+ }));
14
+ server.tool("get_todo_state", "Read synced TODO node state with dependencies and explicit statuses", {}, async () => ({
15
+ content: [
16
+ {
17
+ type: "text",
18
+ text: `# TODO State\n\nPath: ${getTodoStatePath()}\n\n\`\`\`json\n${JSON.stringify(readTodoState(), null, 2)}\n\`\`\``,
19
+ },
20
+ ],
21
+ }));
22
+ server.tool("update_todo", "Replace TODO board content or transition a TODO node status with gate validation", {
23
+ new_content: z
24
+ .string()
25
+ .optional()
26
+ .describe("Full updated TODO markdown content (full replace mode)"),
27
+ node_id: z
28
+ .string()
29
+ .optional()
30
+ .describe("Todo node id to transition (transition mode)"),
31
+ status: TODO_STATUS_ENUM.optional().describe("Target status for transition mode"),
32
+ note: z.string().optional().describe("Optional transition context note"),
33
+ }, async ({ new_content, node_id, status, note }) => {
34
+ if (typeof new_content === "string") {
35
+ const path = safeWrite(resolveWritableTaskPath("todo"), new_content);
36
+ const synced = await syncTodoStateSafe(new_content);
37
+ const runLedger = await appendRunLedgerEntrySafe({
38
+ tool: "update_todo",
39
+ category: "major_update",
40
+ message: "Replaced TODO markdown board content",
41
+ artifacts: [`${ACE_TASKS_ROOT_REL}/todo.md`, "agent-state/todo-state.json"],
42
+ metadata: {
43
+ mode: "replace",
44
+ node_count: synced.state.order.length,
45
+ },
46
+ });
47
+ const kanban = refreshKanbanArtifacts("tool:update_todo");
48
+ const counts = kanban.counts;
49
+ return {
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: [
54
+ `✅ TODO updated: ${path}`,
55
+ `TODO state synced: ${synced.path}`,
56
+ `Run ledger: ${runLedger.path} (${runLedger.entry.id})`,
57
+ `Kanban updated: ${kanban.html_path}`,
58
+ `Kanban counts: backlog=${counts.backlog}, blocked=${counts.blocked}, in_progress=${counts.in_progress}, gated=${counts.gated}, done=${counts.done}`,
59
+ ].join("\n"),
60
+ },
61
+ ],
62
+ };
63
+ }
64
+ if (node_id && status) {
65
+ const transition = await transitionTodoNodeSafe(node_id, status);
66
+ if (!transition.ok) {
67
+ const detailLines = [
68
+ transition.error
69
+ ? `❌ ${transition.error}`
70
+ : "❌ TODO transition failed.",
71
+ transition.node_id ? `Node: ${transition.node_id}` : "",
72
+ transition.from && transition.to
73
+ ? `Attempted: ${transition.from} -> ${transition.to}`
74
+ : "",
75
+ transition.allowed?.length
76
+ ? `Allowed next states: ${transition.allowed.join(", ")}`
77
+ : "",
78
+ transition.unresolved_dependencies?.length
79
+ ? `Unresolved dependencies: ${transition.unresolved_dependencies.join(", ")}`
80
+ : "",
81
+ ].filter(Boolean);
82
+ return {
83
+ content: [{ type: "text", text: detailLines.join("\n") }],
84
+ };
85
+ }
86
+ const previous = transition.from ?? status;
87
+ const category = previous === "done" && status !== "done"
88
+ ? "regression"
89
+ : "major_update";
90
+ const runLedger = await appendRunLedgerEntrySafe({
91
+ tool: "update_todo",
92
+ category,
93
+ message: `Transitioned TODO node ${node_id}: ${previous} -> ${status}`,
94
+ artifacts: [`${ACE_TASKS_ROOT_REL}/todo.md`, "agent-state/todo-state.json"],
95
+ metadata: {
96
+ mode: "transition",
97
+ node_id,
98
+ from: previous,
99
+ to: status,
100
+ note: note ?? "",
101
+ },
102
+ });
103
+ const kanban = refreshKanbanArtifacts("tool:update_todo");
104
+ const counts = kanban.counts;
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: [
110
+ `✅ TODO transition applied: ${node_id}`,
111
+ `Transition: ${previous} -> ${status}`,
112
+ `TODO state: ${transition.path}`,
113
+ `TODO markdown: ${transition.todo_path}`,
114
+ `Run ledger: ${runLedger.path} (${runLedger.entry.id})`,
115
+ `Kanban updated: ${kanban.html_path}`,
116
+ `Kanban counts: backlog=${counts.backlog}, blocked=${counts.blocked}, in_progress=${counts.in_progress}, gated=${counts.gated}, done=${counts.done}`,
117
+ ].join("\n"),
118
+ },
119
+ ],
120
+ };
121
+ }
122
+ return {
123
+ content: [
124
+ {
125
+ type: "text",
126
+ text: "❌ Provide either `new_content` (full replace) or `node_id` + `status` (transition mode).",
127
+ },
128
+ ],
129
+ };
130
+ });
131
+ server.tool("get_run_ledger", "Read run-ledger milestone/regression history", {
132
+ limit: z
133
+ .number()
134
+ .int()
135
+ .min(1)
136
+ .max(500)
137
+ .optional()
138
+ .describe("Optional number of most recent entries to return"),
139
+ }, async ({ limit }) => {
140
+ const ledger = readRunLedger();
141
+ const entries = typeof limit === "number"
142
+ ? ledger.entries.slice(Math.max(ledger.entries.length - limit, 0))
143
+ : ledger.entries;
144
+ return {
145
+ content: [
146
+ {
147
+ type: "text",
148
+ text: `# Run Ledger\n\nPath: ${getRunLedgerPath()}\n\n\`\`\`json\n${JSON.stringify({ ...ledger, entries }, null, 2)}\n\`\`\``,
149
+ },
150
+ ],
151
+ };
152
+ });
153
+ }
154
+ //# sourceMappingURL=tools-todo.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * MCP Tools - thin hub that delegates to domain-specific tool modules.
3
+ *
4
+ * Each module exports a registerXxxTools(server) function.
5
+ * This keeps the registration entry-point small and each domain testable.
6
+ */
7
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
+ export declare function registerTools(server: McpServer): void;
9
+ //# sourceMappingURL=tools.d.ts.map
package/dist/tools.js ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MCP Tools - thin hub that delegates to domain-specific tool modules.
3
+ *
4
+ * Each module exports a registerXxxTools(server) function.
5
+ * This keeps the registration entry-point small and each domain testable.
6
+ */
7
+ import { registerAgentTools } from "./tools-agent.js";
8
+ import { registerHandoffTools } from "./tools-handoff.js";
9
+ import { registerTodoTools } from "./tools-todo.js";
10
+ import { registerDiscoveryTools } from "./tools-discovery.js";
11
+ import { registerLifecycleTools } from "./tools-lifecycle.js";
12
+ import { registerFileTools } from "./tools-files.js";
13
+ import { registerFrameworkTools } from "./tools-framework.js";
14
+ import { registerGitTools } from "./tools-git.js";
15
+ import { registerMemoryTools } from "./tools-memory.js";
16
+ import { registerDriftTools } from "./tools-drift.js";
17
+ import { registerSchedulerTools } from "./tools-scheduler.js";
18
+ import { registerSkillTools } from "./tools-skills.js";
19
+ export function registerTools(server) {
20
+ registerAgentTools(server);
21
+ registerHandoffTools(server);
22
+ registerTodoTools(server);
23
+ registerDiscoveryTools(server);
24
+ registerLifecycleTools(server);
25
+ registerFileTools(server);
26
+ registerFrameworkTools(server);
27
+ registerGitTools(server);
28
+ registerMemoryTools(server);
29
+ registerDriftTools(server);
30
+ registerSchedulerTools(server);
31
+ registerSkillTools(server);
32
+ }
33
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1,74 @@
1
+ import { type ArtifactSource } from "./helpers.js";
2
+ import { type ValidationResult } from "./schemas.js";
3
+ export declare const TRACKER_SNAPSHOT_REL_PATH = "agent-state/tracker-snapshot.json";
4
+ export declare const TRACKER_SNAPSHOT_SCHEMA_REL_PATH = "agent-state/MODULES/schemas/TRACKER_SNAPSHOT.schema.json";
5
+ export declare const TRACKER_SNAPSHOT_SCHEMA_NAME = "tracker-snapshot@1.0.0";
6
+ export type TrackerAdapterKind = "none" | "memory" | "external";
7
+ export interface TrackerItem {
8
+ item_id: string;
9
+ external_id?: string;
10
+ title: string;
11
+ body?: string;
12
+ state: string;
13
+ labels: string[];
14
+ assignee?: string;
15
+ url?: string;
16
+ updated_at: string;
17
+ metadata: Record<string, unknown>;
18
+ }
19
+ export interface TrackerComment {
20
+ comment_id: string;
21
+ item_id: string;
22
+ body: string;
23
+ author: string;
24
+ created_at: string;
25
+ metadata: Record<string, unknown>;
26
+ }
27
+ export interface TrackerSnapshot {
28
+ version: 1;
29
+ adapter_kind: TrackerAdapterKind;
30
+ updated_at: string;
31
+ items: TrackerItem[];
32
+ comments: TrackerComment[];
33
+ }
34
+ export interface TrackerHealthCheckResult {
35
+ ok: boolean;
36
+ detail?: string;
37
+ }
38
+ export interface TrackerMutationResult {
39
+ ok: boolean;
40
+ comment_id?: string;
41
+ error?: string;
42
+ }
43
+ export interface TrackerSnapshotResult {
44
+ ok: boolean;
45
+ schema: typeof TRACKER_SNAPSHOT_SCHEMA_NAME;
46
+ path: string;
47
+ source: ArtifactSource;
48
+ snapshot?: TrackerSnapshot;
49
+ errors?: string[];
50
+ }
51
+ export interface IssueTrackerAdapter {
52
+ kind: string;
53
+ healthCheck?(): Promise<TrackerHealthCheckResult>;
54
+ listActiveItems?(filter?: Record<string, unknown>): Promise<TrackerItem[]>;
55
+ getItemsById?(ids: string[]): Promise<TrackerItem[]>;
56
+ createComment?(itemId: string, body: string): Promise<{
57
+ ok: boolean;
58
+ comment_id?: string;
59
+ error?: string;
60
+ }>;
61
+ updateItemState?(itemId: string, state: string): Promise<{
62
+ ok: boolean;
63
+ error?: string;
64
+ }>;
65
+ }
66
+ export declare function validateTrackerSnapshotContent(raw: string): ValidationResult;
67
+ export declare function loadTrackerSnapshot(explicitPath?: string): TrackerSnapshotResult;
68
+ export declare function readTrackerSnapshot(): TrackerSnapshot;
69
+ export declare function getTrackerSnapshotPath(): string;
70
+ export declare function writeTrackerSnapshot(snapshot: TrackerSnapshot): string;
71
+ export declare function listTrackerAdapterKinds(): string[];
72
+ export declare function getTrackerAdapter(kind?: string): IssueTrackerAdapter;
73
+ export declare function buildDefaultTrackerSnapshot(kind?: TrackerAdapterKind): TrackerSnapshot;
74
+ //# sourceMappingURL=tracker-adapters.d.ts.map