@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.
- package/CHANGELOG.md +109 -0
- package/LICENSE +186 -0
- package/README.md +229 -0
- package/assets/.agents/ACE/ACE-Init/AGENTS.md +210 -0
- package/assets/.agents/ACE/ACE-Init/instructions.md +118 -0
- package/assets/.agents/ACE/ACE_coders/AGENTS.md +154 -0
- package/assets/.agents/ACE/ACE_coders/INSTRUCTIONS.md +216 -0
- package/assets/.agents/ACE/AGENT_REGISTRY.md +70 -0
- package/assets/.agents/ACE/AGENT_REGISTRY_7.md +9 -0
- package/assets/.agents/ACE/DIRECTIVE_KERNEL.md +234 -0
- package/assets/.agents/ACE/UI/AGENTS.md +115 -0
- package/assets/.agents/ACE/UI/instructions.md +178 -0
- package/assets/.agents/ACE/VOS/ACE_VOS_MISSING_INFO_MATRIX.md +42 -0
- package/assets/.agents/ACE/VOS/AGENTS.md +72 -0
- package/assets/.agents/ACE/VOS/instructions.md +211 -0
- package/assets/.agents/ACE/agent-astgrep/AGENTS.md +123 -0
- package/assets/.agents/ACE/agent-astgrep/instructions.md +91 -0
- package/assets/.agents/ACE/agent-builder/AGENTS.md +172 -0
- package/assets/.agents/ACE/agent-builder/instructions.md +137 -0
- package/assets/.agents/ACE/agent-docs/AGENTS.md +159 -0
- package/assets/.agents/ACE/agent-docs/instructions.md +133 -0
- package/assets/.agents/ACE/agent-eval/AGENTS.md +46 -0
- package/assets/.agents/ACE/agent-eval/instructions.md +56 -0
- package/assets/.agents/ACE/agent-memory/AGENTS.md +49 -0
- package/assets/.agents/ACE/agent-memory/instructions.md +50 -0
- package/assets/.agents/ACE/agent-observability/AGENTS.md +46 -0
- package/assets/.agents/ACE/agent-observability/instructions.md +50 -0
- package/assets/.agents/ACE/agent-ops/AGENTS.md +201 -0
- package/assets/.agents/ACE/agent-ops/instructions.md +136 -0
- package/assets/.agents/ACE/agent-qa/AGENTS.md +189 -0
- package/assets/.agents/ACE/agent-qa/instructions.md +121 -0
- package/assets/.agents/ACE/agent-release/AGENTS.md +48 -0
- package/assets/.agents/ACE/agent-release/instructions.md +49 -0
- package/assets/.agents/ACE/agent-research/AGENTS.md +160 -0
- package/assets/.agents/ACE/agent-research/instructions.md +118 -0
- package/assets/.agents/ACE/agent-security/AGENTS.md +48 -0
- package/assets/.agents/ACE/agent-security/instructions.md +50 -0
- package/assets/.agents/ACE/agent-skeptic/AGENTS.md +178 -0
- package/assets/.agents/ACE/agent-skeptic/instructions.md +196 -0
- package/assets/.agents/ACE/agent-spec/AGENTS.md +169 -0
- package/assets/.agents/ACE/agent-spec/instructions.md +116 -0
- package/assets/.agents/ACE/orchestrator/AGENTS.md +365 -0
- package/assets/.agents/ACE/orchestrator/instructions.md +231 -0
- package/assets/.agents/skills/ace-orchestrator/SKILL.md +63 -0
- package/assets/.agents/skills/ace-orchestrator/references/engineering-bootstrap-playbook.md +360 -0
- package/assets/.agents/skills/astgrep-index/SKILL.md +58 -0
- package/assets/.agents/skills/codemunch/SKILL.md +65 -0
- package/assets/.agents/skills/codemunch/references/ast-driven-protocol.md +543 -0
- package/assets/.agents/skills/codesnipe/SKILL.md +64 -0
- package/assets/.agents/skills/codesnipe/references/dual-codebase-playbook.md +671 -0
- package/assets/.agents/skills/eval-harness/SKILL.md +203 -0
- package/assets/.agents/skills/handoff-lint/SKILL.md +164 -0
- package/assets/.agents/skills/incident-commander/SKILL.md +174 -0
- package/assets/.agents/skills/landing-review-watcher/SKILL.md +68 -0
- package/assets/.agents/skills/memory-curator/SKILL.md +179 -0
- package/assets/.agents/skills/problem-triage/SKILL.md +57 -0
- package/assets/.agents/skills/problem-triage/agents/openai.yaml +3 -0
- package/assets/.agents/skills/release-sentry/SKILL.md +189 -0
- package/assets/.agents/skills/risk-quant/SKILL.md +190 -0
- package/assets/.agents/skills/schema-forge/SKILL.md +174 -0
- package/assets/.agents/skills/skill-auditor/SKILL.md +52 -0
- package/assets/.agents/skills/state-auditor/SKILL.md +182 -0
- package/assets/.github/hooks/ace-copilot.json +68 -0
- package/assets/agent-state/ACE_WORKFLOW.md +131 -0
- package/assets/agent-state/ARTIFACT_MANIFEST.json +5 -0
- package/assets/agent-state/AST_GREP_COMMANDS.md +121 -0
- package/assets/agent-state/AST_GREP_INDEX.json +13 -0
- package/assets/agent-state/AST_GREP_INDEX.md +15 -0
- package/assets/agent-state/DECISIONS.md +7 -0
- package/assets/agent-state/EVIDENCE_LOG.md +7 -0
- package/assets/agent-state/HANDOFF.json +24 -0
- package/assets/agent-state/INTERFACE_REGISTRY.md +75 -0
- package/assets/agent-state/MODULES/gates/gate-autonomy.json +7 -0
- package/assets/agent-state/MODULES/gates/gate-completeness.json +7 -0
- package/assets/agent-state/MODULES/gates/gate-correctness.json +7 -0
- package/assets/agent-state/MODULES/gates/gate-evaluation.json +7 -0
- package/assets/agent-state/MODULES/gates/gate-operability.json +7 -0
- package/assets/agent-state/MODULES/gates/gate-security.json +7 -0
- package/assets/agent-state/MODULES/gates/gate-typescript-public-surface.json +7 -0
- package/assets/agent-state/MODULES/registry.json +41 -0
- package/assets/agent-state/MODULES/roles/capability-astgrep.json +49 -0
- package/assets/agent-state/MODULES/roles/capability-build.json +39 -0
- package/assets/agent-state/MODULES/roles/capability-docs.json +38 -0
- package/assets/agent-state/MODULES/roles/capability-eval.json +20 -0
- package/assets/agent-state/MODULES/roles/capability-memory.json +20 -0
- package/assets/agent-state/MODULES/roles/capability-observability.json +20 -0
- package/assets/agent-state/MODULES/roles/capability-ops.json +45 -0
- package/assets/agent-state/MODULES/roles/capability-qa.json +40 -0
- package/assets/agent-state/MODULES/roles/capability-release.json +21 -0
- package/assets/agent-state/MODULES/roles/capability-research.json +44 -0
- package/assets/agent-state/MODULES/roles/capability-security.json +21 -0
- package/assets/agent-state/MODULES/roles/capability-skeptic.json +48 -0
- package/assets/agent-state/MODULES/roles/capability-spec.json +42 -0
- package/assets/agent-state/MODULES/schemas/ACE_RUNTIME_PROFILE.schema.json +289 -0
- package/assets/agent-state/MODULES/schemas/ARTIFACT_MANIFEST.schema.json +185 -0
- package/assets/agent-state/MODULES/schemas/HANDOFF.agent-state.schema.json +124 -0
- package/assets/agent-state/MODULES/schemas/HANDOFF.schema.json +55 -0
- package/assets/agent-state/MODULES/schemas/RUNTIME_EXECUTOR_SESSION_REGISTRY.schema.json +290 -0
- package/assets/agent-state/MODULES/schemas/RUNTIME_TOOL_SPEC_REGISTRY.schema.json +144 -0
- package/assets/agent-state/MODULES/schemas/STATUS_EVENT.schema.json +84 -0
- package/assets/agent-state/MODULES/schemas/SWARM_HANDOFF.schema.json +138 -0
- package/assets/agent-state/MODULES/schemas/TRACKER_SNAPSHOT.schema.json +134 -0
- package/assets/agent-state/MODULES/schemas/VERICIFY_BRIDGE_SNAPSHOT.schema.json +157 -0
- package/assets/agent-state/MODULES/schemas/VERICIFY_PROCESS_POST_LOG.schema.json +93 -0
- package/assets/agent-state/MODULES/schemas/WORKSPACE_SESSION_REGISTRY.schema.json +133 -0
- package/assets/agent-state/PROVENANCE_LOG.md +28 -0
- package/assets/agent-state/QUALITY_GATES.md +15 -0
- package/assets/agent-state/RISKS.md +8 -0
- package/assets/agent-state/SCOPE.md +20 -0
- package/assets/agent-state/SKILL_CATALOG.md +48 -0
- package/assets/agent-state/STATUS.md +8 -0
- package/assets/agent-state/STATUS_EVENTS.ndjson +1 -0
- package/assets/agent-state/TASK.md +18 -0
- package/assets/agent-state/TEAL_CONFIG.md +117 -0
- package/assets/agent-state/handoff-registry.json +5 -0
- package/assets/agent-state/index-fingerprints.json +7 -0
- package/assets/agent-state/index.json +32 -0
- package/assets/agent-state/run-ledger.json +5 -0
- package/assets/agent-state/runtime-executor-sessions.json +5 -0
- package/assets/agent-state/runtime-tool-specs.json +5 -0
- package/assets/agent-state/runtime-workspaces.json +5 -0
- package/assets/agent-state/todo-state.json +7 -0
- package/assets/agent-state/tracker-snapshot.json +7 -0
- package/assets/agent-state/vericify/ace-bridge.json +60 -0
- package/assets/agent-state/vericify/process-posts.json +5 -0
- package/assets/instructions/ACE.instructions.md +187 -0
- package/assets/instructions/ACE_Coder.instructions.md +146 -0
- package/assets/instructions/ACE_UI.instructions.md +178 -0
- package/assets/instructions/ACE_VOS.instructions.md +211 -0
- package/assets/scripts/ace-hook-dispatch.mjs +538 -0
- package/assets/scripts/bootstrap-workspace.sh +27 -0
- package/assets/scripts/copilot-hook-dispatch.mjs +3 -0
- package/assets/scripts/eval-harness.sh +68 -0
- package/assets/scripts/render-mcp-configs.sh +396 -0
- package/assets/tasks/README.md +48 -0
- package/assets/tasks/SWARM_HANDOFF.example.json +53 -0
- package/assets/tasks/SWARM_HANDOFF.example_ui_to_coders.json +55 -0
- package/assets/tasks/SWARM_HANDOFF.example_vos_to_ui.json +55 -0
- package/assets/tasks/SWARM_HANDOFF.template.json +52 -0
- package/assets/tasks/cli_work_split.md +22 -0
- package/assets/tasks/lessons.md +17 -0
- package/assets/tasks/role_tasks.md +206 -0
- package/assets/tasks/todo.md +23 -0
- package/dist/ace-autonomy.d.ts +137 -0
- package/dist/ace-autonomy.js +472 -0
- package/dist/ace-context.d.ts +29 -0
- package/dist/ace-context.js +240 -0
- package/dist/ace-internal-tools.d.ts +8 -0
- package/dist/ace-internal-tools.js +76 -0
- package/dist/ace-server-instructions.d.ts +12 -0
- package/dist/ace-server-instructions.js +324 -0
- package/dist/agent-runtime/role-adapters.d.ts +29 -0
- package/dist/agent-runtime/role-adapters.js +573 -0
- package/dist/astgrep-index.d.ts +24 -0
- package/dist/astgrep-index.js +476 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +591 -0
- package/dist/git-ops.d.ts +53 -0
- package/dist/git-ops.js +238 -0
- package/dist/handoff-registry.d.ts +71 -0
- package/dist/handoff-registry.js +422 -0
- package/dist/helpers.d.ts +126 -0
- package/dist/helpers.js +1687 -0
- package/dist/index-store.d.ts +51 -0
- package/dist/index-store.js +328 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/internal-tool-runtime.d.ts +21 -0
- package/dist/internal-tool-runtime.js +136 -0
- package/dist/job-scheduler.d.ts +175 -0
- package/dist/job-scheduler.js +1217 -0
- package/dist/kanban.d.ts +27 -0
- package/dist/kanban.js +339 -0
- package/dist/local-model-runtime.d.ts +40 -0
- package/dist/local-model-runtime.js +174 -0
- package/dist/model-bridge.d.ts +54 -0
- package/dist/model-bridge.js +587 -0
- package/dist/orchestrator-supervisor.d.ts +100 -0
- package/dist/orchestrator-supervisor.js +399 -0
- package/dist/problem-triage.d.ts +23 -0
- package/dist/problem-triage.js +448 -0
- package/dist/prompts.d.ts +7 -0
- package/dist/prompts.js +628 -0
- package/dist/public-surface.d.ts +30 -0
- package/dist/public-surface.js +316 -0
- package/dist/resources.d.ts +7 -0
- package/dist/resources.js +545 -0
- package/dist/run-ledger.d.ts +36 -0
- package/dist/run-ledger.js +257 -0
- package/dist/runtime-command.d.ts +18 -0
- package/dist/runtime-command.js +76 -0
- package/dist/runtime-executor.d.ts +104 -0
- package/dist/runtime-executor.js +985 -0
- package/dist/runtime-profile.d.ts +116 -0
- package/dist/runtime-profile.js +532 -0
- package/dist/runtime-tool-specs.d.ts +68 -0
- package/dist/runtime-tool-specs.js +527 -0
- package/dist/safe-edit.d.ts +52 -0
- package/dist/safe-edit.js +255 -0
- package/dist/schemas.d.ts +44 -0
- package/dist/schemas.js +830 -0
- package/dist/semantic-cache.d.ts +147 -0
- package/dist/semantic-cache.js +552 -0
- package/dist/semantic-hash.d.ts +83 -0
- package/dist/semantic-hash.js +346 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.js +46 -0
- package/dist/shared.d.ts +136 -0
- package/dist/shared.js +269 -0
- package/dist/skill-auditor.d.ts +26 -0
- package/dist/skill-auditor.js +184 -0
- package/dist/skill-catalog.d.ts +60 -0
- package/dist/skill-catalog.js +305 -0
- package/dist/status-events.d.ts +40 -0
- package/dist/status-events.js +269 -0
- package/dist/store/ace-packed-store.d.ts +69 -0
- package/dist/store/ace-packed-store.js +434 -0
- package/dist/store/bootstrap-store.d.ts +46 -0
- package/dist/store/bootstrap-store.js +242 -0
- package/dist/store/catalog-builder.d.ts +21 -0
- package/dist/store/catalog-builder.js +68 -0
- package/dist/store/importer.d.ts +19 -0
- package/dist/store/importer.js +157 -0
- package/dist/store/knowledge-bake.d.ts +59 -0
- package/dist/store/knowledge-bake.js +339 -0
- package/dist/store/materializers/hook-context-materializer.d.ts +25 -0
- package/dist/store/materializers/hook-context-materializer.js +100 -0
- package/dist/store/materializers/host-file-materializer.d.ts +37 -0
- package/dist/store/materializers/host-file-materializer.js +271 -0
- package/dist/store/materializers/todo-syncer.d.ts +30 -0
- package/dist/store/materializers/todo-syncer.js +140 -0
- package/dist/store/materializers/vericify-projector.d.ts +38 -0
- package/dist/store/materializers/vericify-projector.js +239 -0
- package/dist/store/repositories/discovery-repository.d.ts +24 -0
- package/dist/store/repositories/discovery-repository.js +58 -0
- package/dist/store/repositories/handoff-repository.d.ts +31 -0
- package/dist/store/repositories/handoff-repository.js +67 -0
- package/dist/store/repositories/ledger-repository.d.ts +26 -0
- package/dist/store/repositories/ledger-repository.js +49 -0
- package/dist/store/repositories/runtime-kv-repository.d.ts +16 -0
- package/dist/store/repositories/runtime-kv-repository.js +36 -0
- package/dist/store/repositories/scheduler-repository.d.ts +50 -0
- package/dist/store/repositories/scheduler-repository.js +123 -0
- package/dist/store/repositories/session-repository.d.ts +33 -0
- package/dist/store/repositories/session-repository.js +82 -0
- package/dist/store/repositories/todo-repository.d.ts +31 -0
- package/dist/store/repositories/todo-repository.js +77 -0
- package/dist/store/repositories/tracker-repository.d.ts +25 -0
- package/dist/store/repositories/tracker-repository.js +43 -0
- package/dist/store/repositories/vericify-repository.d.ts +32 -0
- package/dist/store/repositories/vericify-repository.js +58 -0
- package/dist/store/skills-install.d.ts +28 -0
- package/dist/store/skills-install.js +86 -0
- package/dist/store/state-reader.d.ts +49 -0
- package/dist/store/state-reader.js +111 -0
- package/dist/store/store-artifacts.d.ts +12 -0
- package/dist/store/store-artifacts.js +138 -0
- package/dist/store/store-snapshot.d.ts +19 -0
- package/dist/store/store-snapshot.js +140 -0
- package/dist/store/topology-bake.d.ts +15 -0
- package/dist/store/topology-bake.js +215 -0
- package/dist/store/types.d.ts +155 -0
- package/dist/store/types.js +35 -0
- package/dist/store/workspace-snapshot.d.ts +26 -0
- package/dist/store/workspace-snapshot.js +107 -0
- package/dist/store/write-queue.d.ts +7 -0
- package/dist/store/write-queue.js +26 -0
- package/dist/todo-state.d.ts +41 -0
- package/dist/todo-state.js +399 -0
- package/dist/tools-agent.d.ts +7 -0
- package/dist/tools-agent.js +1542 -0
- package/dist/tools-discovery.d.ts +6 -0
- package/dist/tools-discovery.js +178 -0
- package/dist/tools-drift.d.ts +13 -0
- package/dist/tools-drift.js +357 -0
- package/dist/tools-files.d.ts +6 -0
- package/dist/tools-files.js +679 -0
- package/dist/tools-framework.d.ts +7 -0
- package/dist/tools-framework.js +1414 -0
- package/dist/tools-git.d.ts +6 -0
- package/dist/tools-git.js +183 -0
- package/dist/tools-handoff.d.ts +32 -0
- package/dist/tools-handoff.js +489 -0
- package/dist/tools-lifecycle.d.ts +6 -0
- package/dist/tools-lifecycle.js +205 -0
- package/dist/tools-memory.d.ts +6 -0
- package/dist/tools-memory.js +260 -0
- package/dist/tools-scheduler.d.ts +6 -0
- package/dist/tools-scheduler.js +228 -0
- package/dist/tools-skills.d.ts +3 -0
- package/dist/tools-skills.js +104 -0
- package/dist/tools-todo.d.ts +6 -0
- package/dist/tools-todo.js +154 -0
- package/dist/tools.d.ts +9 -0
- package/dist/tools.js +33 -0
- package/dist/tracker-adapters.d.ts +74 -0
- package/dist/tracker-adapters.js +776 -0
- package/dist/tracker-sync.d.ts +10 -0
- package/dist/tracker-sync.js +84 -0
- package/dist/tui/agent-runner.d.ts +137 -0
- package/dist/tui/agent-runner.js +466 -0
- package/dist/tui/agent-worker.d.ts +10 -0
- package/dist/tui/agent-worker.js +347 -0
- package/dist/tui/chat.d.ts +84 -0
- package/dist/tui/chat.js +368 -0
- package/dist/tui/commands.d.ts +57 -0
- package/dist/tui/commands.js +432 -0
- package/dist/tui/dashboard.d.ts +24 -0
- package/dist/tui/dashboard.js +110 -0
- package/dist/tui/index.d.ts +114 -0
- package/dist/tui/index.js +1059 -0
- package/dist/tui/input.d.ts +49 -0
- package/dist/tui/input.js +336 -0
- package/dist/tui/layout.d.ts +116 -0
- package/dist/tui/layout.js +367 -0
- package/dist/tui/ollama.d.ts +116 -0
- package/dist/tui/ollama.js +192 -0
- package/dist/tui/openai-compatible.d.ts +63 -0
- package/dist/tui/openai-compatible.js +370 -0
- package/dist/tui/provider-discovery.d.ts +59 -0
- package/dist/tui/provider-discovery.js +530 -0
- package/dist/tui/renderer.d.ts +166 -0
- package/dist/tui/renderer.js +304 -0
- package/dist/tui/tabs.d.ts +70 -0
- package/dist/tui/tabs.js +208 -0
- package/dist/tui/telemetry.d.ts +56 -0
- package/dist/tui/telemetry.js +106 -0
- package/dist/vericify-bridge.d.ts +146 -0
- package/dist/vericify-bridge.js +571 -0
- package/dist/vericify-context.d.ts +10 -0
- package/dist/vericify-context.js +72 -0
- package/dist/workspace-manager.d.ts +107 -0
- package/dist/workspace-manager.js +636 -0
- package/package.json +83 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic hashing engine — pure algorithms, zero I/O.
|
|
3
|
+
*
|
|
4
|
+
* Ported from the Jups.tr notebook diff UI: the "golden logic" of
|
|
5
|
+
* shingling + MinHash + Jaccard + DP alignment + surgical token diff,
|
|
6
|
+
* hardened for server-side use with deterministic seeds.
|
|
7
|
+
*
|
|
8
|
+
* Design decisions:
|
|
9
|
+
* • Deterministic PRNG for MinHash permutations — same seed always
|
|
10
|
+
* produces the same signature, safe for cross-cycle cache comparison.
|
|
11
|
+
* • Section-aware chunking so markdown files get per-heading signatures.
|
|
12
|
+
* • Surgical token diff only fires on *modified* pairs (never on
|
|
13
|
+
* unchanged or added/deleted) to keep cost proportional to change.
|
|
14
|
+
*/
|
|
15
|
+
export interface DiffOp {
|
|
16
|
+
/** -1 = deletion, 0 = equal, 1 = insertion */
|
|
17
|
+
type: -1 | 0 | 1;
|
|
18
|
+
text: string;
|
|
19
|
+
}
|
|
20
|
+
export interface MarkdownSection {
|
|
21
|
+
heading: string;
|
|
22
|
+
/** 0-based inclusive */
|
|
23
|
+
lineStart: number;
|
|
24
|
+
/** 0-based inclusive */
|
|
25
|
+
lineEnd: number;
|
|
26
|
+
content: string;
|
|
27
|
+
}
|
|
28
|
+
export interface AlignedPair {
|
|
29
|
+
type: "MATCH" | "MODIFIED" | "INSERT" | "DELETE";
|
|
30
|
+
left: MarkdownSection | null;
|
|
31
|
+
right: MarkdownSection | null;
|
|
32
|
+
similarity: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Character k-shingles for approximate set similarity.
|
|
36
|
+
* Normalises whitespace so formatting changes don't dominate.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getShingles(text: string, k?: number): Set<string>;
|
|
39
|
+
export declare function calculateJaccard(setA: Set<string>, setB: Set<string>): number;
|
|
40
|
+
export declare class MinHash {
|
|
41
|
+
readonly numPermutations: number;
|
|
42
|
+
private readonly prime;
|
|
43
|
+
private readonly maxHash;
|
|
44
|
+
private readonly permuteFuncs;
|
|
45
|
+
/**
|
|
46
|
+
* @param numPermutations Hash function count (default 128)
|
|
47
|
+
* @param seed Deterministic seed — MUST be constant across runs
|
|
48
|
+
* for cached signatures to remain comparable.
|
|
49
|
+
*/
|
|
50
|
+
constructor(numPermutations?: number, seed?: number);
|
|
51
|
+
/** djb2 string → uint32 */
|
|
52
|
+
private hashString;
|
|
53
|
+
/** Compute a MinHash signature for a set of shingles. */
|
|
54
|
+
computeSignature(shingles: Set<string>): number[];
|
|
55
|
+
/** Estimate Jaccard similarity from two signatures. */
|
|
56
|
+
estimateSimilarity(sigA: number[], sigB: number[]): number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Split a markdown document into sections at heading boundaries.
|
|
60
|
+
* A section runs from one heading to the next (or EOF).
|
|
61
|
+
* Content before the first heading is labelled "(preamble)".
|
|
62
|
+
*/
|
|
63
|
+
export declare function splitMarkdownSections(text: string): MarkdownSection[];
|
|
64
|
+
/**
|
|
65
|
+
* Align two ordered sequences of sections using similarity-based DP.
|
|
66
|
+
* Uses MinHash estimated similarity with a configurable threshold
|
|
67
|
+
* (default 0.4 for sections which are more granular than whole files).
|
|
68
|
+
*
|
|
69
|
+
* Returns an ordered list of aligned pairs.
|
|
70
|
+
*/
|
|
71
|
+
export declare function alignSections(leftSections: MarkdownSection[], rightSections: MarkdownSection[], mh: MinHash, similarityThreshold?: number, shingleSize?: number): AlignedPair[];
|
|
72
|
+
/**
|
|
73
|
+
* Tokenize preserving whitespace and punctuation boundaries,
|
|
74
|
+
* then LCS-align tokens for a precise word-level diff.
|
|
75
|
+
* Only call on MODIFIED pairs — unnecessary for MATCH/INSERT/DELETE.
|
|
76
|
+
*/
|
|
77
|
+
export declare function surgicalTokenDiff(text1: string, text2: string): DiffOp[];
|
|
78
|
+
/**
|
|
79
|
+
* Render a DiffOp[] into a compact text summary suitable for agent
|
|
80
|
+
* consumption: lines prefixed with ` `, `+`, `-`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function renderDiffSummary(ops: DiffOp[]): string;
|
|
83
|
+
//# sourceMappingURL=semantic-hash.d.ts.map
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic hashing engine — pure algorithms, zero I/O.
|
|
3
|
+
*
|
|
4
|
+
* Ported from the Jups.tr notebook diff UI: the "golden logic" of
|
|
5
|
+
* shingling + MinHash + Jaccard + DP alignment + surgical token diff,
|
|
6
|
+
* hardened for server-side use with deterministic seeds.
|
|
7
|
+
*
|
|
8
|
+
* Design decisions:
|
|
9
|
+
* • Deterministic PRNG for MinHash permutations — same seed always
|
|
10
|
+
* produces the same signature, safe for cross-cycle cache comparison.
|
|
11
|
+
* • Section-aware chunking so markdown files get per-heading signatures.
|
|
12
|
+
* • Surgical token diff only fires on *modified* pairs (never on
|
|
13
|
+
* unchanged or added/deleted) to keep cost proportional to change.
|
|
14
|
+
*/
|
|
15
|
+
// ────────────────────────────────────────────────────────────────────
|
|
16
|
+
// 1. Shingling
|
|
17
|
+
// ────────────────────────────────────────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Character k-shingles for approximate set similarity.
|
|
20
|
+
* Normalises whitespace so formatting changes don't dominate.
|
|
21
|
+
*/
|
|
22
|
+
export function getShingles(text, k = 3) {
|
|
23
|
+
const clean = text.replace(/\s+/g, " ").toLowerCase();
|
|
24
|
+
const shingles = new Set();
|
|
25
|
+
for (let i = 0; i <= clean.length - k; i++) {
|
|
26
|
+
shingles.add(clean.substring(i, i + k));
|
|
27
|
+
}
|
|
28
|
+
return shingles;
|
|
29
|
+
}
|
|
30
|
+
// ────────────────────────────────────────────────────────────────────
|
|
31
|
+
// 2. Jaccard (exact)
|
|
32
|
+
// ────────────────────────────────────────────────────────────────────
|
|
33
|
+
export function calculateJaccard(setA, setB) {
|
|
34
|
+
if (setA.size === 0 && setB.size === 0)
|
|
35
|
+
return 1.0;
|
|
36
|
+
if (setA.size === 0 || setB.size === 0)
|
|
37
|
+
return 0.0;
|
|
38
|
+
let intersection = 0;
|
|
39
|
+
const smaller = setA.size <= setB.size ? setA : setB;
|
|
40
|
+
const larger = setA.size <= setB.size ? setB : setA;
|
|
41
|
+
for (const x of smaller) {
|
|
42
|
+
if (larger.has(x))
|
|
43
|
+
intersection++;
|
|
44
|
+
}
|
|
45
|
+
const union = setA.size + setB.size - intersection;
|
|
46
|
+
return intersection / union;
|
|
47
|
+
}
|
|
48
|
+
// ────────────────────────────────────────────────────────────────────
|
|
49
|
+
// 3. Deterministic MinHash
|
|
50
|
+
// ────────────────────────────────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* Simple 32-bit seeded LCG (Numerical Recipes constants).
|
|
53
|
+
* Produces repeatable sequences for the same seed.
|
|
54
|
+
*/
|
|
55
|
+
function seededRandom(seed) {
|
|
56
|
+
let s = seed >>> 0;
|
|
57
|
+
return () => {
|
|
58
|
+
s = (s * 1664525 + 1013904223) >>> 0;
|
|
59
|
+
return s;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export class MinHash {
|
|
63
|
+
numPermutations;
|
|
64
|
+
prime = 4294967311n; // next prime > 2^32
|
|
65
|
+
maxHash = 4294967295; // 2^32 − 1
|
|
66
|
+
permuteFuncs;
|
|
67
|
+
/**
|
|
68
|
+
* @param numPermutations Hash function count (default 128)
|
|
69
|
+
* @param seed Deterministic seed — MUST be constant across runs
|
|
70
|
+
* for cached signatures to remain comparable.
|
|
71
|
+
*/
|
|
72
|
+
constructor(numPermutations = 128, seed = 42) {
|
|
73
|
+
this.numPermutations = numPermutations;
|
|
74
|
+
const rng = seededRandom(seed);
|
|
75
|
+
this.permuteFuncs = [];
|
|
76
|
+
for (let i = 0; i < numPermutations; i++) {
|
|
77
|
+
this.permuteFuncs.push({
|
|
78
|
+
a: BigInt((rng() % this.maxHash) + 1),
|
|
79
|
+
b: BigInt((rng() % this.maxHash) + 1),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** djb2 string → uint32 */
|
|
84
|
+
hashString(str) {
|
|
85
|
+
let hash = 5381;
|
|
86
|
+
for (let i = 0; i < str.length; i++) {
|
|
87
|
+
hash = ((hash << 5) + hash + str.charCodeAt(i)) >>> 0;
|
|
88
|
+
}
|
|
89
|
+
return hash;
|
|
90
|
+
}
|
|
91
|
+
/** Compute a MinHash signature for a set of shingles. */
|
|
92
|
+
computeSignature(shingles) {
|
|
93
|
+
const sig = new Array(this.numPermutations).fill(Infinity);
|
|
94
|
+
if (shingles.size === 0)
|
|
95
|
+
return sig.fill(0);
|
|
96
|
+
for (const shingle of shingles) {
|
|
97
|
+
const h = BigInt(this.hashString(shingle));
|
|
98
|
+
for (let i = 0; i < this.numPermutations; i++) {
|
|
99
|
+
const { a, b } = this.permuteFuncs[i];
|
|
100
|
+
const ph = Number((a * h + b) % this.prime);
|
|
101
|
+
if (ph < sig[i])
|
|
102
|
+
sig[i] = ph;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return sig;
|
|
106
|
+
}
|
|
107
|
+
/** Estimate Jaccard similarity from two signatures. */
|
|
108
|
+
estimateSimilarity(sigA, sigB) {
|
|
109
|
+
if (sigA.length !== sigB.length)
|
|
110
|
+
return 0;
|
|
111
|
+
const aEmpty = sigA[0] === 0 && sigA[sigA.length - 1] === 0;
|
|
112
|
+
const bEmpty = sigB[0] === 0 && sigB[sigB.length - 1] === 0;
|
|
113
|
+
if (aEmpty && bEmpty)
|
|
114
|
+
return 1.0;
|
|
115
|
+
if (aEmpty || bEmpty)
|
|
116
|
+
return 0.0;
|
|
117
|
+
let matches = 0;
|
|
118
|
+
for (let i = 0; i < sigA.length; i++) {
|
|
119
|
+
if (sigA[i] === sigB[i])
|
|
120
|
+
matches++;
|
|
121
|
+
}
|
|
122
|
+
return matches / sigA.length;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// ────────────────────────────────────────────────────────────────────
|
|
126
|
+
// 4. Markdown section splitter
|
|
127
|
+
// ────────────────────────────────────────────────────────────────────
|
|
128
|
+
/**
|
|
129
|
+
* Split a markdown document into sections at heading boundaries.
|
|
130
|
+
* A section runs from one heading to the next (or EOF).
|
|
131
|
+
* Content before the first heading is labelled "(preamble)".
|
|
132
|
+
*/
|
|
133
|
+
export function splitMarkdownSections(text) {
|
|
134
|
+
const lines = text.split(/\r?\n/);
|
|
135
|
+
const sections = [];
|
|
136
|
+
let currentHeading = "(preamble)";
|
|
137
|
+
let currentStart = 0;
|
|
138
|
+
let buffer = [];
|
|
139
|
+
for (let i = 0; i < lines.length; i++) {
|
|
140
|
+
const headingMatch = lines[i].match(/^(#{1,6})\s+(.+)/);
|
|
141
|
+
if (headingMatch && buffer.length > 0) {
|
|
142
|
+
// Close previous section
|
|
143
|
+
sections.push({
|
|
144
|
+
heading: currentHeading,
|
|
145
|
+
lineStart: currentStart,
|
|
146
|
+
lineEnd: i - 1,
|
|
147
|
+
content: buffer.join("\n"),
|
|
148
|
+
});
|
|
149
|
+
// Start new
|
|
150
|
+
currentHeading = headingMatch[0].trim();
|
|
151
|
+
currentStart = i;
|
|
152
|
+
buffer = [lines[i]];
|
|
153
|
+
}
|
|
154
|
+
else if (headingMatch && buffer.length === 0) {
|
|
155
|
+
currentHeading = headingMatch[0].trim();
|
|
156
|
+
currentStart = i;
|
|
157
|
+
buffer = [lines[i]];
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
buffer.push(lines[i]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// final section
|
|
164
|
+
if (buffer.length > 0) {
|
|
165
|
+
sections.push({
|
|
166
|
+
heading: currentHeading,
|
|
167
|
+
lineStart: currentStart,
|
|
168
|
+
lineEnd: lines.length - 1,
|
|
169
|
+
content: buffer.join("\n"),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return sections;
|
|
173
|
+
}
|
|
174
|
+
// ────────────────────────────────────────────────────────────────────
|
|
175
|
+
// 5. DP alignment (LCS-style with similarity threshold)
|
|
176
|
+
// ────────────────────────────────────────────────────────────────────
|
|
177
|
+
/**
|
|
178
|
+
* Align two ordered sequences of sections using similarity-based DP.
|
|
179
|
+
* Uses MinHash estimated similarity with a configurable threshold
|
|
180
|
+
* (default 0.4 for sections which are more granular than whole files).
|
|
181
|
+
*
|
|
182
|
+
* Returns an ordered list of aligned pairs.
|
|
183
|
+
*/
|
|
184
|
+
export function alignSections(leftSections, rightSections, mh, similarityThreshold = 0.4, shingleSize = 3) {
|
|
185
|
+
const n = leftSections.length;
|
|
186
|
+
const m = rightSections.length;
|
|
187
|
+
// Pre-compute signatures
|
|
188
|
+
const sigsLeft = leftSections.map((s) => mh.computeSignature(getShingles(s.content, shingleSize)));
|
|
189
|
+
const sigsRight = rightSections.map((s) => mh.computeSignature(getShingles(s.content, shingleSize)));
|
|
190
|
+
// Similarity matrix
|
|
191
|
+
const simMatrix = Array.from({ length: n }, () => new Array(m).fill(0));
|
|
192
|
+
for (let i = 0; i < n; i++) {
|
|
193
|
+
for (let j = 0; j < m; j++) {
|
|
194
|
+
simMatrix[i][j] = mh.estimateSimilarity(sigsLeft[i], sigsRight[j]);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// DP table
|
|
198
|
+
const dp = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));
|
|
199
|
+
for (let i = 1; i <= n; i++) {
|
|
200
|
+
for (let j = 1; j <= m; j++) {
|
|
201
|
+
if (simMatrix[i - 1][j - 1] > similarityThreshold) {
|
|
202
|
+
dp[i][j] = 1 + dp[i - 1][j - 1];
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Backtrack
|
|
210
|
+
const alignment = [];
|
|
211
|
+
let i = n;
|
|
212
|
+
let j = m;
|
|
213
|
+
while (i > 0 || j > 0) {
|
|
214
|
+
if (i > 0 &&
|
|
215
|
+
j > 0 &&
|
|
216
|
+
simMatrix[i - 1][j - 1] > similarityThreshold) {
|
|
217
|
+
const sim = simMatrix[i - 1][j - 1];
|
|
218
|
+
const isExact = leftSections[i - 1].content === rightSections[j - 1].content;
|
|
219
|
+
alignment.push({
|
|
220
|
+
type: isExact ? "MATCH" : "MODIFIED",
|
|
221
|
+
left: leftSections[i - 1],
|
|
222
|
+
right: rightSections[j - 1],
|
|
223
|
+
similarity: sim,
|
|
224
|
+
});
|
|
225
|
+
i--;
|
|
226
|
+
j--;
|
|
227
|
+
}
|
|
228
|
+
else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {
|
|
229
|
+
alignment.push({
|
|
230
|
+
type: "INSERT",
|
|
231
|
+
left: null,
|
|
232
|
+
right: rightSections[j - 1],
|
|
233
|
+
similarity: 0,
|
|
234
|
+
});
|
|
235
|
+
j--;
|
|
236
|
+
}
|
|
237
|
+
else if (i > 0) {
|
|
238
|
+
alignment.push({
|
|
239
|
+
type: "DELETE",
|
|
240
|
+
left: leftSections[i - 1],
|
|
241
|
+
right: null,
|
|
242
|
+
similarity: 0,
|
|
243
|
+
});
|
|
244
|
+
i--;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
alignment.reverse();
|
|
248
|
+
return alignment;
|
|
249
|
+
}
|
|
250
|
+
// ────────────────────────────────────────────────────────────────────
|
|
251
|
+
// 6. Surgical token diff (for MODIFIED pairs only)
|
|
252
|
+
// ────────────────────────────────────────────────────────────────────
|
|
253
|
+
/**
|
|
254
|
+
* Tokenize preserving whitespace and punctuation boundaries,
|
|
255
|
+
* then LCS-align tokens for a precise word-level diff.
|
|
256
|
+
* Only call on MODIFIED pairs — unnecessary for MATCH/INSERT/DELETE.
|
|
257
|
+
*/
|
|
258
|
+
export function surgicalTokenDiff(text1, text2) {
|
|
259
|
+
if (text1 === text2)
|
|
260
|
+
return [{ type: 0, text: text1 }];
|
|
261
|
+
const tokenize = (str) => {
|
|
262
|
+
const tokens = [];
|
|
263
|
+
let current = "";
|
|
264
|
+
let inWord = false;
|
|
265
|
+
for (let i = 0; i < str.length; i++) {
|
|
266
|
+
const ch = str[i];
|
|
267
|
+
const isWordChar = /[a-zA-Z0-9_]/.test(ch);
|
|
268
|
+
if (isWordChar !== inWord && current) {
|
|
269
|
+
tokens.push(current);
|
|
270
|
+
current = ch;
|
|
271
|
+
inWord = isWordChar;
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
current += ch;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
if (current)
|
|
278
|
+
tokens.push(current);
|
|
279
|
+
return tokens;
|
|
280
|
+
};
|
|
281
|
+
const tokens1 = tokenize(text1);
|
|
282
|
+
const tokens2 = tokenize(text2);
|
|
283
|
+
// LCS DP
|
|
284
|
+
const n = tokens1.length;
|
|
285
|
+
const m = tokens2.length;
|
|
286
|
+
const dp = Array.from({ length: n + 1 }, () => new Array(m + 1).fill(0));
|
|
287
|
+
for (let i = 1; i <= n; i++) {
|
|
288
|
+
for (let j = 1; j <= m; j++) {
|
|
289
|
+
if (tokens1[i - 1] === tokens2[j - 1]) {
|
|
290
|
+
dp[i][j] = dp[i - 1][j - 1] + 1;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Backtrack
|
|
298
|
+
const result = [];
|
|
299
|
+
let ii = n;
|
|
300
|
+
let jj = m;
|
|
301
|
+
while (ii > 0 || jj > 0) {
|
|
302
|
+
if (ii > 0 && jj > 0 && tokens1[ii - 1] === tokens2[jj - 1]) {
|
|
303
|
+
result.unshift({ type: 0, text: tokens1[ii - 1] });
|
|
304
|
+
ii--;
|
|
305
|
+
jj--;
|
|
306
|
+
}
|
|
307
|
+
else if (jj > 0 && (ii === 0 || dp[ii][jj - 1] >= dp[ii - 1][jj])) {
|
|
308
|
+
result.unshift({ type: 1, text: tokens2[jj - 1] });
|
|
309
|
+
jj--;
|
|
310
|
+
}
|
|
311
|
+
else if (ii > 0) {
|
|
312
|
+
result.unshift({ type: -1, text: tokens1[ii - 1] });
|
|
313
|
+
ii--;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// Merge consecutive same-type ops
|
|
317
|
+
const merged = [];
|
|
318
|
+
for (const op of result) {
|
|
319
|
+
const last = merged[merged.length - 1];
|
|
320
|
+
if (last && last.type === op.type) {
|
|
321
|
+
last.text += op.text;
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
merged.push({ ...op });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return merged;
|
|
328
|
+
}
|
|
329
|
+
// ────────────────────────────────────────────────────────────────────
|
|
330
|
+
// 7. Compact diff summary (for MCP output — no UI needed)
|
|
331
|
+
// ────────────────────────────────────────────────────────────────────
|
|
332
|
+
/**
|
|
333
|
+
* Render a DiffOp[] into a compact text summary suitable for agent
|
|
334
|
+
* consumption: lines prefixed with ` `, `+`, `-`.
|
|
335
|
+
*/
|
|
336
|
+
export function renderDiffSummary(ops) {
|
|
337
|
+
const lines = [];
|
|
338
|
+
for (const op of ops) {
|
|
339
|
+
const prefix = op.type === 0 ? " " : op.type === 1 ? "+" : "-";
|
|
340
|
+
for (const line of op.text.split("\n")) {
|
|
341
|
+
lines.push(`${prefix}${line}`);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return lines.join("\n");
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=semantic-hash.js.map
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare const ACE_MCP_SERVER_NAME = "ace-swarm";
|
|
3
|
+
export declare const ACE_MCP_SERVER_VERSION = "1.1.0";
|
|
4
|
+
export interface CreateAceServerOptions {
|
|
5
|
+
toolGovernance?: boolean;
|
|
6
|
+
instructions?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function createAceServer(options?: CreateAceServerOptions): McpServer;
|
|
9
|
+
export declare function startStdioServer(logStartup?: boolean): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { buildServerInstructions, installAceToolGovernance, } from "./ace-server-instructions.js";
|
|
4
|
+
import { resolveWorkspaceRoot } from "./helpers.js";
|
|
5
|
+
import { registerPrompts } from "./prompts.js";
|
|
6
|
+
import { registerResources } from "./resources.js";
|
|
7
|
+
import { registerTools } from "./tools.js";
|
|
8
|
+
import { backfillHandoffsIntoScheduler } from "./tools-handoff.js";
|
|
9
|
+
export const ACE_MCP_SERVER_NAME = "ace-swarm";
|
|
10
|
+
export const ACE_MCP_SERVER_VERSION = "1.1.0";
|
|
11
|
+
export function createAceServer(options = {}) {
|
|
12
|
+
const workspaceRoot = resolveWorkspaceRoot();
|
|
13
|
+
const server = new McpServer({
|
|
14
|
+
name: ACE_MCP_SERVER_NAME,
|
|
15
|
+
version: ACE_MCP_SERVER_VERSION,
|
|
16
|
+
}, {
|
|
17
|
+
instructions: options.instructions ?? buildServerInstructions(workspaceRoot),
|
|
18
|
+
});
|
|
19
|
+
if (options.toolGovernance !== false) {
|
|
20
|
+
installAceToolGovernance(server, workspaceRoot);
|
|
21
|
+
}
|
|
22
|
+
registerResources(server);
|
|
23
|
+
registerPrompts(server);
|
|
24
|
+
registerTools(server);
|
|
25
|
+
return server;
|
|
26
|
+
}
|
|
27
|
+
export async function startStdioServer(logStartup = true) {
|
|
28
|
+
try {
|
|
29
|
+
const backfill = await backfillHandoffsIntoScheduler();
|
|
30
|
+
if (logStartup && backfill.scanned > 0) {
|
|
31
|
+
console.error(`Scheduler backfill: scanned=${backfill.scanned} synced=${backfill.synced} enqueued=${backfill.enqueued} failures=${backfill.failures.length}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if (logStartup) {
|
|
36
|
+
console.error(`Scheduler backfill warning: ${error instanceof Error ? error.message : String(error)}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const server = createAceServer();
|
|
40
|
+
const transport = new StdioServerTransport();
|
|
41
|
+
await server.connect(transport);
|
|
42
|
+
if (logStartup) {
|
|
43
|
+
console.error(`ACE MCP Server (${ACE_MCP_SERVER_NAME}) running on stdio`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=server.js.map
|
package/dist/shared.d.ts
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities – deduplicated common functions and typed constants
|
|
3
|
+
* used across ace-mcp-server modules.
|
|
4
|
+
*
|
|
5
|
+
* This module has NO imports from helpers.ts to prevent circular deps.
|
|
6
|
+
* Only depends on node built-ins and zod.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
/** Check if a safeRead result indicates file absence or access error. */
|
|
10
|
+
export declare function isReadError(raw: string): boolean;
|
|
11
|
+
/** Check if target path is inside base directory. */
|
|
12
|
+
export declare function isInside(base: string, target: string): boolean;
|
|
13
|
+
/** Normalize path to forward-slash workspace-relative form. */
|
|
14
|
+
export declare function normalizeRelPath(path: string): string;
|
|
15
|
+
/** Create a URL-safe slug from a string (max 48 chars). */
|
|
16
|
+
export declare function slugify(value: string): string;
|
|
17
|
+
/** Test if a normalized path looks like a SWARM_HANDOFF payload file. */
|
|
18
|
+
export declare function looksLikeSwarmHandoffPath(path: string): boolean;
|
|
19
|
+
export declare const ROLE_TITLES: Record<string, string>;
|
|
20
|
+
export declare function getRoleTitle(role: string): string;
|
|
21
|
+
export declare const MCP_CLIENT_ENUM: z.ZodEnum<{
|
|
22
|
+
claude: "claude";
|
|
23
|
+
cursor: "cursor";
|
|
24
|
+
codex: "codex";
|
|
25
|
+
vscode: "vscode";
|
|
26
|
+
antigravity: "antigravity";
|
|
27
|
+
}>;
|
|
28
|
+
export declare const ROLE_ENUM: z.ZodEnum<{
|
|
29
|
+
orchestrator: "orchestrator";
|
|
30
|
+
vos: "vos";
|
|
31
|
+
ui: "ui";
|
|
32
|
+
coders: "coders";
|
|
33
|
+
astgrep: "astgrep";
|
|
34
|
+
skeptic: "skeptic";
|
|
35
|
+
ops: "ops";
|
|
36
|
+
research: "research";
|
|
37
|
+
spec: "spec";
|
|
38
|
+
builder: "builder";
|
|
39
|
+
qa: "qa";
|
|
40
|
+
docs: "docs";
|
|
41
|
+
memory: "memory";
|
|
42
|
+
security: "security";
|
|
43
|
+
observability: "observability";
|
|
44
|
+
eval: "eval";
|
|
45
|
+
release: "release";
|
|
46
|
+
}>;
|
|
47
|
+
export declare const HANDOFF_VALIDATION_MODE: z.ZodOptional<z.ZodEnum<{
|
|
48
|
+
auto: "auto";
|
|
49
|
+
swarm: "swarm";
|
|
50
|
+
"agent-state": "agent-state";
|
|
51
|
+
}>>;
|
|
52
|
+
export declare const KERNEL_KEY_ENUM: z.ZodEnum<{
|
|
53
|
+
directive_kernel: "directive_kernel";
|
|
54
|
+
agent_registry: "agent_registry";
|
|
55
|
+
}>;
|
|
56
|
+
export declare const TODO_STATUS_ENUM: z.ZodEnum<{
|
|
57
|
+
backlog: "backlog";
|
|
58
|
+
in_progress: "in_progress";
|
|
59
|
+
blocked: "blocked";
|
|
60
|
+
gated: "gated";
|
|
61
|
+
done: "done";
|
|
62
|
+
}>;
|
|
63
|
+
export declare const HANDOFF_LIFECYCLE_STATUS_ENUM: z.ZodEnum<{
|
|
64
|
+
blocked: "blocked";
|
|
65
|
+
open: "open";
|
|
66
|
+
accepted: "accepted";
|
|
67
|
+
completed: "completed";
|
|
68
|
+
}>;
|
|
69
|
+
export declare const SOURCE_MODULE: {
|
|
70
|
+
readonly OPS: "capability-ops";
|
|
71
|
+
readonly ASTGREP: "capability-astgrep";
|
|
72
|
+
readonly SAFETY: "capability-safety";
|
|
73
|
+
readonly GIT: "capability-git";
|
|
74
|
+
readonly MEMORY: "capability-memory";
|
|
75
|
+
readonly FRAMEWORK: "capability-framework";
|
|
76
|
+
};
|
|
77
|
+
export declare const EVENT_TYPE: {
|
|
78
|
+
readonly ADAPTER_LOW_CONFIDENCE: "ADAPTER_LOW_CONFIDENCE";
|
|
79
|
+
readonly CIRCUIT_BREAKER_OPENED: "CIRCUIT_BREAKER_OPENED";
|
|
80
|
+
readonly CIRCUIT_BREAKER_CLOSED: "CIRCUIT_BREAKER_CLOSED";
|
|
81
|
+
readonly CONTEXT_SNAPSHOT: "CONTEXT_SNAPSHOT";
|
|
82
|
+
readonly DISCOVERY_INDEX_READY: "DISCOVERY_INDEX_READY";
|
|
83
|
+
readonly DISCOVERY_SCOPE_BLOCKED: "DISCOVERY_SCOPE_BLOCKED";
|
|
84
|
+
readonly FRAMEWORK_VALIDATED: "FRAMEWORK_VALIDATED";
|
|
85
|
+
readonly GATES_EXECUTED: "GATES_EXECUTED";
|
|
86
|
+
readonly GIT_INITIALIZED: "GIT_INITIALIZED";
|
|
87
|
+
readonly GIT_COMMITTED: "GIT_COMMITTED";
|
|
88
|
+
readonly HANDOFF_SCHEDULER_SYNCED: "HANDOFF_SCHEDULER_SYNCED";
|
|
89
|
+
readonly RUNTIME_EXECUTOR_SESSION_BLOCKED: "RUNTIME_EXECUTOR_SESSION_BLOCKED";
|
|
90
|
+
readonly RUNTIME_EXECUTOR_SESSION_COMPLETED: "RUNTIME_EXECUTOR_SESSION_COMPLETED";
|
|
91
|
+
readonly RUNTIME_EXECUTOR_SESSION_FAILED: "RUNTIME_EXECUTOR_SESSION_FAILED";
|
|
92
|
+
readonly RUNTIME_EXECUTOR_SESSION_STARTED: "RUNTIME_EXECUTOR_SESSION_STARTED";
|
|
93
|
+
readonly RUNTIME_EXECUTOR_SESSION_STOPPED: "RUNTIME_EXECUTOR_SESSION_STOPPED";
|
|
94
|
+
readonly RUNTIME_EXECUTOR_TURN_COMPLETED: "RUNTIME_EXECUTOR_TURN_COMPLETED";
|
|
95
|
+
readonly RUNTIME_EXECUTOR_TURN_FAILED: "RUNTIME_EXECUTOR_TURN_FAILED";
|
|
96
|
+
readonly RUNTIME_EXECUTOR_TURN_STARTED: "RUNTIME_EXECUTOR_TURN_STARTED";
|
|
97
|
+
readonly RUNTIME_PROFILE_INVALID: "RUNTIME_PROFILE_INVALID";
|
|
98
|
+
readonly RUNTIME_PROFILE_LOADED: "RUNTIME_PROFILE_LOADED";
|
|
99
|
+
readonly RUNTIME_PROFILE_RELOADED: "RUNTIME_PROFILE_RELOADED";
|
|
100
|
+
readonly RUNTIME_TOOL_EXECUTED: "RUNTIME_TOOL_EXECUTED";
|
|
101
|
+
readonly RUNTIME_TOOL_FAILED: "RUNTIME_TOOL_FAILED";
|
|
102
|
+
readonly RUNTIME_TOOL_REGISTRY_INVALID: "RUNTIME_TOOL_REGISTRY_INVALID";
|
|
103
|
+
readonly SAFE_EDIT_COMPLETED: "SAFE_EDIT_COMPLETED";
|
|
104
|
+
readonly SAFE_EDIT_FAILED: "SAFE_EDIT_FAILED";
|
|
105
|
+
readonly SCHEDULER_JOB_ACK: "SCHEDULER_JOB_ACK";
|
|
106
|
+
readonly SCHEDULER_JOB_COMPLETED: "SCHEDULER_JOB_COMPLETED";
|
|
107
|
+
readonly SCHEDULER_JOB_ENQUEUED: "SCHEDULER_JOB_ENQUEUED";
|
|
108
|
+
readonly SCHEDULER_JOB_STARTED: "SCHEDULER_JOB_STARTED";
|
|
109
|
+
readonly SCHEDULER_RECOVERY: "SCHEDULER_RECOVERY";
|
|
110
|
+
readonly SCHEDULER_TICK: "SCHEDULER_TICK";
|
|
111
|
+
readonly TESTS_PASSED: "TESTS_PASSED";
|
|
112
|
+
readonly TESTS_FAILED: "TESTS_FAILED";
|
|
113
|
+
readonly TRACKER_COMMENT_CREATED: "TRACKER_COMMENT_CREATED";
|
|
114
|
+
readonly TRACKER_ITEM_STATE_UPDATED: "TRACKER_ITEM_STATE_UPDATED";
|
|
115
|
+
readonly TRACKER_SNAPSHOT_REFRESHED: "TRACKER_SNAPSHOT_REFRESHED";
|
|
116
|
+
readonly TRACKER_SNAPSHOT_REFRESH_FAILED: "TRACKER_SNAPSHOT_REFRESH_FAILED";
|
|
117
|
+
readonly WORKER_INPUT: "WORKER_INPUT";
|
|
118
|
+
readonly WORKSPACE_HOOK_FAILED: "WORKSPACE_HOOK_FAILED";
|
|
119
|
+
readonly WORKSPACE_SESSION_CREATED: "WORKSPACE_SESSION_CREATED";
|
|
120
|
+
readonly WORKSPACE_SESSION_FAILED: "WORKSPACE_SESSION_FAILED";
|
|
121
|
+
readonly WORKSPACE_SESSION_REMOVED: "WORKSPACE_SESSION_REMOVED";
|
|
122
|
+
};
|
|
123
|
+
export interface DomainKeyword {
|
|
124
|
+
keyword: string;
|
|
125
|
+
weight: number;
|
|
126
|
+
}
|
|
127
|
+
export declare const DOMAIN_KEYWORDS: Record<string, DomainKeyword[]>;
|
|
128
|
+
/**
|
|
129
|
+
* Score a task description against all domain keyword sets.
|
|
130
|
+
* Returns the domain with the highest weighted score, or "mixed" on tie/zero.
|
|
131
|
+
*/
|
|
132
|
+
export declare function scoreDomains(text: string): {
|
|
133
|
+
domain: string;
|
|
134
|
+
scores: Record<string, number>;
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=shared.d.ts.map
|