17 KiB
Agents365 capability coverage
Evidence basis: clean-room behavioral comparison of 42 peer tools. Peer source and bundled assets were not copied because the inspected mirror had no complete license file.
Reading the classifications
- Implemented — full mapped peer acceptance contract is available.
- Partial — useful native behavior is implemented, but some peer options, adapters, or Command-Line Interface (CLI) exposure remain.
- Optional deferred — environment-heavy capability remains outside the mandatory offline core.
- Rejected — capability was deliberately excluded from this phase.
These are strict peer-parity labels. A partial row can still contain substantial production-ready native functionality.
Aggregate
| Classification | Count |
|---|---|
| Implemented | 0 |
| Partial | 29 |
| Optional deferred | 11 |
| Rejected | 2 |
| Total | 42 |
Capability matrix
| Peer tool | Classification | Native evidence | Remaining gap |
|---|---|---|---|
aiicons.py |
optional-deferred | scripts/src/services/shape-catalog/shape-catalog.tsscripts/src/services/shape-catalog/shape-catalog.test.ts |
Only an eight-entry generic offline shape catalog exists; there is no AI/LLM brand manifest, variant selection, embedding adapter, URL allowlist, or CLI action. |
autolayout.py |
partial | scripts/src/services/layout/layout-engine.tsscripts/src/services/layout/layout-engine.test.tsscripts/src/actions/build/action.ts |
Deterministic native layouts exist, but there is no peer-compatible graph-JSON adapter, group-tree contract, monochrome mode, or objective TB/LR tuning action. |
buildup.py |
partial | scripts/src/services/profiles/buildup.tsscripts/src/services/profiles/buildup.test.ts |
The service computes deterministic cumulative IR frames, but it does not parse Draw.io through a buildup action, render PNG frames, publish the player HTML, encode GIF, or expose CLI availability semantics. |
c4.py |
partial | scripts/src/services/profiles/c4.tsscripts/src/services/profiles/c4.test.tsscripts/src/services/profiles/index.ts |
The service validates hierarchy and creates linked C4 pages, but no C4 CLI/action or input-file adapter is registered, and canonical peer style/direction options are not fully exposed. |
ciimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
The service imports a bounded generic jobs/needs object, but lacks CLI registration, repository workflow discovery, triggers, runners, matrices, reusable workflows, GitLab stages, and inferred stage dependencies. |
composeimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
Services, depends_on, and simple named volumes are covered through a service API; links, volumes_from, long-form mounts, network grouping, conventional-file discovery, and CLI exposure remain absent. |
compress.py |
partial | scripts/src/services/profiles/compression.tsscripts/src/services/profiles/compression.test.ts |
A deterministic BFS clustering service emits summary and full IR pages, but there is no Draw.io-facing action, exact loss-aware detail-file workflow, label-propagation parity, or member-cell drill-down target contract. |
dbxicons.py |
optional-deferred | scripts/src/services/shape-catalog/shape-catalog.tsclean-room 42-tool mapping audit |
No licensed Databricks manifest, aliases, variants, pinned-ref embedding, refresh operation, host allowlist, or CLI action was delivered. |
diagram_ir.py |
partial | scripts/src/model/diagram-ir.tsscripts/src/services/semantic-lifecycle/import-drawio.tsscripts/src/services/semantic-lifecycle/analysis.tsscripts/src/services/semantic-lifecycle/sync.tsscripts/src/services/semantic-lifecycle/publishing.ts |
Versioned IR, loss-aware import, views, query, policies, failure impact, sync, and story publishing exist, but articulation analysis, a unified architecture-review contract, contrast analysis, multilingual labeling, and explicit peer-IR-v1 compatibility are incomplete. |
diagramctl.py |
partial | scripts/src/cli/commands.tsscripts/src/cli/semantic-lifecycle.test.tsscripts/src/actions/doctor/action.tsscripts/src/actions/sync/action.ts |
Lifecycle actions are registered in the existing --action CLI, but integrated importer, profile, transform, and reverse-export services are not registered. There is no uniform peer-equivalent result envelope. |
diagramctl_mcp.py |
optional-deferred | scripts/src/cli/commands.tsclean-room 42-tool mapping audit |
No optional MCP package, JSON-RPC initialization, tools/list, tools/call bridge, closed schemas, timeout handling, or MCP entrypoint exists. |
dockerimports.py |
optional-deferred | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
The importer registry has Docker Compose but no Docker inspect snapshot kind, container/network/volume instance normalization, redaction contract, stdin parity, or action. |
drawio2mermaid.py |
partial | scripts/src/services/transforms/reverse.tsscripts/src/services/transforms/reverse.test.tsscripts/src/services/semantic-lifecycle/import-drawio.ts |
A deterministic IR-to-Mermaid service exists, but there is no Draw.io-to-Mermaid CLI/action, shape-form mapping, direction/fence controls, or lossy-conversion report. |
drawio2pptx.py |
optional-deferred | scripts/src/cli/commands.tsclean-room 42-tool mapping audit |
No optional Draw.io renderer adapter, per-page raster loop, PPTX writer, slide sizing, scale option, or structured unavailable result exists. |
drawiodiff.py |
partial | scripts/src/services/transforms/semantic-diff.tsscripts/src/services/transforms/semantic-diff.test.tsscripts/src/services/semantic-lifecycle/import-drawio.ts |
The IR service classifies added, removed, changed, moved, and rerouted entities, but no CLI/action composes Draw.io import with diffing, no by-label ambiguity mode exists, and no color-coded graph output or summary diagram is emitted. |
drawiohtml.py |
optional-deferred | scripts/src/services/semantic-lifecycle/publishing.tsscripts/src/actions/story/action.ts |
Story HTML is a different semantic publisher; there is no page-to-SVG export adapter, SVG sanitizer, tabbed viewer, pan/zoom/search UI, drill-down link rewrite, or publish-viewer action. |
edgeports.py |
rejected | scripts/src/services/authoring-router/orthogonal-router.tsscripts/src/services/authoring-router/orthogonal-router.test.tsclean-room 42-tool mapping audit |
Only routing during authoring exists. The post-import boundary-port editor, pinned-port preservation, dry-run, idempotence, and transactional Draw.io write path were not selected for this post-phase implementation. |
encode_drawio_url.py |
optional-deferred | scripts/src/cli/commands.tsscripts/package.json |
Compression primitives are available transitively, but there is no byte-compatible URL encoder, viewer/edit modes, size policy, privacy warning, or CLI action. |
explain.py |
partial | scripts/src/services/transforms/reverse.tsscripts/src/services/transforms/reverse.test.ts |
Structured Markdown for IR pages, nodes, and flows exists as a service, but no Draw.io-facing explain action, tier/type inference, C4 context, unknown-section reporting, or output-file contract is exposed. |
goimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
Bounded Go import extraction exists, but it emits imported paths as library nodes rather than resolving only intra-module packages; module discovery, grouping, transitive reduction, and CLI exposure are absent. |
heatmap.py |
partial | scripts/src/services/transforms/heatmap.tsscripts/src/services/transforms/heatmap.test.ts |
The IR service validates bounded metrics and applies deterministic accessible colors with legend metadata, but it lacks CSV/JSON loading, label matching, geometry scaling, a rendered legend node, Draw.io transactional output, and CLI exposure. |
jsimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
A bounded scanner handles static import/export and require while avoiding tested comments and strings, but dynamic string imports, project module resolution, external exclusion, directory grouping, transitive reduction, and CLI exposure remain incomplete. |
k8simports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
Local object/YAML parsing, namespace-qualified identity, Service selectors, Secret references, and Secret payload redaction are tested. Ingress, ConfigMap, PVC, HPA, list-wrapper normalization, ambiguity diagnostics, icon suppression/grouping, stdin action parity, and CLI registration remain absent. |
openapiimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
OpenAPI operations and local component-schema references are imported through a service API, but Swagger 2 definitions, nested schema-to-schema edges, method styling, tag groups, no-schema projection, version diagnostics, and CLI exposure are missing. |
prdiff.py |
optional-deferred | scripts/src/services/transforms/semantic-diff.tsscripts/src/cli/commands.ts |
Semantic IR diff alone does not provide scoped git revision discovery, A/M/D classification, safe extraction, Draw.io rendering, artifact naming, Markdown reporting, or unavailable-render handling. |
pyclasses.py |
rejected | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
The Python importer extracts imports only. Class declarations, inheritance resolution, multiple inheritance, nested module grouping, ambiguity diagnostics, and transitive reduction were not implemented or registered. |
pyimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
Bounded import/from extraction and dynamic-import diagnostics exist, but relative and absolute intra-project resolution, stdlib/third-party exclusion, package grouping, transitive reduction, syntax-error diagnostics, and CLI exposure are absent. |
raster2drawio.py |
partial | scripts/src/actions/build/action.tsscripts/src/authoring/ir-to-drawio.tsscripts/src/services/layout/layout-engine.tsscripts/src/model/diagram-ir.ts |
Generic IR build supports explicit geometry, styles, edges, and automatic layout, but there is no raster-extracted graph compatibility schema/action, x/y/w/h shorthand conversion, partial-coordinate policy, confidence/provenance convention, or extraction-warning envelope. |
relabel.py |
partial | scripts/src/services/transforms/relabel.tsscripts/src/services/transforms/relabel.test.ts |
A strict complete-map IR relabel service preserves non-label structure, but there is no extraction mode, page-name handling, UserObject traversal contract, partial-map/unmatched reporting, Draw.io transactional write, or CLI action. |
repair_png.py |
optional-deferred | scripts/src/cli/commands.tsclean-room 42-tool mapping audit |
No PNG chunk validator, signature-specific repair, atomic in-place replacement, idempotence gate, version gate, or optional action exists. |
restyle.py |
partial | scripts/src/services/themes/theme-service.tsscripts/src/services/themes/theme-service.test.ts |
Five validated built-in themes and immutable IR application exist, but the peer-style palette-slot schema, user preset loader, hue/neutral color remapping, global extras, versioned JSON schema, Draw.io transactional action, and CLI exposure are incomplete. |
runbook.py |
partial | scripts/src/services/profiles/runbook.tsscripts/src/services/profiles/runbook.test.ts |
The service emits escaped self-contained interactive HTML from an explicit RunbookGraph, but it does not parse Draw.io, infer node types/start nodes/choices, report fallback selection, or expose a publish-runbook action. |
rustimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
A bounded subset recognizes mod and simple use roots and diagnoses macros, but crate/self/super resolution, module-file discovery, complete brace expansion, external-crate exclusion, grouping, reduction, and CLI exposure are absent. |
seqlayout.py |
partial | scripts/src/services/profiles/sequence.tsscripts/src/services/profiles/sequence.test.ts |
Participants, ordered messages, lifelines, activations, return validation, and editable geometry are implemented as a service, but notes are unsupported and no sequence schema file, input action, direction/options contract, or CLI registration exists. |
shapesearch.py |
partial | scripts/src/services/shape-catalog/shape-catalog.tsscripts/src/services/shape-catalog/shape-catalog.test.ts |
Deterministic exact/alias/fuzzy search exists for eight hand-curated generic shapes, not the licensed 10k+ palette index; compound/tag/Soundex ranking, dimensions, gzip integrity controls, expected ecosystem queries, and CLI output are missing. |
sqlerd.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
A narrow line-oriented subset finds simple tables and REFERENCES edges, but columns/types, PK/FK markers, quoted/schema identifiers, composite keys, schema grouping, crow's-foot styles, unsupported-syntax diagnostics, and CLI exposure are missing. |
svgflow.py |
optional-deferred | scripts/src/cli/commands.tsclean-room 42-tool mapping audit |
No optional Draw.io SVG export adapter, SVG parser/sanitizer, connector detection, animation injection, reduced-motion handling, or export-flow-svg action exists. |
tfimports.py |
partial | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
A bounded line-oriented resource/reference subset exists, but modules, multiline/nested HCL handling, comments/string false-positive guarantees, diagnostics for dynamic expressions, cloud styles, grouping, transitive reduction, no-icons mode, and CLI exposure are incomplete. |
tfstate.py |
optional-deferred | scripts/src/services/source-importers/index.tsscripts/src/services/source-importers/index.test.ts |
No Terraform show-JSON snapshot source kind, nested module traversal, count/for_each instance expansion, sensitive-value redaction, state relationship extraction, stdin parity, or optional action exists. |
timelapse.py |
partial | scripts/src/services/profiles/timelapse.tsscripts/src/services/profiles/timelapse.test.ts |
The service classifies changes across caller-supplied IR snapshots, but it has no scoped git history/archive adapter, deterministic commit sampling, importer allowlist, Draw.io frame rendering, HTML player, resource limits, or CLI action. |
tubemap.py |
partial | scripts/src/services/profiles/tube-map.tsscripts/src/services/profiles/tube-map.test.ts |
The native service provides deterministic grid-aligned octilinear routes, interchange semantics, validation, and tested obstacle avoidance, but no versioned input schema, build-tubemap action, file adapter, or CLI exposure exists. |
validate.py |
partial | scripts/src/actions/validate/action.tsscripts/src/actions/quality/action.tsscripts/src/actions/page-connectors-validation/action.tsscripts/src/actions/page-shape-bbox-validation/action.tsscripts/src/actions/page-orphans/action.ts |
Structural compilation and several specialized quality checks exist, but findings remain fragmented rather than one stable code/severity/subject/fix schema; duplicate/reserved ID, parent, off-grid, strict-warning, JSON projection, and comparable readability-score acceptance coverage is incomplete. |
Architectural boundary
The retained implementation stays in the existing TypeScript/Node.js stack with pnpm, Taskfile, @maxgraph/core, and the established action-based CLI. Python, Graphviz, Eclipse Layout Kernel (ELK), Model Context Protocol (MCP), browser services, network icon retrieval, and Draw.io Desktop are not mandatory dependencies. Optional adapters must report availability honestly.
Delivery note
This matrix describes the combined integrated candidate and deliberate scope decisions. Gitea publication and Hermes runtime installation are separate gates and must not be inferred from this document.