@cef-ai/cli 1.0.0 → 1.2.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 +28 -11
- package/dist/build/esbuild-plugin.d.ts +19 -27
- package/dist/build/esbuild-plugin.d.ts.map +1 -1
- package/dist/build/esbuild-plugin.js +19 -48
- package/dist/build/esbuild-plugin.js.map +1 -1
- package/dist/build/manifest.d.ts +23 -19
- package/dist/build/manifest.d.ts.map +1 -1
- package/dist/build/manifest.js +27 -7
- package/dist/build/manifest.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +81 -37
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/inspect.d.ts +11 -8
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +26 -39
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/typegen.d.ts.map +1 -1
- package/dist/commands/typegen.js +5 -2
- package/dist/commands/typegen.js.map +1 -1
- package/dist/typegen/augment.d.ts +3 -5
- package/dist/typegen/augment.d.ts.map +1 -1
- package/dist/typegen/augment.js +24 -12
- package/dist/typegen/augment.js.map +1 -1
- package/dist/typegen/fetch.d.ts +10 -1
- package/dist/typegen/fetch.d.ts.map +1 -1
- package/dist/typegen/fetch.js +17 -5
- package/dist/typegen/fetch.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# @cef-ai/cli
|
|
2
2
|
|
|
3
3
|
`cef` — build, typegen, and inspect agents from the command line. Mirrors
|
|
4
|
-
the
|
|
5
|
-
carry the routing table the
|
|
4
|
+
the Agent Runtime contract (ADR-001): bundles install a flat handler map at
|
|
5
|
+
`globalThis.__handlers`, manifests carry the routing table the orchestrator
|
|
6
|
+
reads.
|
|
6
7
|
|
|
7
8
|
## Install
|
|
8
9
|
|
|
@@ -17,9 +18,9 @@ invoke it via `pnpm exec cef <subcommand>`.
|
|
|
17
18
|
|
|
18
19
|
| Subcommand | Status | Description |
|
|
19
20
|
| --- | --- | --- |
|
|
20
|
-
| `cef build` | shipped | Lint the agent entry, bundle with esbuild (
|
|
21
|
+
| `cef build` | shipped | Lint the agent entry, bundle with esbuild (the bundle imports the SDK runtime shims and installs `globalThis.__handlers`), emit `dist/<agentId>/{bundle.js,manifest.json}`. |
|
|
21
22
|
| `cef typegen` | shipped | Generate `.cef/generated.d.ts` (declaration-merged `KnownEventTypes`) and refresh `cef.lock.json`. |
|
|
22
|
-
| `cef inspect <agentDir>` | shipped | Read a built `manifest.json`, run the bundle in `node:vm`, and report the
|
|
23
|
+
| `cef inspect <agentDir>` | shipped | Read a built `manifest.json`, run the bundle in `node:vm`, and report the handler names exposed on `__handlers` plus any routing targets the manifest references but the bundle doesn't expose. |
|
|
23
24
|
| `cef test` | stub | Placeholder — use `vitest` directly with `@cef-ai/testing` until the integrated runner lands. |
|
|
24
25
|
| `cef publish` | stub | Placeholder — pending the Marketplace API. |
|
|
25
26
|
| `cef dev` | stub | Placeholder — pending the packaged platform image. |
|
|
@@ -29,12 +30,26 @@ invoke it via `pnpm exec cef <subcommand>`.
|
|
|
29
30
|
```
|
|
30
31
|
dist/
|
|
31
32
|
<agentId>/
|
|
32
|
-
bundle.js # IIFE that
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
#
|
|
33
|
+
bundle.js # IIFE that installs globalThis.__handlers — a flat map
|
|
34
|
+
# of handler functions the runtime dispatches as
|
|
35
|
+
# __handlers[name](event, context). Event handlers are
|
|
36
|
+
# keyed "<engagementId>::<method>"; lifecycle hooks under
|
|
37
|
+
# the fixed keys onStart / onClose.
|
|
38
|
+
manifest.json # AgentManifest body — bundle embedded inline; each
|
|
39
|
+
# engagement carries handles{eventType -> handlerName}
|
|
40
|
+
# (namespaced) and hooks[] ("start"/"close"). Identity /
|
|
41
|
+
# signature fields are blank until `cef publish` signs.
|
|
36
42
|
```
|
|
37
43
|
|
|
44
|
+
The handler-name namespacing (`<engagementId>::<method>`) keeps the flat
|
|
45
|
+
`__handlers` map collision-free when multiple engagements declare a method
|
|
46
|
+
of the same name; the orchestrator returns these strings verbatim from
|
|
47
|
+
`HandlerFor`, so AR looks them up directly. Lifecycle hooks are NOT
|
|
48
|
+
namespaced — the orchestrator hardcodes `onStart` / `onClose` — so a method
|
|
49
|
+
name may be reused as an event handler across engagements, but only one
|
|
50
|
+
engagement per agent may own each lifecycle hook (`cef build` errors on a
|
|
51
|
+
collision).
|
|
52
|
+
|
|
38
53
|
`cef typegen` reads `cef.config.ts` (and `publishes` declarations) and
|
|
39
54
|
writes `.cef/generated.d.ts`, populating `KnownEventTypes` so authors
|
|
40
55
|
get string-literal autocompletion on `@OnEvent` and `ctx.publish`. The
|
|
@@ -68,7 +83,9 @@ const inspected = await cefInspect({
|
|
|
68
83
|
agentDir: "dist/echo",
|
|
69
84
|
print: false,
|
|
70
85
|
});
|
|
71
|
-
|
|
86
|
+
for (const e of inspected.engagements) {
|
|
87
|
+
console.log(e.id, e.handles, e.hooks, e.exposedMethods, e.missingMethods);
|
|
88
|
+
}
|
|
72
89
|
```
|
|
73
90
|
|
|
74
91
|
## Build-time lints
|
|
@@ -85,8 +102,8 @@ warnings agree with CI failures.
|
|
|
85
102
|
- `ctx.models.X` member must reference a declared model alias.
|
|
86
103
|
- Imports must not target the banned module list (Node built-ins like
|
|
87
104
|
`fs`, `net`, `http`, `child_process`, plus sync DB / network npm
|
|
88
|
-
packages). Agents
|
|
89
|
-
`globalThis.crypto` (WebCrypto) replaces `node:crypto`.
|
|
105
|
+
packages). Agents use the global `fetch` for HTTP and `ctx.cubby` for
|
|
106
|
+
state; `globalThis.crypto` (WebCrypto) replaces `node:crypto`.
|
|
90
107
|
|
|
91
108
|
The full banned-module list and rationale live in `agent-sdk.md` §7.
|
|
92
109
|
|
|
@@ -1,32 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Bundle-shape constants shared between the wrapper renderer and the
|
|
3
|
+
* metadata-extraction step in `commands/build.ts`.
|
|
3
4
|
*
|
|
4
|
-
* Contract (
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Contract (AR ADR-001): the bundle exposes a FLAT handler map at
|
|
6
|
+
* `globalThis.__handlers` — one function per handler name — which the Agent
|
|
7
|
+
* Runtime dispatches against as `globalThis.__handlers[name](event,
|
|
8
|
+
* context)`. There is no engagement registry on the global surface and no
|
|
9
|
+
* `__cefAgent` (AR carries no consumer-specific vocabulary).
|
|
9
10
|
*
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* intermediate `__cefBundle` global so the runtime sandbox sees a clean
|
|
17
|
-
* surface with only `__cefAgent` set.
|
|
18
|
-
*
|
|
19
|
-
* The footer does NOT assert per-class decorator presence — that check moved
|
|
20
|
-
* to build-time (`bundleAgent`), where the error message can name the
|
|
21
|
-
* specific engagement id. The footer only fails when the wrapper export is
|
|
22
|
-
* structurally missing, which is a build-pipeline bug rather than a user
|
|
23
|
-
* error.
|
|
24
|
-
*/
|
|
25
|
-
export declare const IIFE_FOOTER: string;
|
|
26
|
-
/**
|
|
27
|
-
* Global name esbuild uses to expose the bundled module's exports. Kept in
|
|
28
|
-
* sync with {@link IIFE_FOOTER} above so callers can wire both pieces from
|
|
29
|
-
* a single source of truth.
|
|
11
|
+
* The generated wrapper imports each engagement class plus
|
|
12
|
+
* `registerHandlers` from `@cef-ai/agent-sdk/runtime` and calls it at
|
|
13
|
+
* top-level; running the bundled IIFE installs `globalThis.__handlers`
|
|
14
|
+
* (and, non-enumerably, `__handlers.__engagements` — the decorator metadata
|
|
15
|
+
* the manifest emitter reads back). No esbuild footer is needed: the
|
|
16
|
+
* registration is the wrapper's own top-level side effect.
|
|
30
17
|
*/
|
|
31
|
-
|
|
18
|
+
/** Import specifier for the in-bundle runtime shim layer. */
|
|
19
|
+
export declare const RUNTIME_IMPORT_SPECIFIER = "@cef-ai/agent-sdk/runtime";
|
|
20
|
+
/** The global the runtime installs and AR dispatches against. */
|
|
21
|
+
export declare const HANDLERS_GLOBAL = "__handlers";
|
|
22
|
+
/** Non-enumerable property on the handler map carrying build-time metadata. */
|
|
23
|
+
export declare const ENGAGEMENTS_META_PROP = "__engagements";
|
|
32
24
|
//# sourceMappingURL=esbuild-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-plugin.d.ts","sourceRoot":"","sources":["../../src/build/esbuild-plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"esbuild-plugin.d.ts","sourceRoot":"","sources":["../../src/build/esbuild-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AAEpE,iEAAiE;AACjE,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,kBAAkB,CAAC"}
|
|
@@ -1,53 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Bundle-shape constants shared between the wrapper renderer and the
|
|
3
|
+
* metadata-extraction step in `commands/build.ts`.
|
|
3
4
|
*
|
|
4
|
-
* Contract (
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Contract (AR ADR-001): the bundle exposes a FLAT handler map at
|
|
6
|
+
* `globalThis.__handlers` — one function per handler name — which the Agent
|
|
7
|
+
* Runtime dispatches against as `globalThis.__handlers[name](event,
|
|
8
|
+
* context)`. There is no engagement registry on the global surface and no
|
|
9
|
+
* `__cefAgent` (AR carries no consumer-specific vocabulary).
|
|
9
10
|
*
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* intermediate `__cefBundle` global so the runtime sandbox sees a clean
|
|
17
|
-
* surface with only `__cefAgent` set.
|
|
18
|
-
*
|
|
19
|
-
* The footer does NOT assert per-class decorator presence — that check moved
|
|
20
|
-
* to build-time (`bundleAgent`), where the error message can name the
|
|
21
|
-
* specific engagement id. The footer only fails when the wrapper export is
|
|
22
|
-
* structurally missing, which is a build-pipeline bug rather than a user
|
|
23
|
-
* error.
|
|
24
|
-
*/
|
|
25
|
-
export const IIFE_FOOTER = `
|
|
26
|
-
;(function () {
|
|
27
|
-
var classes = (typeof globalThis.__cefBundle !== "undefined" && globalThis.__cefBundle.engagements)
|
|
28
|
-
? globalThis.__cefBundle.engagements
|
|
29
|
-
: null;
|
|
30
|
-
if (!classes) {
|
|
31
|
-
throw new Error("@cef-ai/agent-sdk: bundle has no engagements (export const engagements missing from wrapper)");
|
|
32
|
-
}
|
|
33
|
-
var instances = {};
|
|
34
|
-
var ids = Object.keys(classes);
|
|
35
|
-
for (var i = 0; i < ids.length; i++) {
|
|
36
|
-
var id = ids[i];
|
|
37
|
-
var Cls = classes[id];
|
|
38
|
-
if (!Cls) {
|
|
39
|
-
throw new Error("@cef-ai/agent-sdk: engagement \\"" + id + "\\" has no class export");
|
|
40
|
-
}
|
|
41
|
-
instances[id] = new Cls();
|
|
42
|
-
}
|
|
43
|
-
globalThis.__cefAgent = { engagements: instances };
|
|
44
|
-
try { delete globalThis.__cefBundle; } catch (_) { globalThis.__cefBundle = undefined; }
|
|
45
|
-
})();
|
|
46
|
-
`.trim();
|
|
47
|
-
/**
|
|
48
|
-
* Global name esbuild uses to expose the bundled module's exports. Kept in
|
|
49
|
-
* sync with {@link IIFE_FOOTER} above so callers can wire both pieces from
|
|
50
|
-
* a single source of truth.
|
|
11
|
+
* The generated wrapper imports each engagement class plus
|
|
12
|
+
* `registerHandlers` from `@cef-ai/agent-sdk/runtime` and calls it at
|
|
13
|
+
* top-level; running the bundled IIFE installs `globalThis.__handlers`
|
|
14
|
+
* (and, non-enumerably, `__handlers.__engagements` — the decorator metadata
|
|
15
|
+
* the manifest emitter reads back). No esbuild footer is needed: the
|
|
16
|
+
* registration is the wrapper's own top-level side effect.
|
|
51
17
|
*/
|
|
52
|
-
|
|
18
|
+
/** Import specifier for the in-bundle runtime shim layer. */
|
|
19
|
+
export const RUNTIME_IMPORT_SPECIFIER = "@cef-ai/agent-sdk/runtime";
|
|
20
|
+
/** The global the runtime installs and AR dispatches against. */
|
|
21
|
+
export const HANDLERS_GLOBAL = "__handlers";
|
|
22
|
+
/** Non-enumerable property on the handler map carrying build-time metadata. */
|
|
23
|
+
export const ENGAGEMENTS_META_PROP = "__engagements";
|
|
53
24
|
//# sourceMappingURL=esbuild-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-plugin.js","sourceRoot":"","sources":["../../src/build/esbuild-plugin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"esbuild-plugin.js","sourceRoot":"","sources":["../../src/build/esbuild-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,6DAA6D;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAA2B,CAAC;AAEpE,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC"}
|
package/dist/build/manifest.d.ts
CHANGED
|
@@ -4,19 +4,19 @@ import type { AgentCard, JSONSchema, Targeting } from "./load-config.js";
|
|
|
4
4
|
* (`events` map) and its lifecycle method names (extracted from decorator
|
|
5
5
|
* metadata). The manifest emitter:
|
|
6
6
|
*
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
7
|
+
* - builds the per-engagement `handlers` map (eventType → namespaced handler
|
|
8
|
+
* key) from `events`, and folds lifecycle in under the synthetic event
|
|
9
|
+
* types `__start__` / `__close__` → the fixed `onStart` / `onClose` keys
|
|
10
|
+
* (so the orchestrator resolves lifecycle via the same `handlers[eventType]`
|
|
11
|
+
* lookup as ordinary events — no separate `hooks` array);
|
|
9
12
|
* - aggregates `events` keys + caller-provided `publishes` into the
|
|
10
|
-
* top-level derived unions
|
|
11
|
-
* - drops `lifecycle` from the manifest output entirely — `onStart` /
|
|
12
|
-
* `onClose` are conventional method names invoked by the runtime if
|
|
13
|
-
* defined on the class (per prototype.md §"Notes on the simplifications").
|
|
13
|
+
* top-level derived unions.
|
|
14
14
|
*/
|
|
15
15
|
export interface ManifestEngagementInput {
|
|
16
16
|
id: string;
|
|
17
17
|
goal?: string;
|
|
18
18
|
events: Record<string, string>;
|
|
19
|
-
/**
|
|
19
|
+
/** Which lifecycle methods the engagement declares; folded into `handlers`. */
|
|
20
20
|
lifecycle: {
|
|
21
21
|
start?: string;
|
|
22
22
|
close?: string;
|
|
@@ -89,17 +89,19 @@ export interface InlinedCubby {
|
|
|
89
89
|
}>;
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
-
* Per-engagement slice of the emitted manifest
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* lifecycle
|
|
97
|
-
*
|
|
92
|
+
* Per-engagement slice of the emitted manifest. `handlers` is the single
|
|
93
|
+
* routing map (eventType → handler key) covering BOTH ordinary events and
|
|
94
|
+
* lifecycle: ordinary events map to namespaced `<id>::<method>` keys, while
|
|
95
|
+
* the synthetic `__start__` / `__close__` event types (present only when the
|
|
96
|
+
* engagement declares the corresponding lifecycle method) map to the fixed
|
|
97
|
+
* `onStart` / `onClose` keys. The orchestrator's `HandlerFor` is a plain
|
|
98
|
+
* `handlers[eventType]` lookup. Per-engagement `publishes` are carried at the
|
|
99
|
+
* agent level only.
|
|
98
100
|
*/
|
|
99
101
|
export interface ManifestEngagement {
|
|
100
102
|
id: string;
|
|
101
103
|
goal: string;
|
|
102
|
-
|
|
104
|
+
handlers: Record<string, string>;
|
|
103
105
|
}
|
|
104
106
|
/** Settings declaration as emitted into the manifest. */
|
|
105
107
|
export type ManifestSetting = NonNullable<ManifestConfigInput["settings"]>[number];
|
|
@@ -123,7 +125,9 @@ export interface CefManifest {
|
|
|
123
125
|
settings: ManifestSetting[];
|
|
124
126
|
bundle: string;
|
|
125
127
|
engagements: ManifestEngagement[];
|
|
126
|
-
/** Derived union of every engagement's
|
|
128
|
+
/** Derived union of every engagement's handled event types (sorted).
|
|
129
|
+
* Ordinary event types only — the synthetic `__start__` / `__close__`
|
|
130
|
+
* lifecycle types live inside each engagement's `handlers` map, not here. */
|
|
127
131
|
handles: string[];
|
|
128
132
|
/** Derived union of every engagement's lint-derived publishes (sorted). */
|
|
129
133
|
publishes: string[];
|
|
@@ -141,10 +145,10 @@ export interface CefManifest {
|
|
|
141
145
|
* Cubby Manager, Event Runtime, Orchestrator, Agent Runtime, and `cef
|
|
142
146
|
* typegen` — everything an agent needs at runtime is inline.
|
|
143
147
|
*
|
|
144
|
-
* Per-engagement: `
|
|
145
|
-
* alphabetically by key
|
|
146
|
-
* NOT emitted — see
|
|
147
|
-
*
|
|
148
|
+
* Per-engagement: `handlers` is a map (eventType → handler key), sorted
|
|
149
|
+
* alphabetically by key, with lifecycle folded in under `__start__` /
|
|
150
|
+
* `__close__`. Per-engagement publishes are NOT emitted — see the
|
|
151
|
+
* `EngagementDecl` go type.
|
|
148
152
|
*
|
|
149
153
|
* Agent-level: `cubbies[]` inlines each cubby's migration directory;
|
|
150
154
|
* `bundle` embeds the JS source as a JSON-escaped string (no separate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/build/manifest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/build/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/build/manifest.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { handlerKey, LIFECYCLE_CLOSE_KEY, LIFECYCLE_START_KEY, SYNTHETIC_CLOSE_EVENT, SYNTHETIC_START_EVENT, } from "@cef-ai/agent-sdk/runtime";
|
|
3
4
|
import { parseDuration } from "./duration.js";
|
|
4
5
|
const EMPTY_CARD = { name: "", description: "" };
|
|
5
6
|
/** Default idle timeout — author-facing string; see `AgentConfig.idleTimeout`. */
|
|
@@ -31,10 +32,10 @@ async function readMigrations(dir) {
|
|
|
31
32
|
* Cubby Manager, Event Runtime, Orchestrator, Agent Runtime, and `cef
|
|
32
33
|
* typegen` — everything an agent needs at runtime is inline.
|
|
33
34
|
*
|
|
34
|
-
* Per-engagement: `
|
|
35
|
-
* alphabetically by key
|
|
36
|
-
* NOT emitted — see
|
|
37
|
-
*
|
|
35
|
+
* Per-engagement: `handlers` is a map (eventType → handler key), sorted
|
|
36
|
+
* alphabetically by key, with lifecycle folded in under `__start__` /
|
|
37
|
+
* `__close__`. Per-engagement publishes are NOT emitted — see the
|
|
38
|
+
* `EngagementDecl` go type.
|
|
38
39
|
*
|
|
39
40
|
* Agent-level: `cubbies[]` inlines each cubby's migration directory;
|
|
40
41
|
* `bundle` embeds the JS source as a JSON-escaped string (no separate
|
|
@@ -51,17 +52,36 @@ export async function buildManifest(input) {
|
|
|
51
52
|
const allHandles = new Set();
|
|
52
53
|
const allPublishes = new Set();
|
|
53
54
|
const manifestEngagements = sortedEngagements.map((e) => {
|
|
54
|
-
const
|
|
55
|
+
const handlers = {};
|
|
55
56
|
for (const type of Object.keys(e.events).sort()) {
|
|
56
|
-
|
|
57
|
+
// `__start__` / `__close__` are reserved for lifecycle dispatch — they
|
|
58
|
+
// share the `handlers` keyspace, so an event type of that name would
|
|
59
|
+
// collide. Reject at build time with a clear pointer to @OnStart/@OnClose.
|
|
60
|
+
if (type === SYNTHETIC_START_EVENT || type === SYNTHETIC_CLOSE_EVENT) {
|
|
61
|
+
throw new Error(`[@cef-ai/cli] engagement "${e.id}": event type "${type}" is reserved for ` +
|
|
62
|
+
`lifecycle dispatch — use @OnStart/@OnClose, not @OnEvent("${type}")`);
|
|
63
|
+
}
|
|
64
|
+
// Namespaced per engagement so the flat __handlers map stays
|
|
65
|
+
// collision-free; the orchestrator returns this verbatim from
|
|
66
|
+
// HandlerFor and AR looks it up. Must match runtime `handlerKey`.
|
|
67
|
+
handlers[type] = handlerKey(e.id, e.events[type]);
|
|
57
68
|
allHandles.add(type);
|
|
58
69
|
}
|
|
70
|
+
// Lifecycle is folded into the same map under the synthetic event types,
|
|
71
|
+
// mapped to the fixed (non-namespaced) `onStart` / `onClose` keys the
|
|
72
|
+
// bundle registers. Synthetic types are NOT added to the top-level
|
|
73
|
+
// `handles[]` union — that union feeds event subscription/targeting,
|
|
74
|
+
// which lifecycle is not part of.
|
|
75
|
+
if (e.lifecycle.start)
|
|
76
|
+
handlers[SYNTHETIC_START_EVENT] = LIFECYCLE_START_KEY;
|
|
77
|
+
if (e.lifecycle.close)
|
|
78
|
+
handlers[SYNTHETIC_CLOSE_EVENT] = LIFECYCLE_CLOSE_KEY;
|
|
59
79
|
for (const t of e.publishes)
|
|
60
80
|
allPublishes.add(t);
|
|
61
81
|
return {
|
|
62
82
|
id: e.id,
|
|
63
83
|
goal: e.goal ?? "",
|
|
64
|
-
|
|
84
|
+
handlers,
|
|
65
85
|
};
|
|
66
86
|
});
|
|
67
87
|
const cubbies = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/build/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/build/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AA6BA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAgOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CA6FlF"}
|
package/dist/commands/build.js
CHANGED
|
@@ -3,8 +3,7 @@ import fs from "node:fs/promises";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import vm from "node:vm";
|
|
5
5
|
import * as esbuild from "esbuild";
|
|
6
|
-
import {
|
|
7
|
-
import { ESBUILD_GLOBAL_NAME, IIFE_FOOTER, } from "../build/esbuild-plugin.js";
|
|
6
|
+
import { ENGAGEMENTS_META_PROP, HANDLERS_GLOBAL, RUNTIME_IMPORT_SPECIFIER, } from "../build/esbuild-plugin.js";
|
|
8
7
|
import { lintAgentSource } from "../build/lints.js";
|
|
9
8
|
import { flattenAgents, loadConfig, normalizeEngagements, } from "../build/load-config.js";
|
|
10
9
|
import { emitManifest, } from "../build/manifest.js";
|
|
@@ -36,33 +35,81 @@ async function findNodeModulesParent(start) {
|
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
38
37
|
* Generate the temporary wrapper module that imports each engagement's
|
|
39
|
-
* default export
|
|
40
|
-
* this wrapper as
|
|
41
|
-
*
|
|
42
|
-
*
|
|
38
|
+
* default export plus the SDK's `registerHandlers`, and calls it at
|
|
39
|
+
* top-level. esbuild bundles this wrapper as an IIFE; running the bundle
|
|
40
|
+
* installs `globalThis.__handlers` (the flat handler map AR dispatches
|
|
41
|
+
* against) — see esbuild-plugin.ts for the contract.
|
|
43
42
|
*
|
|
44
43
|
* Imports use absolute file paths so resolution doesn't depend on the
|
|
45
|
-
* wrapper's directory
|
|
44
|
+
* wrapper's directory; the runtime import is a bare specifier resolved
|
|
45
|
+
* against the `node_modules` ancestor the wrapper is placed under.
|
|
46
46
|
*/
|
|
47
|
-
function renderWrapperSource(engagements) {
|
|
47
|
+
function renderWrapperSource(engagements, modelRefs) {
|
|
48
48
|
const importLines = engagements
|
|
49
49
|
.map((e, i) => `import _e${i} from ${JSON.stringify(e.entry)};`)
|
|
50
50
|
.join("\n");
|
|
51
51
|
const mapBody = engagements
|
|
52
52
|
.map((e, i) => ` ${JSON.stringify(e.id)}: _e${i}`)
|
|
53
53
|
.join(",\n");
|
|
54
|
-
|
|
54
|
+
// Bake the resolved alias → ModelRef map into the bundle so `ctx.models`
|
|
55
|
+
// knows each model's identity without the orchestrator carrying it.
|
|
56
|
+
const options = `{ models: ${JSON.stringify(modelRefs)} }`;
|
|
57
|
+
return (`import { registerHandlers } from ${JSON.stringify(RUNTIME_IMPORT_SPECIFIER)};\n` +
|
|
58
|
+
`${importLines}\n` +
|
|
59
|
+
`registerHandlers({\n${mapBody}\n}, ${options});\n`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolve a `defineAgent({ models })` value into a {@link ModelRef}. Models
|
|
63
|
+
* are declared as DDC `model.json` URLs (e.g.
|
|
64
|
+
* `https://<host>/<bucket>/models/<name>/<version>/model.json`); the bucket /
|
|
65
|
+
* name / version are parsed out here, once, at build time — the runtime never
|
|
66
|
+
* parses a URL. `name` / `version` are validated by `cef typegen` against the
|
|
67
|
+
* fetched `model.json`.
|
|
68
|
+
*/
|
|
69
|
+
function parseModelRef(alias, declared) {
|
|
70
|
+
let pathname;
|
|
71
|
+
try {
|
|
72
|
+
pathname = new URL(declared).pathname;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
throw new Error(`[@cef-ai/cli] model "${alias}": value must be a DDC model.json URL, got "${declared}"`);
|
|
76
|
+
}
|
|
77
|
+
// Expected path: /<bucket>/models/<name>/<version>/model.json
|
|
78
|
+
const parts = pathname.split("/").filter(Boolean);
|
|
79
|
+
const file = parts[parts.length - 1] ?? "";
|
|
80
|
+
if (parts.length < 5 || parts[1] !== "models" || !file.endsWith("model.json")) {
|
|
81
|
+
throw new Error(`[@cef-ai/cli] model "${alias}": expected a DDC model.json URL ` +
|
|
82
|
+
`(.../<bucket>/models/<name>/<version>/model.json), got "${declared}"`);
|
|
83
|
+
}
|
|
84
|
+
const bucket = Number(parts[0]);
|
|
85
|
+
if (!Number.isInteger(bucket)) {
|
|
86
|
+
throw new Error(`[@cef-ai/cli] model "${alias}": bucket segment "${parts[0]}" is not an integer in "${declared}"`);
|
|
87
|
+
}
|
|
88
|
+
return { bucket, name: parts[2], version: parts[3] };
|
|
89
|
+
}
|
|
90
|
+
/** Resolve all of an agent's declared models into the baked ref map. */
|
|
91
|
+
function resolveModelRefs(models) {
|
|
92
|
+
const out = {};
|
|
93
|
+
for (const [alias, declared] of Object.entries(models ?? {})) {
|
|
94
|
+
out[alias] = parseModelRef(alias, declared);
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
55
97
|
}
|
|
56
98
|
/**
|
|
57
99
|
* Bundle one agent's engagement set into `<outDir>/<agentId>/bundle.js`.
|
|
58
100
|
*
|
|
59
101
|
* The flow is:
|
|
60
|
-
* 1. Render a temp wrapper that
|
|
61
|
-
*
|
|
62
|
-
* 2. Run esbuild on the wrapper (IIFE
|
|
63
|
-
* 3. Execute the bundle in a fresh `vm` context
|
|
64
|
-
*
|
|
65
|
-
*
|
|
102
|
+
* 1. Render a temp wrapper that imports every engagement class + the SDK
|
|
103
|
+
* runtime's `registerHandlers` and calls it.
|
|
104
|
+
* 2. Run esbuild on the wrapper (IIFE; the runtime shims are inlined).
|
|
105
|
+
* 3. Execute the bundle in a fresh `vm` context — `registerHandlers`
|
|
106
|
+
* installs `globalThis.__handlers` and records the per-engagement
|
|
107
|
+
* decorator metadata on its non-enumerable `__engagements` property,
|
|
108
|
+
* which we read back for the manifest. Handler-key collisions across
|
|
109
|
+
* engagements throw here, surfacing as a build error.
|
|
110
|
+
*
|
|
111
|
+
* Constructors are NOT run at build time (the runtime instantiates per
|
|
112
|
+
* invocation), so they may have side effects.
|
|
66
113
|
*
|
|
67
114
|
* Decorators are still TC39-stage-2 syntax in our SDK, so we feed esbuild
|
|
68
115
|
* a `tsconfigRaw` that turns on `experimentalDecorators` regardless of
|
|
@@ -83,7 +130,8 @@ async function bundleAgent(args) {
|
|
|
83
130
|
const cacheDir = path.join(nmParent, "node_modules", ".cef", "build-cache");
|
|
84
131
|
await fs.mkdir(cacheDir, { recursive: true });
|
|
85
132
|
const wrapperPath = path.join(cacheDir, `wrapper-${agent.id}-${process.pid}-${crypto.randomBytes(6).toString("hex")}.ts`);
|
|
86
|
-
|
|
133
|
+
const modelRefs = resolveModelRefs(agent.models);
|
|
134
|
+
await fs.writeFile(wrapperPath, renderWrapperSource(engagements, modelRefs), "utf8");
|
|
87
135
|
try {
|
|
88
136
|
await esbuild.build({
|
|
89
137
|
entryPoints: [wrapperPath],
|
|
@@ -91,9 +139,7 @@ async function bundleAgent(args) {
|
|
|
91
139
|
format: "iife",
|
|
92
140
|
target: "es2022",
|
|
93
141
|
platform: "neutral",
|
|
94
|
-
globalName: ESBUILD_GLOBAL_NAME,
|
|
95
142
|
outfile: bundlePath,
|
|
96
|
-
footer: { js: IIFE_FOOTER },
|
|
97
143
|
logLevel: "silent",
|
|
98
144
|
// Inline everything; the runtime sandbox has no module loader.
|
|
99
145
|
external: [],
|
|
@@ -111,9 +157,9 @@ async function bundleAgent(args) {
|
|
|
111
157
|
await fs.unlink(wrapperPath).catch(() => { });
|
|
112
158
|
}
|
|
113
159
|
// Read the metadata back by executing the bundle in a fresh vm sandbox.
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
160
|
+
// registerHandlers installs globalThis.__handlers and records the
|
|
161
|
+
// per-engagement decorator metadata on its non-enumerable __engagements
|
|
162
|
+
// property. A handler-key collision across engagements throws here.
|
|
117
163
|
const bundleSource = await fs.readFile(bundlePath, "utf8");
|
|
118
164
|
const sandbox = { console };
|
|
119
165
|
sandbox.globalThis = sandbox;
|
|
@@ -122,28 +168,26 @@ async function bundleAgent(args) {
|
|
|
122
168
|
}
|
|
123
169
|
catch (e) {
|
|
124
170
|
const msg = e?.message ?? String(e);
|
|
125
|
-
throw new Error(`[@cef-ai/cli] agent "${agent.id}" threw while
|
|
126
|
-
`Constructors must be side-effect-free for cef build to read decorator metadata. ` +
|
|
171
|
+
throw new Error(`[@cef-ai/cli] agent "${agent.id}": bundle threw while registering handlers. ` +
|
|
127
172
|
`Original error: ${msg}`);
|
|
128
173
|
}
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
174
|
+
const handlers = sandbox[HANDLERS_GLOBAL];
|
|
175
|
+
const buildMeta = handlers?.[ENGAGEMENTS_META_PROP];
|
|
176
|
+
if (!handlers || !buildMeta) {
|
|
177
|
+
throw new Error(`[@cef-ai/cli] agent "${agent.id}": bundle did not install globalThis.${HANDLERS_GLOBAL} ` +
|
|
178
|
+
`(is @cef-ai/agent-sdk/runtime resolvable and registerHandlers called?)`);
|
|
132
179
|
}
|
|
180
|
+
const byId = new Map();
|
|
181
|
+
for (const m of buildMeta)
|
|
182
|
+
byId.set(m.id, m);
|
|
133
183
|
const metas = new Map();
|
|
134
184
|
for (const e of engagements) {
|
|
135
|
-
const
|
|
136
|
-
if (!
|
|
137
|
-
throw new Error(`[@cef-ai/cli] engagement "${e.id}" in agent "${agent.id}": not
|
|
138
|
-
|
|
139
|
-
const meta = inst.constructor[ENGAGEMENT_METADATA];
|
|
140
|
-
if (!meta) {
|
|
141
|
-
throw new Error(`[@cef-ai/cli] engagement "${e.id}" in agent "${agent.id}": class has no @OnEvent/@OnStart/@OnClose/@Engagement decorators`);
|
|
142
|
-
}
|
|
143
|
-
if (meta.id !== undefined && meta.id !== e.id) {
|
|
144
|
-
throw new Error(`[@cef-ai/cli] engagement "${e.id}" in agent "${agent.id}": @Engagement decorator declares id "${meta.id}" but config declares "${e.id}"`);
|
|
185
|
+
const m = byId.get(e.id);
|
|
186
|
+
if (!m) {
|
|
187
|
+
throw new Error(`[@cef-ai/cli] engagement "${e.id}" in agent "${agent.id}": not registered by the bundle ` +
|
|
188
|
+
`(missing @OnEvent/@OnStart/@OnClose/@Engagement decorators?)`);
|
|
145
189
|
}
|
|
146
|
-
metas.set(e.id,
|
|
190
|
+
metas.set(e.id, { id: m.id, goal: m.goal, events: m.events, lifecycle: m.lifecycle });
|
|
147
191
|
}
|
|
148
192
|
const stat = await fs.stat(bundlePath);
|
|
149
193
|
return { bundlePath, bundleBytes: stat.size, metas };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,11 +12,12 @@ export interface CefInspectOptions {
|
|
|
12
12
|
export interface InspectEngagement {
|
|
13
13
|
id: string;
|
|
14
14
|
goal?: string;
|
|
15
|
-
/** eventType →
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
/** eventType → handler key, copied from `manifest.engagements[i].handlers`
|
|
16
|
+
* (includes lifecycle under `__start__` / `__close__`). */
|
|
17
|
+
handlers: Record<string, string>;
|
|
18
|
+
/** Handler names this engagement references that ARE present on `__handlers`. */
|
|
18
19
|
exposedMethods: string[];
|
|
19
|
-
/**
|
|
20
|
+
/** Handler names referenced by manifest routing that are missing from `__handlers`. */
|
|
20
21
|
missingMethods: string[];
|
|
21
22
|
}
|
|
22
23
|
export interface CefInspectResult {
|
|
@@ -37,10 +38,12 @@ export interface CefInspectResult {
|
|
|
37
38
|
*
|
|
38
39
|
* Reads `<agentDir>/manifest.json` for the per-engagement routing tables
|
|
39
40
|
* and executes `<agentDir>/bundle.js` in a fresh `node:vm` context to
|
|
40
|
-
* enumerate the
|
|
41
|
-
* `globalThis.
|
|
42
|
-
*
|
|
43
|
-
*
|
|
41
|
+
* enumerate the handler functions actually exposed on
|
|
42
|
+
* `globalThis.__handlers` (the flat map AR dispatches against). Cross-checks
|
|
43
|
+
* that every handler name the manifest references — each engagement's
|
|
44
|
+
* `handlers` values (event handlers plus the lifecycle `onStart` / `onClose`
|
|
45
|
+
* keys folded in under `__start__` / `__close__`) — is present as a function
|
|
46
|
+
* in the bundle.
|
|
44
47
|
*
|
|
45
48
|
* Pure exploration: no files are written, no network. Safe to run on any
|
|
46
49
|
* `dist/<agentId>/` directory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;gEAC4D;IAC5D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iFAAiF;IACjF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uFAAuF;IACvF,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE;QACR,oCAAoC;QACpC,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;KACtB,CAAC;IACF,WAAW,EAAE,iBAAiB,EAAE,CAAC;CAClC;AAkBD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
|
package/dist/commands/inspect.js
CHANGED
|
@@ -6,10 +6,12 @@ import vm from "node:vm";
|
|
|
6
6
|
*
|
|
7
7
|
* Reads `<agentDir>/manifest.json` for the per-engagement routing tables
|
|
8
8
|
* and executes `<agentDir>/bundle.js` in a fresh `node:vm` context to
|
|
9
|
-
* enumerate the
|
|
10
|
-
* `globalThis.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* enumerate the handler functions actually exposed on
|
|
10
|
+
* `globalThis.__handlers` (the flat map AR dispatches against). Cross-checks
|
|
11
|
+
* that every handler name the manifest references — each engagement's
|
|
12
|
+
* `handlers` values (event handlers plus the lifecycle `onStart` / `onClose`
|
|
13
|
+
* keys folded in under `__start__` / `__close__`) — is present as a function
|
|
14
|
+
* in the bundle.
|
|
13
15
|
*
|
|
14
16
|
* Pure exploration: no files are written, no network. Safe to run on any
|
|
15
17
|
* `dist/<agentId>/` directory.
|
|
@@ -20,41 +22,26 @@ export async function cefInspect(opts) {
|
|
|
20
22
|
const bundlePath = path.join(agentDir, "bundle.js");
|
|
21
23
|
const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
|
|
22
24
|
const bundle = await fs.readFile(bundlePath, "utf8");
|
|
23
|
-
// Run the bundle in an isolated context.
|
|
24
|
-
//
|
|
25
|
+
// Run the bundle in an isolated context. Its top-level registerHandlers
|
|
26
|
+
// call installs the flat handler map at globalThis.__handlers.
|
|
25
27
|
const sandbox = { console };
|
|
26
28
|
sandbox.globalThis = sandbox;
|
|
27
29
|
vm.runInNewContext(bundle, sandbox);
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
+
const handlers = sandbox.__handlers;
|
|
31
|
+
const exposedSet = new Set(handlers
|
|
32
|
+
? Object.keys(handlers).filter((k) => typeof handlers[k] === "function")
|
|
33
|
+
: []);
|
|
30
34
|
const engagements = (manifest.engagements ?? []).map((e) => {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (k === "constructor")
|
|
39
|
-
continue;
|
|
40
|
-
if (typeof inst[k] === "function") {
|
|
41
|
-
seen.add(k);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
proto = Object.getPrototypeOf(proto);
|
|
45
|
-
}
|
|
46
|
-
exposedMethods.push(...[...seen].sort());
|
|
47
|
-
}
|
|
48
|
-
const exposedSet = new Set(exposedMethods);
|
|
49
|
-
const missingMethods = [];
|
|
50
|
-
const handles = e.handles ?? {};
|
|
51
|
-
for (const handlerName of Object.values(handles)) {
|
|
52
|
-
if (!exposedSet.has(handlerName))
|
|
53
|
-
missingMethods.push(handlerName);
|
|
54
|
-
}
|
|
35
|
+
const handlers = e.handlers ?? {};
|
|
36
|
+
// Handler keys this engagement references — the map values already include
|
|
37
|
+
// the lifecycle `onStart` / `onClose` keys (folded in under the synthetic
|
|
38
|
+
// `__start__` / `__close__` event types), so a single pass covers both.
|
|
39
|
+
const referenced = new Set(Object.values(handlers));
|
|
40
|
+
const exposedMethods = [...referenced].filter((n) => exposedSet.has(n)).sort();
|
|
41
|
+
const missingMethods = [...referenced].filter((n) => !exposedSet.has(n)).sort();
|
|
55
42
|
const out = {
|
|
56
43
|
id: e.id,
|
|
57
|
-
|
|
44
|
+
handlers,
|
|
58
45
|
exposedMethods,
|
|
59
46
|
missingMethods,
|
|
60
47
|
};
|
|
@@ -77,7 +64,7 @@ export async function cefInspect(opts) {
|
|
|
77
64
|
engagements,
|
|
78
65
|
};
|
|
79
66
|
if (print)
|
|
80
|
-
printInspectResult(result,
|
|
67
|
+
printInspectResult(result, handlers !== undefined);
|
|
81
68
|
return result;
|
|
82
69
|
}
|
|
83
70
|
function printInspectResult(r, hasInstance) {
|
|
@@ -90,12 +77,12 @@ function printInspectResult(r, hasInstance) {
|
|
|
90
77
|
}
|
|
91
78
|
for (const e of r.engagements) {
|
|
92
79
|
console.log(` - ${e.id}${e.goal ? ` — ${e.goal}` : ""}`);
|
|
93
|
-
console.log(`
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
80
|
+
console.log(` handlers:`);
|
|
81
|
+
const handlerEntries = Object.entries(e.handlers);
|
|
82
|
+
if (handlerEntries.length === 0) {
|
|
96
83
|
console.log(` (none)`);
|
|
97
84
|
}
|
|
98
|
-
for (const [type, handlerName] of
|
|
85
|
+
for (const [type, handlerName] of handlerEntries) {
|
|
99
86
|
console.log(` - ${type} -> ${handlerName}`);
|
|
100
87
|
}
|
|
101
88
|
}
|
|
@@ -113,7 +100,7 @@ function printInspectResult(r, hasInstance) {
|
|
|
113
100
|
console.log("");
|
|
114
101
|
console.log("## Bundle methods per engagement");
|
|
115
102
|
if (!hasInstance) {
|
|
116
|
-
console.log(" (no
|
|
103
|
+
console.log(" (no __handlers set - bundle did not initialise)");
|
|
117
104
|
return;
|
|
118
105
|
}
|
|
119
106
|
for (const e of r.engagements) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typegen.d.ts","sourceRoot":"","sources":["../../src/commands/typegen.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAiDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"typegen.d.ts","sourceRoot":"","sources":["../../src/commands/typegen.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAiDD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAwJ3B"}
|
package/dist/commands/typegen.js
CHANGED
|
@@ -138,11 +138,14 @@ export async function cefTypegen(opts = {}) {
|
|
|
138
138
|
}
|
|
139
139
|
newLock.models[alias] = entry;
|
|
140
140
|
if (parsed && typeof parsed === "object") {
|
|
141
|
+
// DDC `model.json` carries the I/O JSON Schemas under `schema.inputs`
|
|
142
|
+
// / `schema.outputs`. Fall back to top-level `input` / `output` for
|
|
143
|
+
// older/hand-written fixtures.
|
|
141
144
|
const m = parsed;
|
|
142
145
|
modelSpecs.push({
|
|
143
146
|
alias,
|
|
144
|
-
input: m.input ?? { type: "object" },
|
|
145
|
-
output: m.output ?? { type: "object" },
|
|
147
|
+
input: m.schema?.inputs ?? m.input ?? { type: "object" },
|
|
148
|
+
output: m.schema?.outputs ?? m.output ?? { type: "object" },
|
|
146
149
|
});
|
|
147
150
|
}
|
|
148
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/commands/typegen.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typegen.js","sourceRoot":"","sources":["../../src/commands/typegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,11 +47,9 @@ export declare function pascalCase(s: string): string;
|
|
|
47
47
|
* 3. `export interface <PascalCasedEventType> { ... }` per peer-published
|
|
48
48
|
* event that carries a JSON schema.
|
|
49
49
|
* 4. `declare module "@cef-ai/agent-sdk"` block augmenting `KnownEventTypes`
|
|
50
|
-
* with `"<event_type>": <PascalCasedEventType>` entries
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* deferred to a follow-up — the agent-sdk surface for that needs a
|
|
54
|
-
* `KnownModels` map analogous to `KnownEventTypes`, which doesn't exist yet.
|
|
50
|
+
* with `"<event_type>": <PascalCasedEventType>` entries, and `KnownModels`
|
|
51
|
+
* with `"<alias>": ModelHandle<<Alias>Input, <Alias>Output>` entries so
|
|
52
|
+
* `ctx.models.<alias>` is typed end-to-end.
|
|
55
53
|
*/
|
|
56
54
|
export declare function buildGeneratedDts(models: ModelSpec[], peers: PeerSpec[]): Promise<string>;
|
|
57
55
|
//# sourceMappingURL=augment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"augment.d.ts","sourceRoot":"","sources":["../../src/typegen/augment.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtD;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED
|
|
1
|
+
{"version":3,"file":"augment.d.ts","sourceRoot":"","sources":["../../src/typegen/augment.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtD;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EAAE,EACnB,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAAC,MAAM,CAAC,CAgEjB"}
|
package/dist/typegen/augment.js
CHANGED
|
@@ -33,15 +33,20 @@ export function pascalCase(s) {
|
|
|
33
33
|
* 3. `export interface <PascalCasedEventType> { ... }` per peer-published
|
|
34
34
|
* event that carries a JSON schema.
|
|
35
35
|
* 4. `declare module "@cef-ai/agent-sdk"` block augmenting `KnownEventTypes`
|
|
36
|
-
* with `"<event_type>": <PascalCasedEventType>` entries
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* deferred to a follow-up — the agent-sdk surface for that needs a
|
|
40
|
-
* `KnownModels` map analogous to `KnownEventTypes`, which doesn't exist yet.
|
|
36
|
+
* with `"<event_type>": <PascalCasedEventType>` entries, and `KnownModels`
|
|
37
|
+
* with `"<alias>": ModelHandle<<Alias>Input, <Alias>Output>` entries so
|
|
38
|
+
* `ctx.models.<alias>` is typed end-to-end.
|
|
41
39
|
*/
|
|
42
40
|
export async function buildGeneratedDts(models, peers) {
|
|
43
41
|
const sections = [HEADER];
|
|
44
|
-
//
|
|
42
|
+
// `KnownModels` entries reference `ModelHandle`; import it so the generated
|
|
43
|
+
// module-augmentation resolves regardless of scoping. (Importing from the
|
|
44
|
+
// module we then augment in the same file is the canonical pattern.)
|
|
45
|
+
if (models.length > 0) {
|
|
46
|
+
sections.push(`import type { ModelHandle } from "@cef-ai/agent-sdk";`);
|
|
47
|
+
}
|
|
48
|
+
// 1. Per-model I/O interfaces (+ collect KnownModels entries).
|
|
49
|
+
const knownModels = [];
|
|
45
50
|
if (models.length > 0) {
|
|
46
51
|
sections.push("// ---- Models ----");
|
|
47
52
|
for (const m of models) {
|
|
@@ -50,6 +55,7 @@ export async function buildGeneratedDts(models, peers) {
|
|
|
50
55
|
const outputTs = await schemaToTsInterface(`${base}Output`, m.output);
|
|
51
56
|
sections.push(inputTs);
|
|
52
57
|
sections.push(outputTs);
|
|
58
|
+
knownModels.push({ alias: m.alias, base });
|
|
53
59
|
}
|
|
54
60
|
}
|
|
55
61
|
// 2. Per-peer-event payload interfaces + collect KnownEventTypes entries.
|
|
@@ -71,16 +77,22 @@ export async function buildGeneratedDts(models, peers) {
|
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
|
-
// 3. Module augmentation
|
|
80
|
+
// 3. Module augmentation blocks (KnownEventTypes + KnownModels).
|
|
81
|
+
const augmentations = [];
|
|
75
82
|
if (knownEvents.length > 0) {
|
|
76
83
|
const lines = knownEvents
|
|
77
84
|
.map(({ eventType, tsName }) => ` ${JSON.stringify(eventType)}: ${tsName};`)
|
|
78
85
|
.join("\n");
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}`)
|
|
86
|
+
augmentations.push(` interface KnownEventTypes {\n${lines}\n }`);
|
|
87
|
+
}
|
|
88
|
+
if (knownModels.length > 0) {
|
|
89
|
+
const lines = knownModels
|
|
90
|
+
.map(({ alias, base }) => ` ${JSON.stringify(alias)}: ModelHandle<${base}Input, ${base}Output>;`)
|
|
91
|
+
.join("\n");
|
|
92
|
+
augmentations.push(` interface KnownModels {\n${lines}\n }`);
|
|
93
|
+
}
|
|
94
|
+
if (augmentations.length > 0) {
|
|
95
|
+
sections.push(`declare module "@cef-ai/agent-sdk" {\n${augmentations.join("\n\n")}\n}`);
|
|
84
96
|
}
|
|
85
97
|
return sections.join("\n\n") + "\n";
|
|
86
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"augment.js","sourceRoot":"","sources":["../../src/typegen/augment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA2BxD,MAAM,MAAM,GAAG;;CAEd,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,MAAM,MAAM,GAAG,KAAK;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"augment.js","sourceRoot":"","sources":["../../src/typegen/augment.ts"],"names":[],"mappings":"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"}
|
package/dist/typegen/fetch.d.ts
CHANGED
|
@@ -15,9 +15,18 @@ export interface FetchResult {
|
|
|
15
15
|
integrity: string;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
|
-
* GET
|
|
18
|
+
* GET a declared artefact URL and validate the response. Used by `cef typegen`
|
|
19
19
|
* to fetch model and peer-agent manifests declared in `cef.config.ts`.
|
|
20
20
|
*
|
|
21
|
+
* The declared value may be either the full artefact URL (e.g. a DDC
|
|
22
|
+
* `model.json` URL `.../<bucket>/models/<name>/<version>/model.json`, the
|
|
23
|
+
* contract `cef build`'s `parseModelRef` enforces) or a base URL that the
|
|
24
|
+
* artefact lives under (e.g. a peer-agent marketplace base). When the URL
|
|
25
|
+
* already ends with `<suffix>` it is fetched as-is; otherwise `<suffix>` is
|
|
26
|
+
* appended so a bare base still resolves. This keeps the model contract
|
|
27
|
+
* (full `model.json` URL) and the peer-agent base convention working
|
|
28
|
+
* through the same fetch path without double-appending `/model.json`.
|
|
29
|
+
*
|
|
21
30
|
* - Redirects are followed transparently (Node's built-in `fetch` does this
|
|
22
31
|
* by default with `redirect: "follow"`).
|
|
23
32
|
* - Content-Type is required to include `json` — anything else (HTML
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/typegen/fetch.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/typegen/fetch.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,GAAG,eAAe,GACrC,OAAO,CAAC,WAAW,CAAC,CAkCtB"}
|
package/dist/typegen/fetch.js
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
2
|
/**
|
|
3
|
-
* GET
|
|
3
|
+
* GET a declared artefact URL and validate the response. Used by `cef typegen`
|
|
4
4
|
* to fetch model and peer-agent manifests declared in `cef.config.ts`.
|
|
5
5
|
*
|
|
6
|
+
* The declared value may be either the full artefact URL (e.g. a DDC
|
|
7
|
+
* `model.json` URL `.../<bucket>/models/<name>/<version>/model.json`, the
|
|
8
|
+
* contract `cef build`'s `parseModelRef` enforces) or a base URL that the
|
|
9
|
+
* artefact lives under (e.g. a peer-agent marketplace base). When the URL
|
|
10
|
+
* already ends with `<suffix>` it is fetched as-is; otherwise `<suffix>` is
|
|
11
|
+
* appended so a bare base still resolves. This keeps the model contract
|
|
12
|
+
* (full `model.json` URL) and the peer-agent base convention working
|
|
13
|
+
* through the same fetch path without double-appending `/model.json`.
|
|
14
|
+
*
|
|
6
15
|
* - Redirects are followed transparently (Node's built-in `fetch` does this
|
|
7
16
|
* by default with `redirect: "follow"`).
|
|
8
17
|
* - Content-Type is required to include `json` — anything else (HTML
|
|
@@ -12,10 +21,13 @@ import crypto from "node:crypto";
|
|
|
12
21
|
* message so the CLI surfaces the failing URL to the author.
|
|
13
22
|
*/
|
|
14
23
|
export async function fetchJson(baseUrl, suffix) {
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
// If the declared URL already points at the artefact, use it verbatim;
|
|
25
|
+
// otherwise treat it as a base and append `<suffix>`. `new URL(rel, base)`
|
|
26
|
+
// requires the base to end with `/` for the path to be appended rather
|
|
27
|
+
// than replacing the last segment.
|
|
28
|
+
const url = baseUrl.endsWith(`/${suffix}`)
|
|
29
|
+
? baseUrl
|
|
30
|
+
: new URL(suffix, baseUrl.endsWith("/") ? baseUrl : baseUrl + "/").href;
|
|
19
31
|
const res = await fetch(url, { redirect: "follow" });
|
|
20
32
|
if (!res.ok) {
|
|
21
33
|
throw new Error(`[cef typegen] fetch ${url} → ${res.status}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/typegen/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAmBjC
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/typegen/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAmBjC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,MAAsC;IAEtC,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,mCAAmC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;QACxC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;IAE1E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,6BAA6B,EAAE,GAAG,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,oBAAqB,GAAa,CAAC,OAAO,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GACb,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cef-ai/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"esbuild": "^0.21.0",
|
|
21
21
|
"json-schema-to-typescript": "^14.0.0",
|
|
22
22
|
"typescript": "^5.4.0",
|
|
23
|
-
"@cef-ai/agent-sdk": "1.
|
|
23
|
+
"@cef-ai/agent-sdk": "1.2.0",
|
|
24
24
|
"@cef-ai/transport": "1.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|