Dependency-free Python SDK for todo2code A2A and the local TypeScript runtime
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 28 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
analyze_communication
-
apply_source_patch
-
apply_todo
-
close_code_change
-
compare_workspace
-
diagnose
-
diff
-
diff_files
-
diff_git
-
evaluate_code_change
-
extract_ast
-
extract_communication
-
extract_config
-
extract_docs
-
extract_git
-
extract_markdown
-
extract_nl
-
intake_command
-
intake_query
-
link
-
pipeline
-
propose_code_change
-
propose_source_patch
-
propose_todo
-
reality
-
render_code_change
-
render_todo
-
summarize
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit fe096a9 · analyzer v33 · 2w ago
skills & prompt files 7
- agent-rules autogrammar-todo2code-fe096a9/AGENTS.md
- prompt-file autogrammar-todo2code-fe096a9/prompts/communication-to-intent.system.md
- prompt-file autogrammar-todo2code-fe096a9/prompts/docs-to-intent.system.md
- prompt-file autogrammar-todo2code-fe096a9/prompts/markdown-to-intent.system.md
- prompt-file autogrammar-todo2code-fe096a9/prompts/nl-to-intent.system.md
- prompt-file autogrammar-todo2code-fe096a9/prompts/summarize.system.md
- prompt-file autogrammar-todo2code-fe096a9/prompts/tasks-from-dsl.system.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 273
filesystem 101
- fs (weak) autogrammar-todo2code-fe096a9/examples/sdk/typescript.mjs :1
import { readFile } from 'node:fs/promises'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/assert-demollm-run.mjs :1
import { readFile } from 'node:fs/promises'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/generate-response-schemas.mjs :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/github-event-log.mjs :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/live-contract-check.mjs :17
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/live-model-comparison.mjs :14
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/normalize-generated-analysis-roots.mjs :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/research/audit-changelog-sample.mjs :4
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/research/rerank-embedding-shortlist.mjs :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/sync-generated-readme-metadata.mjs :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/verify-env-contract.mjs :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/verify-generated-analysis.mjs :4
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/verify-module-boundaries.mjs :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/verify-no-llm-imports.mjs :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/verify-structured-responses.mjs :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/scripts/verify-workflow-yaml.mjs :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/cli.ts :3
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/communication/intake-service.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/communication/intake-store.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/communication/llm.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/comparison/workspace.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/config/env.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/core/content-cache.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/core/ignore.ts :11
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/core/io.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/core/security.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/diff/git.ts :9
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/evaluation/gold-cli.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/evaluation/gold-extraction.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/evaluation/gold.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/extractors/ast/php.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/extractors/ast/python.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/extractors/docs-llm.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/extractors/markdown-llm.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/extractors/markdown-paths.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/extractors/nl-llm.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/interfaces/a2a-history.ts :1
import { promises as fs, type Dirent } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/interfaces/a2a-task-store.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/interfaces/mcp-resources.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/llm/subllm.ts :2
import { constants as fsConstants, promises as fs, statSync } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/operations/artifact.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/pipeline/event-log-persistence.ts :3
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/pipeline/event-log.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/services/branch-snapshot.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/services/workspace-preflight.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/summary/summarizer.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/synthesis/code-change-plan.ts :2
import { existsSync, promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/synthesis/tasks-llm.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/synthesis/todo-patch.ts :2
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/tf/classifier.ts :1
import { promises as fs } from 'node:fs'; - fs autogrammar-todo2code-fe096a9/src/watch/watcher.ts :14
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/a2a-intake.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/a2a.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/ast-go.test.ts :6
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/ast-languages.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/ast-php.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/ast.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/cli-help.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/cli-intake.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/cli-summary.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/cli-todo.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/cli-watch.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/code-change-plan.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/communication-identity.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/communication-intake.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/communication-llm.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/communication.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/configuration.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/docs-llm-repair.test.ts :8
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/docs-source-dsl-apis.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/docs.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/extraction-cache.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/generated-analysis-roots.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/generated-analysis.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/generated-readme.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/generated-remediation-projections.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/git-branch-snapshot.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/git-workspace-preflight.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/git.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/gold-evaluation.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/grounded-contracts.test.ts :2
import { readFile } from 'node:fs/promises'; - fs (weak) autogrammar-todo2code-fe096a9/test/ignore.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/io.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/markdown.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/mcp.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/nl-llm.test.ts :5
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/openrouter.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/operation-plan.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/pipeline-event-log.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/pipeline.test.ts :4
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/python-runtime.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/runtime-cycle.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/sdk.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/security.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/semantic-reranker.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/subllm.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/tensorflow.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/todo-patch.test.ts :2
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/watch.test.ts :5
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/workflow-validation.test.ts :3
import { promises as fs } from 'node:fs'; - fs (weak) autogrammar-todo2code-fe096a9/test/workspace.test.ts :3
import { promises as fs } from 'node:fs';
shell / exec 35
- shell (weak) autogrammar-todo2code-fe096a9/scripts/research/audit-changelog-sample.mjs :3
import { execFileSync } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/scripts/verify-generated-analysis.mjs :3
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/cli.ts :2
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/comparison/workspace.ts :1
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/diff/git.ts :8
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/extractors/ast/external.ts :1
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/extractors/git.ts :1
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/llm/subllm.ts :1
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/pipeline/event-log-persistence.ts :1
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/semantic/reranker-llm.ts :1
import { execFile } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/services/branch-snapshot.ts :1
import { spawn } from 'node:child_process'; - shell autogrammar-todo2code-fe096a9/src/services/workspace-preflight.ts :1
import { spawn } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/ast-go.test.ts :5
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/ast-languages.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/ast-php.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/cli-help.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/cli-intake.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/cli-summary.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/cli-todo.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/cli-watch.test.ts :2
import { execFile, spawn } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/code-change-plan.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/communication-intake.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/communication.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/generated-analysis-roots.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/generated-analysis.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/generated-readme.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/git-branch-snapshot.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/git-workspace-preflight.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/git.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/pipeline.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/python-runtime.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/sdk.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/semantic-reranker.test.ts :2
import { execFile } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/workflow-validation.test.ts :2
import { execFile, spawn } from 'node:child_process'; - shell (weak) autogrammar-todo2code-fe096a9/test/workspace.test.ts :2
import { execFile } from 'node:child_process';
network 9
- net (weak) autogrammar-todo2code-fe096a9/examples/backend/src/server.ts :6
import { createServer, type IncomingMessage, type Server, type ServerResponse } from 'node:http'; - net (weak) autogrammar-todo2code-fe096a9/examples/frontend/src/api.ts :31
const response = await fetch(url.toString(), { headers: { accept: 'application/json' } }); - net autogrammar-todo2code-fe096a9/src/interfaces/a2a-card.ts :2
import type { IncomingMessage, ServerResponse } from 'node:http'; - net autogrammar-todo2code-fe096a9/src/interfaces/a2a.ts :2
import http, { type IncomingHttpHeaders, type IncomingMessage, type ServerResponse } from 'node:http'; - net autogrammar-todo2code-fe096a9/src/llm/openrouter.ts :96
const response = await fetch(`${transport.apiBase}/models`, { - net autogrammar-todo2code-fe096a9/src/web/diff-ui.ts :43
ery.set(key,value)}const response=await fetch('/api/runs?'+query.toString(),{headers:requestHeaders(false)});const payload=await response.json();if(!response.ok)throw new Error(typeof payload.error=== - net (weak) autogrammar-todo2code-fe096a9/test/a2a-intake.test.ts :4
import type { Server } from 'node:http'; - net (weak) autogrammar-todo2code-fe096a9/test/a2a.test.ts :3
import type { Server } from 'node:http'; - net (weak) autogrammar-todo2code-fe096a9/test/sdk.test.ts :4
import type { Server } from 'node:http';
secrets 2
- secrets (weak) autogrammar-todo2code-fe096a9/sdk/typescript/examples/basic.ts :14
const token = process.env.T2C_A2A_TOKEN ?? null; - secrets (weak) autogrammar-todo2code-fe096a9/test/subllm.test.ts :72
process.env.T2C_UNRELATED_SECRET = 'placeholder-not-forwarded';
tool registrations 28
- intake_command autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :14
- intake_query autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :20
- extract_nl autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :26
- extract_git autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :32
- extract_ast autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :36
- extract_config autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :39
- extract_markdown autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :42
- extract_docs autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :48
- extract_communication autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :53
- analyze_communication autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :59
- link autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :69
- diagnose autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :74
- summarize autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :77
- diff autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :83
- diff_files autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :96
- diff_git autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :106
- reality autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :115
- compare_workspace autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :122
- propose_todo autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :136
- render_todo autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :145
- apply_todo autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :157
- propose_code_change autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :166
- render_code_change autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :179
- propose_source_patch autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :186
- apply_source_patch autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :195
- close_code_change autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :203
- evaluate_code_change autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :221
- pipeline autogrammar-todo2code-fe096a9/src/interfaces/mcp-tools.ts :235
declared dependencies 7
- typescript@>=5.8.3 <7
- @types/node@>=20 <25
- proc-macro2@1
- quote@1
- serde@1
- serde_json@1
- syn@2