A programming language designed for AI agents. No parser, no syntax — agents produce AST directly as JSON. Statically typed, effect-tracked, contract-verified, compiled to WASM via MCP.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×2 in Sowiedu/Edict
tools
-
edict_check
Full pipeline: validate → resolve names → type check → effect check → verify contracts
-
edict_compile
Compiles a checked AST to WASM (returns base64-encoded binary)
-
edict_compose
Combines composable program fragments into a module
-
edict_debug
Execution tracing and crash diagnostics
-
edict_deploy
Compiles and deploys an Edict program to edge runtimes (Cloudflare Workers)
-
edict_errors
Returns machine-readable catalog of all error types
-
edict_examples
Returns 41 example programs as JSON ASTs (includes schema snippet)
-
edict_explain
Explains AST nodes, errors, or compiler behavior
-
edict_export
Packages a program as a UASF portable skill
-
edict_generate_tests
Generates tests from Z3-verified contracts
-
edict_import_skill
Imports and executes a UASF skill package
-
edict_invoke
Invokes a deployed Edict WASM service via HTTP
-
edict_invoke_skill
Invokes a UASF skill package directly
-
edict_lint
Runs non-blocking quality analysis and returns warnings
-
edict_package
Packages a compiled program as a deployable skill bundle
-
edict_patch
Applies targeted AST patches by nodeId and re-checks
-
edict_replay
Records and replays deterministic execution traces
-
edict_run
Executes a compiled WASM binary, returns output and exit code
-
edict_schema
Returns the full AST JSON Schema — the spec for how to write programs
-
edict_support
Returns diagnostics and environment info for troubleshooting
-
edict_validate
Validates AST structure (field names, types, node kinds)
-
edict_version
Returns compiler version and capability info
analyzed analyzer v18 · 3h ago
skills & prompt files 5
- skillSowiedu-Edict-519d932/.agent/skills/edict-compiler-dev/SKILL.md
- skillSowiedu-Edict-519d932/.agent/skills/edict-program-writer/SKILL.md
- skillSowiedu-Edict-519d932/.agent/skills/edict-testing/SKILL.md
- skillSowiedu-Edict-519d932/.agent/skills/skill-creator/SKILL.md
- agent-rulesSowiedu-Edict-519d932/AGENTS.md
danger signals2
- dynamic code executioneval()Sowiedu-Edict-519d932/src/contracts/solver-context.ts:64
eval(expr: any, completion: boolean): any; - dynamic code executioneval()Sowiedu-Edict-519d932/src/contracts/solver/solver.ts:318
eval(expr: any, _completion: boolean): any {
last analysis: fetch-failed · showing evidence from the last successful analysis (1d ago)
filesystem 17
- fs Sowiedu-Edict-519d932/scripts/benchmark.ts :17
import { readdirSync, readFileSync, writeFileSync, existsSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/build-browser.ts :11
import { readFileSync, copyFileSync, existsSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/build-quickjs-bundle.ts :17
import { readFileSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/contract-metrics.ts :12
import { writeFileSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/diff-schemas.ts :11
import { readFileSync, readdirSync, writeFileSync, existsSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/export-examples.ts :1
import { readdirSync, readFileSync, writeFileSync, mkdirSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/generate-jsdoc.ts :18
import * as fs from "fs"; - fs Sowiedu-Edict-519d932/scripts/generate-schema.ts :8
import { mkdirSync, writeFileSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/quickjs-feasibility.ts :15
import { readFileSync, statSync, writeFileSync, existsSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/run-hello.ts :2
import fs from "fs"; - fs Sowiedu-Edict-519d932/scripts/snapshot-schema.ts :9
import { copyFileSync, mkdirSync, existsSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/sync-server-json.ts :8
import { readFileSync, writeFileSync } from "node:fs"; - fs Sowiedu-Edict-519d932/scripts/validate-examples.ts :2
import { readdirSync, readFileSync } from 'fs'; - fs Sowiedu-Edict-519d932/src/codegen/node-host-adapter.ts :12
import { readFileSync, writeFileSync } from "node:fs"; - fs Sowiedu-Edict-519d932/src/mcp/agent-guide.ts :8
import { readFileSync } from "node:fs"; - fs Sowiedu-Edict-519d932/src/mcp/handlers/schema.ts :5
import { readFileSync, readdirSync } from "node:fs"; - fs Sowiedu-Edict-519d932/src/quickjs/edict-quickjs.ts :22
import { readFileSync } from "node:fs";
shell / exec 4
- shell Sowiedu-Edict-519d932/scripts/build-browser.ts :96
"node:child_process", - shell Sowiedu-Edict-519d932/scripts/build-quickjs-bundle.ts :29
"node:child_process", - shell Sowiedu-Edict-519d932/scripts/contract-metrics.ts :11
import { execSync } from "node:child_process"; - shell Sowiedu-Edict-519d932/src/codegen/node-host-adapter.ts :6
// - node:child_process (execFileSync for sync HTTP)
network 10
- net Sowiedu-Edict-519d932/src/builtins/domains/http.ts :36
return makeResult(ctx, ctx.adapter.fetch(url, method, bodyStr)); - net Sowiedu-Edict-519d932/src/codegen/browser-host-adapter.ts :66
fetch(url: string, method: string, body?: string): { ok: boolean; data: string } { - net Sowiedu-Edict-519d932/src/codegen/cloudflare-host-adapter.ts :56
fetch(_url: string, _method: string, _body?: string): { ok: boolean; data: string } { - net Sowiedu-Edict-519d932/src/codegen/deno-host-adapter.ts :57
fetch(_url: string, _method: string, _body?: string): { ok: boolean; data: string } { - net Sowiedu-Edict-519d932/src/codegen/host-adapter.ts :30
fetch(url: string, method: string, body?: string): { ok: boolean; data: string }; - net Sowiedu-Edict-519d932/src/codegen/node-host-adapter.ts :51
const res = await fetch(url, opts); - net Sowiedu-Edict-519d932/src/codegen/replay-adapter.ts :54
fetch(_url: string, _method: string, _body?: string): { ok: boolean; data: string } { - net Sowiedu-Edict-519d932/src/deploy/cloudflare-api.ts :105
const response = await fetch(url, { - net Sowiedu-Edict-519d932/src/deploy/scaffold.ts :106
async fetch(request, env) { - net Sowiedu-Edict-519d932/src/mcp/handlers/invoke.ts :46
const response = await fetch(url, fetchOptions);
secrets 1
- secrets Sowiedu-Edict-519d932/src/mcp/handlers/deploy.ts :120
const cfApiToken = process.env.CLOUDFLARE_API_TOKEN;
declared dependencies 13
- @modelcontextprotocol/sdk@^1.27.1
- z3-solver@^4.15.8
- zod@^4.3.6
- @types/express@^5.0.6
- @vitest/coverage-v8@^4.0.18
- esbuild@^0.28.0
- fast-check@^4.5.3
- miniflare@^4.20260312.0
- quickjs-emscripten@^0.32.0
- tsx@^4.19.0
- typescript@^6.0.2
- typescript-json-schema@^0.67.1
- vitest@^4.0.18