edict-lang 1.18.0 → 1.20.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/README.md +17 -7
- package/dist/browser-full.bundle.js +1 -1
- package/dist/browser.bundle.js +1 -1
- package/dist/codegen/deno-host-adapter.d.ts +41 -0
- package/dist/codegen/deno-host-adapter.d.ts.map +1 -0
- package/dist/codegen/deno-host-adapter.js +63 -0
- package/dist/codegen/deno-host-adapter.js.map +1 -0
- package/dist/deploy/cloudflare-api.d.ts +38 -0
- package/dist/deploy/cloudflare-api.d.ts.map +1 -0
- package/dist/deploy/cloudflare-api.js +95 -0
- package/dist/deploy/cloudflare-api.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/agent-guide.d.ts +12 -0
- package/dist/mcp/agent-guide.d.ts.map +1 -0
- package/dist/mcp/agent-guide.js +69 -0
- package/dist/mcp/agent-guide.js.map +1 -0
- package/dist/mcp/create-server.d.ts.map +1 -1
- package/dist/mcp/create-server.js +3 -0
- package/dist/mcp/create-server.js.map +1 -1
- package/dist/mcp/handlers.d.ts +16 -0
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +99 -6
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/resources/guide.d.ts +3 -0
- package/dist/mcp/resources/guide.d.ts.map +1 -0
- package/dist/mcp/resources/guide.js +18 -0
- package/dist/mcp/resources/guide.js.map +1 -0
- package/dist/mcp/resources/index.d.ts.map +1 -1
- package/dist/mcp/resources/index.js +2 -0
- package/dist/mcp/resources/index.js.map +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +2 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/invoke.d.ts +3 -0
- package/dist/mcp/tools/invoke.d.ts.map +1 -0
- package/dist/mcp/tools/invoke.js +27 -0
- package/dist/mcp/tools/invoke.js.map +1 -0
- package/dist/skills/memory.d.ts +68 -0
- package/dist/skills/memory.d.ts.map +1 -0
- package/dist/skills/memory.js +144 -0
- package/dist/skills/memory.js.map +1 -0
- package/examples/README.md +1 -0
- package/examples/edge-api-handler.edict.json +215 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -73,7 +73,7 @@ npx edict-lang # start MCP server
|
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
75
|
npm install
|
|
76
|
-
npm test #
|
|
76
|
+
npm test # 2414 tests across 129 files
|
|
77
77
|
npm run mcp # start MCP server (stdio transport)
|
|
78
78
|
```
|
|
79
79
|
|
|
@@ -137,7 +137,7 @@ See [docs/quickjs-feasibility-report.md](docs/quickjs-feasibility-report.md) for
|
|
|
137
137
|
|---|---|
|
|
138
138
|
| `edict_schema` | Returns the full AST JSON Schema — the spec for how to write programs |
|
|
139
139
|
| `edict_version` | Returns compiler version and capability info |
|
|
140
|
-
| `edict_examples` | Returns
|
|
140
|
+
| `edict_examples` | Returns 41 example programs as JSON ASTs (includes schema snippet) |
|
|
141
141
|
| `edict_validate` | Validates AST structure (field names, types, node kinds) |
|
|
142
142
|
| `edict_check` | Full pipeline: validate → resolve names → type check → effect check → verify contracts |
|
|
143
143
|
| `edict_compile` | Compiles a checked AST to WASM (returns base64-encoded binary) |
|
|
@@ -152,6 +152,11 @@ See [docs/quickjs-feasibility-report.md](docs/quickjs-feasibility-report.md) for
|
|
|
152
152
|
| `edict_import_skill` | Imports and executes a UASF skill package |
|
|
153
153
|
| `edict_generate_tests` | Generates tests from Z3-verified contracts |
|
|
154
154
|
| `edict_replay` | Records and replays deterministic execution traces |
|
|
155
|
+
| `edict_deploy` | Compiles and deploys an Edict program to edge runtimes (Cloudflare Workers) |
|
|
156
|
+
| `edict_invoke` | Invokes a deployed Edict WASM service via HTTP |
|
|
157
|
+
| `edict_invoke_skill` | Invokes a UASF skill package directly |
|
|
158
|
+
| `edict_package` | Packages a compiled program as a deployable skill bundle |
|
|
159
|
+
| `edict_support` | Returns diagnostics and environment info for troubleshooting |
|
|
155
160
|
|
|
156
161
|
### MCP Resources
|
|
157
162
|
|
|
@@ -162,6 +167,8 @@ See [docs/quickjs-feasibility-report.md](docs/quickjs-feasibility-report.md) for
|
|
|
162
167
|
| `edict://examples` | All example programs |
|
|
163
168
|
| `edict://errors` | Machine-readable error catalog |
|
|
164
169
|
| `edict://schema/patch` | JSON Schema for the AST patch protocol |
|
|
170
|
+
| `edict://guide` | Agent bootstrap guide for MCP-first onboarding |
|
|
171
|
+
| `edict://support` | Diagnostics and environment info |
|
|
165
172
|
|
|
166
173
|
## Example Program
|
|
167
174
|
|
|
@@ -235,9 +242,9 @@ src/
|
|
|
235
242
|
├── effects/ # Effect checking (call-graph propagation)
|
|
236
243
|
├── contracts/ # Contract verification (Z3/SMT integration)
|
|
237
244
|
├── codegen/ # WASM code generation (binaryen)
|
|
238
|
-
│ ├── codegen.ts #
|
|
239
|
-
│ ├── compile-expr.ts #
|
|
240
|
-
│ ├── compile-*.ts
|
|
245
|
+
│ ├── codegen.ts # IR → WASM module orchestration
|
|
246
|
+
│ ├── compile-ir-expr.ts # IR expression compilation
|
|
247
|
+
│ ├── compile-ir-*.ts # Specialized IR compilers (calls, data, match, scalars)
|
|
241
248
|
│ ├── runner.ts # WASM execution (Node.js WebAssembly API)
|
|
242
249
|
│ ├── host-adapter.ts # EdictHostAdapter interface + platform adapters
|
|
243
250
|
│ ├── closures.ts # Closure capture and compilation
|
|
@@ -245,18 +252,21 @@ src/
|
|
|
245
252
|
│ ├── recording-adapter.ts # Execution recording for replay
|
|
246
253
|
│ ├── replay-adapter.ts # Deterministic replay from recorded traces
|
|
247
254
|
│ └── string-table.ts # String interning for WASM memory
|
|
255
|
+
├── ir/ # Mid-level IR (lowering, optimization)
|
|
248
256
|
├── builtins/ # Builtin registry and domain-specific builtins
|
|
249
257
|
├── compact/ # Compact AST format (token-efficient for agents)
|
|
250
258
|
├── compose/ # Composable program fragments
|
|
259
|
+
├── deploy/ # Edge deployment scaffolding (Cloudflare Workers)
|
|
251
260
|
├── incremental/ # Incremental checking (dependency graph + diff)
|
|
252
261
|
├── lint/ # Non-blocking quality warnings
|
|
253
262
|
├── patch/ # Surgical AST patching by nodeId
|
|
254
263
|
├── migration/ # Schema version migration (auto-upgrade older ASTs)
|
|
264
|
+
├── skills/ # Skill packaging and invocation
|
|
255
265
|
├── mcp/ # MCP server (tools + resources + prompts)
|
|
256
266
|
└── errors/ # Structured error types
|
|
257
267
|
|
|
258
|
-
tests/ #
|
|
259
|
-
examples/ #
|
|
268
|
+
tests/ # 2414 tests across 129 files
|
|
269
|
+
examples/ # 41 example programs (⭐→⭐⭐⭐ difficulty in README)
|
|
260
270
|
schema/ # Auto-generated JSON Schema
|
|
261
271
|
```
|
|
262
272
|
|
package/dist/browser.bundle.js
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { EdictHostAdapter } from "./host-adapter.js";
|
|
2
|
+
/** Options for DenoHostAdapter construction. */
|
|
3
|
+
export interface DenoHostAdapterOptions {
|
|
4
|
+
/** Environment variable bindings. Lookups return "" for missing keys. */
|
|
5
|
+
envBindings?: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Deno Deploy runtime adapter.
|
|
9
|
+
*
|
|
10
|
+
* - Crypto: pure-JS SHA-256, MD5, HMAC (synchronous, no Web Crypto API)
|
|
11
|
+
* - HTTP: returns structured error (Deno fetch is async, incompatible with sync host imports)
|
|
12
|
+
* - File IO: returns structured error (Deno file APIs are async)
|
|
13
|
+
* - env: configurable via constructor envBindings (maps to Deno.env.get() pattern)
|
|
14
|
+
*
|
|
15
|
+
* This adapter is designed for use in generated Deno Deploy scripts where WASM
|
|
16
|
+
* host imports must be synchronous. All async-only operations return
|
|
17
|
+
* structured errors naming the constraint.
|
|
18
|
+
*/
|
|
19
|
+
export declare class DenoHostAdapter implements EdictHostAdapter {
|
|
20
|
+
private readonly envBindings;
|
|
21
|
+
constructor(options?: DenoHostAdapterOptions);
|
|
22
|
+
sha256(data: string): string;
|
|
23
|
+
md5(data: string): string;
|
|
24
|
+
hmac(algo: string, key: string, data: string): string;
|
|
25
|
+
fetch(_url: string, _method: string, _body?: string): {
|
|
26
|
+
ok: boolean;
|
|
27
|
+
data: string;
|
|
28
|
+
};
|
|
29
|
+
readFile(_path: string): {
|
|
30
|
+
ok: false;
|
|
31
|
+
error: string;
|
|
32
|
+
};
|
|
33
|
+
writeFile(_path: string, _content: string): {
|
|
34
|
+
ok: false;
|
|
35
|
+
error: string;
|
|
36
|
+
};
|
|
37
|
+
env(name: string): string;
|
|
38
|
+
args(): string[];
|
|
39
|
+
exit(code: number): never;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=deno-host-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deno-host-adapter.d.ts","sourceRoot":"","sources":["../../src/codegen/deno-host-adapter.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,gDAAgD;AAChD,MAAM,WAAW,sBAAsB;IACnC,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;gBAEzC,OAAO,CAAC,EAAE,sBAAsB;IAM5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAOrD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAOnF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAKrD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAKxE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzB,IAAI,IAAI,MAAM,EAAE;IAIhB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;CAG5B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Deno Deploy Host Adapter — edge runtime adapter for Deno Deploy environment
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Implements EdictHostAdapter for Deno Deploy:
|
|
5
|
+
// Crypto: pure-JS (./pure-crypto.ts) — sync, Web Crypto API is async on Deno
|
|
6
|
+
// HTTP: structured error (Deno fetch is async, unusable in sync host imports)
|
|
7
|
+
// IO: structured error (Deno.readFile is async)
|
|
8
|
+
// env: Deno.env.get() equivalent via configurable bindings
|
|
9
|
+
import { sha256Bytes, md5Bytes, hmacBytes, toHex } from "./pure-crypto.js";
|
|
10
|
+
const encoder = new TextEncoder();
|
|
11
|
+
/**
|
|
12
|
+
* Deno Deploy runtime adapter.
|
|
13
|
+
*
|
|
14
|
+
* - Crypto: pure-JS SHA-256, MD5, HMAC (synchronous, no Web Crypto API)
|
|
15
|
+
* - HTTP: returns structured error (Deno fetch is async, incompatible with sync host imports)
|
|
16
|
+
* - File IO: returns structured error (Deno file APIs are async)
|
|
17
|
+
* - env: configurable via constructor envBindings (maps to Deno.env.get() pattern)
|
|
18
|
+
*
|
|
19
|
+
* This adapter is designed for use in generated Deno Deploy scripts where WASM
|
|
20
|
+
* host imports must be synchronous. All async-only operations return
|
|
21
|
+
* structured errors naming the constraint.
|
|
22
|
+
*/
|
|
23
|
+
export class DenoHostAdapter {
|
|
24
|
+
envBindings;
|
|
25
|
+
constructor(options) {
|
|
26
|
+
this.envBindings = options?.envBindings ?? {};
|
|
27
|
+
}
|
|
28
|
+
// ── Crypto ──────────────────────────────────────────────────────────
|
|
29
|
+
sha256(data) {
|
|
30
|
+
return toHex(sha256Bytes(encoder.encode(data)));
|
|
31
|
+
}
|
|
32
|
+
md5(data) {
|
|
33
|
+
return toHex(md5Bytes(encoder.encode(data)));
|
|
34
|
+
}
|
|
35
|
+
hmac(algo, key, data) {
|
|
36
|
+
const result = hmacBytes(algo, encoder.encode(key), encoder.encode(data));
|
|
37
|
+
return result ? toHex(result) : "";
|
|
38
|
+
}
|
|
39
|
+
// ── HTTP ────────────────────────────────────────────────────────────
|
|
40
|
+
fetch(_url, _method, _body) {
|
|
41
|
+
// Deno fetch() is async — can't be called from synchronous WASM host imports.
|
|
42
|
+
return { ok: false, data: "fetch_not_available_sync" };
|
|
43
|
+
}
|
|
44
|
+
// ── IO ──────────────────────────────────────────────────────────────
|
|
45
|
+
readFile(_path) {
|
|
46
|
+
// Deno file APIs are async — can't be called from synchronous WASM host imports.
|
|
47
|
+
return { ok: false, error: "deno_fs_not_available_sync" };
|
|
48
|
+
}
|
|
49
|
+
writeFile(_path, _content) {
|
|
50
|
+
// Deno file APIs are async — can't be called from synchronous WASM host imports.
|
|
51
|
+
return { ok: false, error: "deno_fs_not_available_sync" };
|
|
52
|
+
}
|
|
53
|
+
env(name) {
|
|
54
|
+
return Object.hasOwn(this.envBindings, name) ? this.envBindings[name] : "";
|
|
55
|
+
}
|
|
56
|
+
args() {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
exit(code) {
|
|
60
|
+
throw new Error(`edict_exit:${code}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=deno-host-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deno-host-adapter.js","sourceRoot":"","sources":["../../src/codegen/deno-host-adapter.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,+CAA+C;AAC/C,+EAA+E;AAC/E,kFAAkF;AAClF,qDAAqD;AACrD,+DAA+D;AAG/D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAQlC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,eAAe;IACP,WAAW,CAAyB;IAErD,YAAY,OAAgC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,uEAAuE;IAEvE,MAAM,CAAC,IAAY;QACf,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,uEAAuE;IAEvE,KAAK,CAAC,IAAY,EAAE,OAAe,EAAE,KAAc;QAC/C,8EAA8E;QAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;IAC3D,CAAC;IAED,uEAAuE;IAEvE,QAAQ,CAAC,KAAa;QAClB,iFAAiF;QACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,QAAgB;QACrC,iFAAiF;QACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC9D,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,CAAC;IAED,IAAI;QACA,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACb,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;CACJ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { WorkerBundle } from "./scaffold.js";
|
|
2
|
+
/** Configuration for deploying a Worker to Cloudflare. */
|
|
3
|
+
export interface CloudflareDeployConfig {
|
|
4
|
+
/** Cloudflare account ID. */
|
|
5
|
+
accountId: string;
|
|
6
|
+
/** Cloudflare API token with Workers write permission. */
|
|
7
|
+
apiToken: string;
|
|
8
|
+
/** Worker script name — used in the deployment URL. */
|
|
9
|
+
scriptName: string;
|
|
10
|
+
/** Worker bundle from the scaffold generator. */
|
|
11
|
+
bundle: WorkerBundle;
|
|
12
|
+
/** Wrangler compatibility date (default: "2024-01-01"). */
|
|
13
|
+
compatibilityDate?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Result of a Cloudflare Workers deployment. */
|
|
16
|
+
export type CloudflareDeployResult = {
|
|
17
|
+
ok: true;
|
|
18
|
+
url: string;
|
|
19
|
+
scriptName: string;
|
|
20
|
+
} | {
|
|
21
|
+
ok: false;
|
|
22
|
+
error: string;
|
|
23
|
+
code: string;
|
|
24
|
+
responseBody?: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Deploy a Worker bundle to Cloudflare Workers via the Workers Script API.
|
|
28
|
+
*
|
|
29
|
+
* Uploads the bundle as a multipart form:
|
|
30
|
+
* - metadata part: JSON with `main_module` and `compatibility_date`
|
|
31
|
+
* - worker.js part: ES Module Worker entry point
|
|
32
|
+
* - program.wasm part: compiled WASM binary
|
|
33
|
+
*
|
|
34
|
+
* @param config - Deploy configuration including credentials and bundle
|
|
35
|
+
* @returns Structured deploy result with URL on success, error code on failure
|
|
36
|
+
*/
|
|
37
|
+
export declare function deployToCloudflare(config: CloudflareDeployConfig): Promise<CloudflareDeployResult>;
|
|
38
|
+
//# sourceMappingURL=cloudflare-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-api.d.ts","sourceRoot":"","sources":["../../src/deploy/cloudflare-api.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,0DAA0D;AAC1D,MAAM,WAAW,sBAAsB;IACnC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IACrB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,iDAAiD;AACjD,MAAM,MAAM,sBAAsB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAaxE;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,sBAAsB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAwFjC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Cloudflare Workers API Client — deploy WASM bundles to Cloudflare Workers
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Uses the Cloudflare Workers Script API to upload a Worker bundle generated
|
|
5
|
+
// by the scaffold generator. Zero external dependencies — Node fetch only.
|
|
6
|
+
//
|
|
7
|
+
// API reference: PUT /client/v4/accounts/{account_id}/workers/scripts/{script_name}
|
|
8
|
+
// Docs: https://developers.cloudflare.com/api/resources/workers/subresources/scripts/methods/update/
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Constants
|
|
11
|
+
// =============================================================================
|
|
12
|
+
const CF_API_BASE = "https://api.cloudflare.com/client/v4";
|
|
13
|
+
const DEPLOY_TIMEOUT_MS = 30_000;
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// Implementation
|
|
16
|
+
// =============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Deploy a Worker bundle to Cloudflare Workers via the Workers Script API.
|
|
19
|
+
*
|
|
20
|
+
* Uploads the bundle as a multipart form:
|
|
21
|
+
* - metadata part: JSON with `main_module` and `compatibility_date`
|
|
22
|
+
* - worker.js part: ES Module Worker entry point
|
|
23
|
+
* - program.wasm part: compiled WASM binary
|
|
24
|
+
*
|
|
25
|
+
* @param config - Deploy configuration including credentials and bundle
|
|
26
|
+
* @returns Structured deploy result with URL on success, error code on failure
|
|
27
|
+
*/
|
|
28
|
+
export async function deployToCloudflare(config) {
|
|
29
|
+
const { accountId, apiToken, scriptName, bundle, compatibilityDate } = config;
|
|
30
|
+
// Find worker.js and program.wasm in bundle
|
|
31
|
+
const workerFile = bundle.files.find(f => f.path === "worker.js");
|
|
32
|
+
const wasmFile = bundle.files.find(f => f.path === "program.wasm");
|
|
33
|
+
if (!workerFile || typeof workerFile.content !== "string") {
|
|
34
|
+
return { ok: false, error: "Bundle missing worker.js", code: "upload_failed" };
|
|
35
|
+
}
|
|
36
|
+
if (!wasmFile || !(wasmFile.content instanceof Uint8Array)) {
|
|
37
|
+
return { ok: false, error: "Bundle missing program.wasm", code: "upload_failed" };
|
|
38
|
+
}
|
|
39
|
+
// Build multipart form data
|
|
40
|
+
const formData = new FormData();
|
|
41
|
+
// Metadata part — tells Cloudflare which file is the main module
|
|
42
|
+
const metadata = {
|
|
43
|
+
main_module: "worker.js",
|
|
44
|
+
compatibility_date: compatibilityDate ?? "2024-01-01",
|
|
45
|
+
};
|
|
46
|
+
formData.append("metadata", new Blob([JSON.stringify(metadata)], { type: "application/json" }));
|
|
47
|
+
// Worker.js as ES module
|
|
48
|
+
formData.append("worker.js", new Blob([workerFile.content], { type: "application/javascript+module" }), "worker.js");
|
|
49
|
+
// program.wasm as compiled WASM module
|
|
50
|
+
const wasmBytes = new Uint8Array(wasmFile.content);
|
|
51
|
+
formData.append("program.wasm", new Blob([wasmBytes], { type: "application/wasm" }), "program.wasm");
|
|
52
|
+
// Upload via Workers Script API
|
|
53
|
+
const url = `${CF_API_BASE}/accounts/${accountId}/workers/scripts/${scriptName}`;
|
|
54
|
+
try {
|
|
55
|
+
const response = await fetch(url, {
|
|
56
|
+
method: "PUT",
|
|
57
|
+
headers: {
|
|
58
|
+
Authorization: `Bearer ${apiToken}`,
|
|
59
|
+
},
|
|
60
|
+
body: formData,
|
|
61
|
+
signal: AbortSignal.timeout(DEPLOY_TIMEOUT_MS),
|
|
62
|
+
});
|
|
63
|
+
const responseBody = await response.text();
|
|
64
|
+
if (response.ok) {
|
|
65
|
+
return {
|
|
66
|
+
ok: true,
|
|
67
|
+
url: `https://${scriptName}.workers.dev`,
|
|
68
|
+
scriptName,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
ok: false,
|
|
73
|
+
error: `Cloudflare API returned ${response.status}`,
|
|
74
|
+
code: "api_error",
|
|
75
|
+
responseBody,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
// Timeout detection
|
|
80
|
+
if (err instanceof DOMException && (err.name === "TimeoutError" || err.name === "AbortError")) {
|
|
81
|
+
return {
|
|
82
|
+
ok: false,
|
|
83
|
+
error: `Deploy timed out after ${DEPLOY_TIMEOUT_MS}ms`,
|
|
84
|
+
code: "api_timeout",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
88
|
+
return {
|
|
89
|
+
ok: false,
|
|
90
|
+
error: `Deploy failed: ${message}`,
|
|
91
|
+
code: "upload_failed",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=cloudflare-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-api.js","sourceRoot":"","sources":["../../src/deploy/cloudflare-api.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -38,6 +38,8 @@ export { lowerModule } from "./ir/lower.js";
|
|
|
38
38
|
export { optimize } from "./ir/optimize.js";
|
|
39
39
|
export { generateWorkerScaffold, getHostBuiltinNames } from "./deploy/scaffold.js";
|
|
40
40
|
export type { WorkerConfig, WorkerBundle, WorkerBundleFile, ScaffoldResult } from "./deploy/scaffold.js";
|
|
41
|
+
export { deployToCloudflare } from "./deploy/cloudflare-api.js";
|
|
42
|
+
export type { CloudflareDeployConfig, CloudflareDeployResult } from "./deploy/cloudflare-api.js";
|
|
41
43
|
export { check } from "./check.js";
|
|
42
44
|
export type { CheckResult } from "./check.js";
|
|
43
45
|
export { checkBrowser } from "./check-browser.js";
|
|
@@ -63,6 +65,8 @@ export { NodeHostAdapter } from "./codegen/node-host-adapter.js";
|
|
|
63
65
|
export { BrowserHostAdapter } from "./codegen/browser-host-adapter.js";
|
|
64
66
|
export { CloudflareHostAdapter } from "./codegen/cloudflare-host-adapter.js";
|
|
65
67
|
export type { CloudflareHostAdapterOptions } from "./codegen/cloudflare-host-adapter.js";
|
|
68
|
+
export { DenoHostAdapter } from "./codegen/deno-host-adapter.js";
|
|
69
|
+
export type { DenoHostAdapterOptions } from "./codegen/deno-host-adapter.js";
|
|
66
70
|
export { EdictOomError } from "./builtins/host-helpers.js";
|
|
67
71
|
export { buildErrorCatalog } from "./errors/error-catalog.js";
|
|
68
72
|
export type { ErrorCatalog, ErrorCatalogEntry } from "./errors/error-catalog.js";
|
|
@@ -90,6 +94,8 @@ export { migrateToLatest, applyMigration, CURRENT_SCHEMA_VERSION, MINIMUM_SCHEMA
|
|
|
90
94
|
export type { Migration, MigrationOp, MigrationResult, MigrationSuccess, MigrationFailure } from "./migration/migrate.js";
|
|
91
95
|
export { packageSkill, typeToString } from "./skills/package.js";
|
|
92
96
|
export { invokeSkill } from "./skills/invoke.js";
|
|
97
|
+
export { SkillMemory } from "./skills/memory.js";
|
|
98
|
+
export type { SkillSearchResult } from "./skills/memory.js";
|
|
93
99
|
export type { SkillPackage, SkillMetadata, PackageSkillInput, PackageSkillResult, PackageSkillSuccess, PackageSkillFailure, InvokeSkillResult, } from "./skills/types.js";
|
|
94
100
|
export { countIRNodes, irExprKindLabel } from "./ir/types.js";
|
|
95
101
|
export type { IRModule, IRImport, IRFunction, IRParam, IRClosureVar, IRConstant, IRRecordDef, IRFieldDef, IREnumDef, IRVariantDef, IRExpr, IRLiteral, IRIdent, IRIdentScope, IRBinop, IRUnop, IRCall, IRCallKind, IRIf, IRLet, IRBlock, IRMatch, IRMatchArm, IRArray, IRTuple, IRRecordExpr, IREnumConstructor, IRFieldInit, IRAccess, IRLambdaRef, IRStringInterp, IRStringInterpPart, } from "./ir/types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxE,YAAY,EACR,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAK9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAKjF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC3G,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAClG,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAK9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK5C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -51,6 +51,7 @@ export { optimize } from "./ir/optimize.js";
|
|
|
51
51
|
// Deploy: Worker scaffold generation for edge runtimes
|
|
52
52
|
// ---------------------------------------------------------------------------
|
|
53
53
|
export { generateWorkerScaffold, getHostBuiltinNames } from "./deploy/scaffold.js";
|
|
54
|
+
export { deployToCloudflare } from "./deploy/cloudflare-api.js";
|
|
54
55
|
// ---------------------------------------------------------------------------
|
|
55
56
|
// Full Pipeline: validate → resolve → typeCheck → effectCheck → contractVerify
|
|
56
57
|
// ---------------------------------------------------------------------------
|
|
@@ -99,6 +100,7 @@ export { BUILTIN_FUNCTIONS, isBuiltin, getBuiltin } from "./builtins/builtins.js
|
|
|
99
100
|
export { NodeHostAdapter } from "./codegen/node-host-adapter.js";
|
|
100
101
|
export { BrowserHostAdapter } from "./codegen/browser-host-adapter.js";
|
|
101
102
|
export { CloudflareHostAdapter } from "./codegen/cloudflare-host-adapter.js";
|
|
103
|
+
export { DenoHostAdapter } from "./codegen/deno-host-adapter.js";
|
|
102
104
|
export { EdictOomError } from "./builtins/host-helpers.js";
|
|
103
105
|
// ---------------------------------------------------------------------------
|
|
104
106
|
// Error Catalog: machine-readable registry of all error types with examples
|
|
@@ -148,6 +150,7 @@ export { migrateToLatest, applyMigration, CURRENT_SCHEMA_VERSION, MINIMUM_SCHEMA
|
|
|
148
150
|
// ---------------------------------------------------------------------------
|
|
149
151
|
export { packageSkill, typeToString } from "./skills/package.js";
|
|
150
152
|
export { invokeSkill } from "./skills/invoke.js";
|
|
153
|
+
export { SkillMemory } from "./skills/memory.js";
|
|
151
154
|
// ---------------------------------------------------------------------------
|
|
152
155
|
// Mid-Level IR: codegen-friendly representation between AST and WASM
|
|
153
156
|
// ---------------------------------------------------------------------------
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAC9E,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAOxE,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE9E,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvE,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAA8B,MAAM,uBAAuB,CAAC;AAE3G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAElG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAC9E,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAOxE,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE9E,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvE,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAA8B,MAAM,uBAAuB,CAAC;AAE3G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAElG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAC9E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4DlD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA6E3F,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAC9E,OAAO;AACH,UAAU;AACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB;AAClB,UAAU;AACV,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,mBAAmB;AACnB,UAAU;AACV,eAAe,EACf,YAAY;AACZ,UAAU;AACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB;AAClB,eAAe;AACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB;AACrB,uBAAuB;AACvB,kBAAkB;AAClB,qBAAqB;AACrB,sBAAsB,EACtB,kBAAkB;AAClB,sBAAsB;AACtB,cAAc,EACd,gBAAgB,EAChB,mBAAmB;AACnB,mBAAmB;AACnB,eAAe,EACf,wBAAwB;AACxB,kBAAkB;AAClB,0BAA0B;AAC1B,cAAc;AACd,WAAW,EACX,eAAe,GAClB,MAAM,+BAA+B,CAAC;AAEvC,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAO/C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAM7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMlF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzG,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AActC,OAAO,EACH,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,8EAA8E;AAC9E,iEAAiE;AACjE,8EAA8E;AAC9E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG7I,8EAA8E;AAC9E,kDAAkD;AAClD,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYjD,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAoC9D,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAC9E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const EDICT_INSTRUCTIONS: string;
|
|
2
|
+
export interface AgentGuide {
|
|
3
|
+
whatIsEdict: string;
|
|
4
|
+
workflow: string[];
|
|
5
|
+
template: unknown;
|
|
6
|
+
rules: string[];
|
|
7
|
+
errorRecovery: string[];
|
|
8
|
+
builtins: string[];
|
|
9
|
+
toolReference: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildAgentGuide(): AgentGuide;
|
|
12
|
+
//# sourceMappingURL=agent-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../../src/mcp/agent-guide.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,kBAAkB,QAIuE,CAAC;AAMvG,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAID,wBAAgB,eAAe,IAAI,UAAU,CAwD5C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// Agent Bootstrap Guide — structured onboarding for MCP-only agents
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Provides the MCP `instructions` string and a full agent guide containing
|
|
5
|
+
// workflow, template, rules, error recovery, builtins, and tool reference.
|
|
6
|
+
// Designed for ≤ 3K tokens (~12K chars JSON).
|
|
7
|
+
import { readFileSync } from "node:fs";
|
|
8
|
+
import { resolve, dirname } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
import { BUILTIN_FUNCTIONS } from "../builtins/builtins.js";
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const projectRoot = resolve(__dirname, "..", "..");
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// MCP Server Instructions — short bootstrap hint (~200 tokens)
|
|
15
|
+
// =============================================================================
|
|
16
|
+
export const EDICT_INSTRUCTIONS = "Edict is a programming language for AI agents. Programs are JSON ASTs, not text. " +
|
|
17
|
+
"Call edict_schema(format: 'agent') ONCE to bootstrap — it returns the schema, builtins, effects, compact format maps, and an agent guide. " +
|
|
18
|
+
"Then: write your program as a JSON AST → call edict_check → fix errors using the structured error response → call edict_compile → call edict_run. " +
|
|
19
|
+
"NEVER re-fetch schema or examples within the same session. Cache the response from edict_schema.";
|
|
20
|
+
let cachedGuide = null;
|
|
21
|
+
export function buildAgentGuide() {
|
|
22
|
+
if (cachedGuide)
|
|
23
|
+
return cachedGuide;
|
|
24
|
+
// Load hello-world template from examples (auto-updates if example changes)
|
|
25
|
+
const templatePath = resolve(projectRoot, "examples", "hello.edict.json");
|
|
26
|
+
const template = JSON.parse(readFileSync(templatePath, "utf-8"));
|
|
27
|
+
cachedGuide = {
|
|
28
|
+
whatIsEdict: "Edict programs are JSON ASTs, not text. " +
|
|
29
|
+
"The compiler validates, type-checks, verifies contracts via Z3, and compiles to WebAssembly.",
|
|
30
|
+
workflow: [
|
|
31
|
+
"1. Call edict_schema(format: 'agent') ONCE — cache the response",
|
|
32
|
+
"2. Write your program as a JSON AST conforming to the schema",
|
|
33
|
+
"3. Call edict_check — if errors, read the structured error and fix your AST",
|
|
34
|
+
"4. Call edict_compile to get a WASM binary (base64)",
|
|
35
|
+
"5. Call edict_run with the WASM binary to execute",
|
|
36
|
+
"6. NEVER re-fetch schema or examples — use your cached response",
|
|
37
|
+
],
|
|
38
|
+
template,
|
|
39
|
+
rules: [
|
|
40
|
+
"Every AST node needs a unique 'id' field (convention: {kind}-{name}-{NNN}, e.g. 'fn-main-001')",
|
|
41
|
+
"Every module needs a 'main' function with returnType { kind: 'basic', name: 'Int' }",
|
|
42
|
+
"Functions calling 'print' or other IO builtins need effects: ['io']",
|
|
43
|
+
"Enum variants need fields: [] even when they carry no data",
|
|
44
|
+
"Use compact format (k, i, n instead of kind, id, name) to save tokens",
|
|
45
|
+
"The module must have kind: 'module', id, name, imports: [], and definitions: [...]",
|
|
46
|
+
],
|
|
47
|
+
errorRecovery: [
|
|
48
|
+
"Read the 'error' field — it tells you exactly what went wrong (e.g. 'type_mismatch', 'undefined_reference')",
|
|
49
|
+
"Check 'suggestion' or 'candidates' — they contain concrete fixes or similar valid names ranked by relevance",
|
|
50
|
+
"Check 'validKinds' — if present, it lists all valid node kind values you can use",
|
|
51
|
+
],
|
|
52
|
+
builtins: Array.from(BUILTIN_FUNCTIONS.keys()),
|
|
53
|
+
toolReference: {
|
|
54
|
+
edict_schema: "Get the JSON Schema defining valid AST programs. Use format 'agent' for one-call bootstrapping.",
|
|
55
|
+
edict_check: "Full pipeline check: validate + resolve names + type-check + effect-check + verify contracts. Use this before compile.",
|
|
56
|
+
edict_compile: "Compile a valid AST to WebAssembly (base64). Runs full check first.",
|
|
57
|
+
edict_run: "Execute a compiled WASM binary. Returns output and exit code.",
|
|
58
|
+
edict_validate: "Schema validation only (no type/effect checking). Use edict_check instead for full checking.",
|
|
59
|
+
edict_patch: "Apply targeted AST patches by nodeId — fix specific nodes without rewriting the whole AST.",
|
|
60
|
+
edict_debug: "Compile and run with step-level tracing. Returns call stack and crash location if applicable.",
|
|
61
|
+
edict_examples: "Get all example programs as AST JSON. Includes schema snippet for bootstrapping.",
|
|
62
|
+
edict_errors: "Machine-readable catalog of all error types the compiler can produce.",
|
|
63
|
+
edict_explain: "Explain a structured error — returns pipeline stage, cause, and repair strategy.",
|
|
64
|
+
edict_lint: "Non-blocking quality warnings (unused variables, naming conventions, etc.).",
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
return cachedGuide;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=agent-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../../src/mcp/agent-guide.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oEAAoE;AACpE,gFAAgF;AAChF,2EAA2E;AAC3E,2EAA2E;AAC3E,8CAA8C;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEnD,gFAAgF;AAChF,+DAA+D;AAC/D,gFAAgF;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAC3B,mFAAmF;IACnF,4IAA4I;IAC5I,oJAAoJ;IACpJ,kGAAkG,CAAC;AAgBvG,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C,MAAM,UAAU,eAAe;IAC3B,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,4EAA4E;IAC5E,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjE,WAAW,GAAG;QACV,WAAW,EACP,0CAA0C;YAC1C,8FAA8F;QAElG,QAAQ,EAAE;YACN,iEAAiE;YACjE,8DAA8D;YAC9D,6EAA6E;YAC7E,qDAAqD;YACrD,mDAAmD;YACnD,iEAAiE;SACpE;QAED,QAAQ;QAER,KAAK,EAAE;YACH,gGAAgG;YAChG,qFAAqF;YACrF,qEAAqE;YACrE,4DAA4D;YAC5D,uEAAuE;YACvE,oFAAoF;SACvF;QAED,aAAa,EAAE;YACX,6GAA6G;YAC7G,6GAA6G;YAC7G,kFAAkF;SACrF;QAED,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAE9C,aAAa,EAAE;YACX,YAAY,EAAE,iGAAiG;YAC/G,WAAW,EAAE,wHAAwH;YACrI,aAAa,EAAE,qEAAqE;YACpF,SAAS,EAAE,+DAA+D;YAC1E,cAAc,EAAE,8FAA8F;YAC9G,WAAW,EAAE,4FAA4F;YACzG,WAAW,EAAE,+FAA+F;YAC5G,cAAc,EAAE,kFAAkF;YAClG,YAAY,EAAE,uEAAuE;YACrF,aAAa,EAAE,kFAAkF;YACjG,UAAU,EAAE,6EAA6E;SAC5F;KACJ,CAAC;IAEF,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAepE,wBAAgB,iBAAiB,IAAI,SAAS,CA2C7C"}
|
|
@@ -10,6 +10,7 @@ import { createRequire } from "node:module";
|
|
|
10
10
|
import { ALL_TOOLS } from "./tools/index.js";
|
|
11
11
|
import { ALL_RESOURCES } from "./resources/index.js";
|
|
12
12
|
import { ALL_PROMPTS } from "./prompt-defs/index.js";
|
|
13
|
+
import { EDICT_INSTRUCTIONS } from "./agent-guide.js";
|
|
13
14
|
const require = createRequire(import.meta.url);
|
|
14
15
|
const { version } = require("../../package.json");
|
|
15
16
|
// =============================================================================
|
|
@@ -19,6 +20,8 @@ export function createEdictServer() {
|
|
|
19
20
|
const server = new McpServer({
|
|
20
21
|
name: "edict-compiler",
|
|
21
22
|
version,
|
|
23
|
+
}, {
|
|
24
|
+
instructions: EDICT_INSTRUCTIONS,
|
|
22
25
|
});
|
|
23
26
|
// -------------------------------------------------------------------------
|
|
24
27
|
// Tools — auto-register from declarative definitions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6DAA6D;AAC7D,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,sDAAsD;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/mcp/create-server.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6DAA6D;AAC7D,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,sDAAsD;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEzE,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,MAAM,UAAU,iBAAiB;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QACzB,IAAI,EAAE,gBAAgB;QACtB,OAAO;KACV,EAAE;QACC,YAAY,EAAE,kBAAkB;KACnC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,qDAAqD;IACrD,4EAA4E;IAC5E,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,8DAA8D;YAC9D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAc,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACJ,8DAA8D;YAC9D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAc,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,yDAAyD;IACzD,4EAA4E;IAC5E,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,CAAC,QAAQ,CACX,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,GAAG,EACZ,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;QAClE,8DAA8D;QAC9D,QAAQ,CAAC,OAAc,CAC1B,CAAC;IACN,CAAC;IAED,4EAA4E;IAC5E,uDAAuD;IACvD,4EAA4E;IAC5E,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QAC/B,8DAA8D;QAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAc,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
package/dist/mcp/handlers.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export interface ExamplesResult {
|
|
|
18
18
|
ast: unknown;
|
|
19
19
|
isMultiModule?: boolean;
|
|
20
20
|
}[];
|
|
21
|
+
schemaSnippet: unknown;
|
|
21
22
|
}
|
|
22
23
|
export interface ValidateResult {
|
|
23
24
|
ok: boolean;
|
|
@@ -192,6 +193,21 @@ export interface DeployResult {
|
|
|
192
193
|
url?: string;
|
|
193
194
|
status?: string;
|
|
194
195
|
errors?: StructuredError[];
|
|
196
|
+
/** Env vars required for live deployment (set when falling back to bundle-only). */
|
|
197
|
+
credentialsRequired?: string[];
|
|
195
198
|
}
|
|
196
199
|
export declare function handleDeploy(ast: unknown, target: string, config?: DeployConfig): Promise<DeployResult>;
|
|
200
|
+
export interface InvokeResult {
|
|
201
|
+
ok: boolean;
|
|
202
|
+
output?: string;
|
|
203
|
+
status?: number;
|
|
204
|
+
durationMs?: number;
|
|
205
|
+
error?: string;
|
|
206
|
+
errorCode?: "unreachable" | "timeout" | "invalid_response" | "http_error";
|
|
207
|
+
}
|
|
208
|
+
export declare function handleInvoke(url: string, input?: string, options?: {
|
|
209
|
+
timeoutMs?: number;
|
|
210
|
+
method?: string;
|
|
211
|
+
headers?: Record<string, string>;
|
|
212
|
+
}): Promise<InvokeResult>;
|
|
197
213
|
//# sourceMappingURL=handlers.d.ts.map
|