hono-apcore 0.1.0 → 0.3.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.
Files changed (62) hide show
  1. package/README.md +60 -13
  2. package/dist/a2a/apcore-a2a.service.d.ts.map +1 -1
  3. package/dist/a2a/apcore-a2a.service.js +3 -0
  4. package/dist/a2a/apcore-a2a.service.js.map +1 -1
  5. package/dist/bridge/binding-loader.d.ts.map +1 -1
  6. package/dist/bridge/binding-loader.js +14 -16
  7. package/dist/bridge/binding-loader.js.map +1 -1
  8. package/dist/cli/apcore-cli.service.d.ts +4 -1
  9. package/dist/cli/apcore-cli.service.d.ts.map +1 -1
  10. package/dist/cli/apcore-cli.service.js +102 -2
  11. package/dist/cli/apcore-cli.service.js.map +1 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +4 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/core/apcore.d.ts +15 -48
  16. package/dist/core/apcore.d.ts.map +1 -1
  17. package/dist/core/apcore.js +29 -97
  18. package/dist/core/apcore.js.map +1 -1
  19. package/dist/core/apcore.node.d.ts +65 -0
  20. package/dist/core/apcore.node.d.ts.map +1 -0
  21. package/dist/core/apcore.node.js +120 -0
  22. package/dist/core/apcore.node.js.map +1 -0
  23. package/dist/core/executor.d.ts +10 -2
  24. package/dist/core/executor.d.ts.map +1 -1
  25. package/dist/core/executor.js +26 -1
  26. package/dist/core/executor.js.map +1 -1
  27. package/dist/core/middleware.d.ts +2 -2
  28. package/dist/core/middleware.d.ts.map +1 -1
  29. package/dist/core/middleware.js.map +1 -1
  30. package/dist/core/registry.d.ts +1 -1
  31. package/dist/core/registry.d.ts.map +1 -1
  32. package/dist/core/registry.js +4 -1
  33. package/dist/core/registry.js.map +1 -1
  34. package/dist/edge.d.ts +25 -0
  35. package/dist/edge.d.ts.map +1 -0
  36. package/dist/edge.js +54 -0
  37. package/dist/edge.js.map +1 -0
  38. package/dist/index.d.ts +5 -4
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +6 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/apcore-mcp.service.d.ts.map +1 -1
  43. package/dist/mcp/apcore-mcp.service.js +3 -1
  44. package/dist/mcp/apcore-mcp.service.js.map +1 -1
  45. package/dist/output/yaml-writer.d.ts +7 -1
  46. package/dist/output/yaml-writer.d.ts.map +1 -1
  47. package/dist/output/yaml-writer.js +17 -4
  48. package/dist/output/yaml-writer.js.map +1 -1
  49. package/dist/scanners/hono-route-scanner.d.ts +2 -2
  50. package/dist/scanners/hono-route-scanner.d.ts.map +1 -1
  51. package/dist/scanners/hono-route-scanner.js +48 -6
  52. package/dist/scanners/hono-route-scanner.js.map +1 -1
  53. package/dist/tools/define-tool.d.ts +1 -1
  54. package/dist/tools/define-tool.d.ts.map +1 -1
  55. package/dist/tools/define-tool.js +4 -1
  56. package/dist/tools/define-tool.js.map +1 -1
  57. package/dist/types.d.ts +38 -21
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/utils/module-factory.d.ts.map +1 -1
  60. package/dist/utils/module-factory.js +53 -3
  61. package/dist/utils/module-factory.js.map +1 -1
  62. package/package.json +45 -11
package/README.md CHANGED
@@ -14,7 +14,7 @@ you already have.
14
14
  - **Annotation inference** — `GET` → readonly + cacheable, `PUT` → idempotent, `DELETE` → destructive (RFC 9110 safe-method semantics)
15
15
  - **Multi-schema** — TypeBox, Zod 3, Zod 4, and plain JSON Schema, auto-detected through a priority chain
16
16
  - **Context, ACL, and identity** — the `apcore()` middleware builds a per-request apcore `Context` with W3C trace propagation, so ACL rules govern your routes too
17
- - **Runtime-agnostic core** — `apcore-mcp`, `apcore-cli`, and `apcore-a2a` are optional peers loaded lazily, so importing `hono-apcore` never drags `node:http` into an edge build
17
+ - **Runtime-agnostic core** — the `browser` / `worker` / `workerd` export conditions resolve to `hono-apcore/edge`, a core-only entry with no MCP, CLI, A2A, YAML file I/O, or static `node:*` imports; CI bundles it on every push
18
18
  - **CLI** — `hono-apcore scan | serve | export` works against a plain Hono app
19
19
  - **YAML bindings** — register modules declaratively, without touching source
20
20
 
@@ -35,7 +35,10 @@ npm install @sinclair/typebox # TypeBox schemas (recommende
35
35
  npm install zod # Zod schemas
36
36
  ```
37
37
 
38
- **Requirements:** Node.js >= 18, Hono >= 4 (tested with Hono 4.13).
38
+ **Requirements:** Node.js >= 20, Hono >= 4 (tested with Hono 4.13).
39
+ SDK minimums: apcore-js 0.32.3, apcore-toolkit 0.14.1; optional peers
40
+ apcore-mcp 0.23.4, apcore-cli 0.12.7, and apcore-a2a 0.8.5.
41
+ See [SDK upgrade notes](./docs/sdk-upgrade.md) for compatibility changes and new options.
39
42
 
40
43
  ## Quick start
41
44
 
@@ -132,7 +135,8 @@ const sendEmail = defineTool({
132
135
  | --- | --- |
133
136
  | `id` | Used verbatim. Otherwise `"<namespace>.<name>"`, with `name` snake-cased |
134
137
  | `inputSchema` / `outputSchema` | TypeBox, Zod, or plain JSON Schema |
135
- | `annotations` | `readonly`, `destructive`, `idempotent`, `requiresApproval`, `openWorld`, `streaming`, `cacheable`, … |
138
+ | `annotations` | Partial SDK annotations, including `discoverable` and `extra` |
139
+ | `metadata` / `display` / `version` | SDK metadata (including `async: true`), sparse surface display overlay, module version |
136
140
  | `params` | Per-parameter prose merged into the input schema. JavaScript cannot read a function's leading comments at run time the way Python reads a docstring, so this is explicit |
137
141
  | `handler` | `(inputs, context) => result`. A non-object result is wrapped as `{ result }` |
138
142
 
@@ -194,6 +198,8 @@ it.
194
198
 
195
199
  ```ts
196
200
  createApcore({
201
+ config?: Config, // shared SDK configuration, including extension roots
202
+ executorOptions?: { strategy?, approvalHandler?, policy?, toggleState?, eventEmitter? },
197
203
  extensionsDir?: string | null, // scanned by Registry.discover()
198
204
  acl?: ACL, // enforced by the Executor on every call
199
205
  middleware?: Middleware[], // apcore middleware installed on the Executor
@@ -220,6 +226,11 @@ createApcore({
220
226
  | `toOpenaiTools(opts?)` | OpenAI-compatible function definitions |
221
227
  | `close()` | Shut down the MCP and A2A surfaces |
222
228
 
229
+ The executor also exposes `callWithTrace(id, inputs?, context?, { strategy? })`
230
+ and `addStepMiddleware(middleware)`. Strategies can be SDK instances or registered
231
+ names. `config` is passed to both SDK objects; an explicitly configured
232
+ `extensions.root` or `extensions.roots` is discovered during `init()`.
233
+
223
234
  ### `apcore(instance | options, middlewareOptions?)`
224
235
 
225
236
  Hono middleware that puts the instance and a per-request apcore `Context` on the
@@ -310,6 +321,7 @@ whichever the host app installs (or neither) is fine. Register your own with
310
321
  Register modules without touching source:
311
322
 
312
323
  ```yaml
324
+ spec_version: "1.0"
313
325
  bindings:
314
326
  - module_id: email.send
315
327
  target: EmailService.send
@@ -318,6 +330,10 @@ bindings:
318
330
  type: object
319
331
  properties:
320
332
  to: { type: string }
333
+ output_schema:
334
+ type: object
335
+ properties:
336
+ sent: { type: boolean }
321
337
  tags: [email, mutate]
322
338
  annotations:
323
339
  readonly: false
@@ -330,7 +346,11 @@ await ap.loadBindings('./bindings.yaml', resolverFromObjects({ EmailService: mai
330
346
  ```
331
347
 
332
348
  Going the other way, `writeBindingsFile()` serialises scanned modules back out —
333
- which is what `hono-apcore scan --format yaml` does.
349
+ which is what `hono-apcore scan --format yaml` does. The toolkit parser rejects
350
+ unknown document/entry keys and one-sided inline schema pairs. Supply both
351
+ schemas or neither; move custom entry data into `metadata`. YAML annotations
352
+ use snake_case (`requires_approval`); TypeScript tool annotations use camelCase
353
+ (`requiresApproval`).
334
354
 
335
355
  ### CLI
336
356
 
@@ -352,6 +372,10 @@ apcore. TypeScript entries need a loader:
352
372
  npx tsx node_modules/.bin/hono-apcore scan ./src/app.ts
353
373
  ```
354
374
 
375
+ The optional `ap.cli.createProgram()` builds application module commands such
376
+ as `demo ping`, sharing the application's executor, ACL, middleware and approval
377
+ handler. It also adapts CLI `--trace` / `--strategy` calls to the core SDK.
378
+
355
379
  ### Configuration (`APCORE_*`)
356
380
 
357
381
  The canonical settings every apcore integration implements, read from the
@@ -371,13 +395,28 @@ environment and overridable via `settings`:
371
395
  | `APCORE_HOST` | str | `"0.0.0.0"` | Bind address when the transport is not stdio |
372
396
  | `APCORE_PORT` | int | `8808` | Bind port when the transport is not stdio |
373
397
 
374
- ### Optional peers are not re-exported
398
+ ### Entry points and edge builds
399
+
400
+ `hono-apcore` ships two entries:
401
+
402
+ | Entry | Contents |
403
+ | --- | --- |
404
+ | `hono-apcore` (Node default) | Core, MCP, CLI, A2A, YAML bindings loaded from disk |
405
+ | `hono-apcore/edge` | Core only: tools, route scanning, context, schema, ACL, config |
375
406
 
376
- Unlike the NestJS adapter, `hono-apcore` does **not** re-export the `apcore-mcp`
377
- / `apcore-cli` / `apcore-a2a` surfaces. Doing so would make them load eagerly,
378
- and `apcore-mcp` pulls in `node:http` — which breaks a Workers, Deno, or Bun
379
- build of an app that never uses the MCP surface. Import those symbols from their
380
- own packages:
407
+ Bundlers honouring the `browser`, `worker`, or `workerd` condition get
408
+ `hono-apcore/edge` from the bare `hono-apcore` specifier automatically. If your
409
+ bundler does not apply those conditions (some Deno/Bun setups), import the
410
+ subpath explicitly:
411
+
412
+ ```ts
413
+ import { createApcore, defineTool } from 'hono-apcore/edge';
414
+ ```
415
+
416
+ The edge entry deliberately excludes the optional MCP, CLI, and A2A surfaces,
417
+ file-backed YAML bindings, and the Node-only `Config` / `registerSysModules`
418
+ re-exports. The Node entry still re-exports all of them for backward
419
+ compatibility. Import peer symbols from their own packages:
381
420
 
382
421
  ```ts
383
422
  import { JWTAuthenticator, getCurrentIdentity } from 'apcore-mcp';
@@ -385,9 +424,17 @@ import { createCli } from 'apcore-cli';
385
424
  import { A2AClient } from 'apcore-a2a';
386
425
  ```
387
426
 
388
- `apcore-js` and `apcore-toolkit` *are* hard dependencies, so their common
389
- symbols (`ACL`, `Config`, `registerSysModules`, `TraceContext`, `BaseScanner`,
390
- `formatModules`, …) re-export from `hono-apcore` directly.
427
+ Surface subpaths are also available: `hono-apcore/mcp`, `hono-apcore/cli`, and
428
+ `hono-apcore/a2a`.
429
+
430
+ CI bundles both `dist/edge.js` and a consumer importing `hono-apcore` with
431
+ browser conditions, and fails if the entry chunk or any lazy chunk reaches
432
+ `node:http` / `node:https` or an optional apcore peer.
433
+
434
+ The edge entry's own chunk has no `node:*` imports. `apcore-js` still emits
435
+ lazy chunks for its Node-only registry discovery methods (`node:fs`,
436
+ `node:path`); those are never loaded unless you call `Registry.discover()` or
437
+ set `extensionsDir`.
391
438
 
392
439
  ## Examples
393
440
 
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-a2a.service.d.ts","sourceRoot":"","sources":["../../src/a2a/apcore-a2a.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,UAAU,CAAS;gBAGR,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,gBAAqB;IAGjD,0DAA0D;IAC1D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,yDAAyD;IACzD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;;OAIG;IACG,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQzE;;;OAGG;IACH,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,YAAY;CA0BrB"}
1
+ {"version":3,"file":"apcore-a2a.service.d.ts","sourceRoot":"","sources":["../../src/a2a/apcore-a2a.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,UAAU,CAAS;gBAGR,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,gBAAqB;IAGjD,0DAA0D;IAC1D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,yDAAyD;IACzD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;;;OAIG;IACG,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQzE;;;OAGG;IACH,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,YAAY;CA6BrB"}
@@ -71,6 +71,9 @@ export class ApcoreA2aService {
71
71
  metrics: opts.metrics,
72
72
  logLevel: opts.logLevel,
73
73
  shutdownTimeout: opts.shutdownTimeout,
74
+ pushNotifications: opts.pushNotifications,
75
+ sysModules: opts.sysModules,
76
+ discloseRefusalReason: opts.discloseRefusalReason,
74
77
  };
75
78
  for (const key of Object.keys(result)) {
76
79
  if (result[key] === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-a2a.service.js","sourceRoot":"","sources":["../../src/a2a/apcore-a2a.service.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAgB;IAIR;IACA;IACA;IALX,UAAU,GAAG,KAAK,CAAC;IAE3B,YACmB,QAAwB,EACxB,QAAwB,EACxB,UAA4B,EAAE;QAF9B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,YAAO,GAAP,OAAO,CAAuB;IAC9C,CAAC;IAEJ,0DAA0D;IAC1D,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,yDAAyD;IACzD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACtB,KAA0D,CACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,YAAY,EAAE,CACpB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAAqC;QACpD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,OAAQ,UAAwE,CAC9E,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAC7B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,YAAY,CAAC,SAAqC;QACxD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;QAC/C,MAAM,MAAM,GAA4B;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"apcore-a2a.service.js","sourceRoot":"","sources":["../../src/a2a/apcore-a2a.service.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,gBAAgB;IAIR;IACA;IACA;IALX,UAAU,GAAG,KAAK,CAAC;IAE3B,YACmB,QAAwB,EACxB,QAAwB,EACxB,UAA4B,EAAE;QAF9B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,aAAQ,GAAR,QAAQ,CAAgB;QACxB,YAAO,GAAP,OAAO,CAAuB;IAC9C,CAAC;IAEJ,0DAA0D;IAC1D,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,yDAAyD;IACzD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACtB,KAA0D,CACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,YAAY,EAAE,CACpB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,SAAqC;QACpD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAClD,OAAQ,UAAwE,CAC9E,IAAI,CAAC,QAAQ,CAAC,GAAG,EACjB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAC7B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,YAAY,CAAC,SAAqC;QACxD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;QAC/C,MAAM,MAAM,GAA4B;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"binding-loader.d.ts","sourceRoot":"","sources":["../../src/bridge/binding-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA0B1D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,MAAM,KACX,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;AAEnF;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAcnF;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,QAAQ,EAAE,cAAc,EACxB,aAAa,CAAC,EAAE,cAAc,YAAA;IAGjD;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkCxD;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGxD"}
1
+ {"version":3,"file":"binding-loader.d.ts","sourceRoot":"","sources":["../../src/bridge/binding-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAM1D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,MAAM,KACX,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;AAEnF;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAcnF;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;gBADd,QAAQ,EAAE,cAAc,EACxB,aAAa,CAAC,EAAE,cAAc,YAAA;IAGjD;;;;;OAKG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCxD;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAIxD"}
@@ -1,7 +1,6 @@
1
- import { readFile } from 'node:fs/promises';
2
1
  import * as yaml from 'js-yaml';
3
- import { createScannedModule } from 'apcore-toolkit';
4
- import { EMPTY_OBJECT_SCHEMA, normalizeResult, toModuleAnnotations, } from '../utils/module-factory.js';
2
+ import { parseBindingDocument } from 'apcore-toolkit/browser';
3
+ import { EMPTY_OBJECT_SCHEMA, normalizeResult, } from '../utils/module-factory.js';
5
4
  /**
6
5
  * Builds a resolver over a map of named service objects.
7
6
  *
@@ -46,27 +45,25 @@ export class ApBindingLoader {
46
45
  * @returns The module IDs that were registered.
47
46
  */
48
47
  async loadFromString(content) {
49
- const parsed = (yaml.load(content) ?? {});
50
- const bindings = parsed.bindings ?? [];
48
+ const parsed = yaml.load(content);
49
+ // Preserve empty documents; validate non-empty documents with the SDK parser.
50
+ const empty = parsed == null || (typeof parsed === 'object' && !Array.isArray(parsed) && Object.keys(parsed).length === 0);
51
+ const bindings = parseBindingDocument(empty ? { bindings: [] } : parsed);
51
52
  const ids = [];
52
53
  for (const binding of bindings) {
53
- const moduleId = binding.module_id;
54
54
  const handler = this.resolveTarget?.(binding.target);
55
55
  const execute = handler
56
56
  ? async (inputs, context) => normalizeResult(await handler(inputs, context))
57
57
  : async () => ({
58
58
  error: `No handler resolved for binding target "${binding.target}"`,
59
59
  });
60
- const scanned = createScannedModule({
61
- moduleId,
62
- description: binding.description,
63
- inputSchema: binding.input_schema ?? { ...EMPTY_OBJECT_SCHEMA },
64
- outputSchema: binding.output_schema ?? { ...EMPTY_OBJECT_SCHEMA },
65
- tags: binding.tags ?? [],
66
- target: binding.target,
67
- annotations: toModuleAnnotations(binding.annotations),
68
- documentation: binding.documentation ?? null,
69
- });
60
+ const scanned = {
61
+ ...binding,
62
+ inputSchema: Object.keys(binding.inputSchema).length
63
+ ? binding.inputSchema : { ...EMPTY_OBJECT_SCHEMA },
64
+ outputSchema: Object.keys(binding.outputSchema).length
65
+ ? binding.outputSchema : { ...EMPTY_OBJECT_SCHEMA },
66
+ };
70
67
  ids.push(await this.registry.registerScanned(scanned, execute));
71
68
  }
72
69
  return ids;
@@ -78,6 +75,7 @@ export class ApBindingLoader {
78
75
  * @returns The module IDs that were registered.
79
76
  */
80
77
  async loadFromFile(filePath) {
78
+ const { readFile } = await import('node:fs/promises');
81
79
  return this.loadFromString(await readFile(filePath, 'utf-8'));
82
80
  }
83
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"binding-loader.js","sourceRoot":"","sources":["../../src/bridge/binding-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AA+BpC;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA+B;IACjE,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAEjD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAEhC,MAAM,EAAE,GAAI,QAAoC,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,OAAO,SAAS,CAAC;QAE/C,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACxB,EAAsC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAEP;IACA;IAFnB,YACmB,QAAwB,EACxB,aAA8B;QAD9B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,kBAAa,GAAb,aAAa,CAAiB;IAC9C,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAiB,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,MAAM,GAAG,GAAa,EAAE,CAAC;QAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAErD,MAAM,OAAO,GAAmB,OAAO;gBACrC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5E,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACX,KAAK,EAAE,2CAA2C,OAAO,CAAC,MAAM,GAAG;iBACpE,CAAC,CAAC;YAEP,MAAM,OAAO,GAAG,mBAAmB,CAAC;gBAClC,QAAQ;gBACR,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EACR,OAAO,CAAC,YAAwC,IAAI,EAAE,GAAG,mBAAmB,EAAE;gBACjF,YAAY,EACT,OAAO,CAAC,aAAyC,IAAI,EAAE,GAAG,mBAAmB,EAAE;gBAClF,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,WAAW,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAA4C,CAAC;gBACtF,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;aAC7C,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"binding-loader.js","sourceRoot":"","sources":["../../src/bridge/binding-loader.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { ApcoreExecutor } from '../core/executor.js';
1
2
  import type { ApcoreRegistry } from '../core/registry.js';
2
3
  import type { ApcoreCliOptions } from '../types.js';
3
4
  /**
@@ -18,8 +19,10 @@ import type { ApcoreCliOptions } from '../types.js';
18
19
  export declare class ApcoreCliService {
19
20
  private readonly registry;
20
21
  private readonly options;
22
+ private readonly executor?;
21
23
  private configured;
22
- constructor(registry: ApcoreRegistry, options?: ApcoreCliOptions);
24
+ private readonly callOptions;
25
+ constructor(registry: ApcoreRegistry, options?: ApcoreCliOptions, executor?: ApcoreExecutor | undefined);
23
26
  /** Number of modules currently registered. */
24
27
  get moduleCount(): number;
25
28
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-cli.service.d.ts","sourceRoot":"","sources":["../../src/cli/apcore-cli.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,UAAU,CAAS;gBAGR,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,gBAAqB;IAGjD,8CAA8C;IAC9C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;;;;;OAQG;IACG,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB7D;;;OAGG;IACG,gBAAgB,CACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAahB,yEAAyE;IACnE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,iFAAiF;IAC3E,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;OAGG;YACW,kBAAkB;CAWjC"}
1
+ {"version":3,"file":"apcore-cli.service.d.ts","sourceRoot":"","sources":["../../src/cli/apcore-cli.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,gBAAgB;IASzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAV5B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAIvB;gBAGc,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,gBAAqB,EAC9B,QAAQ,CAAC,EAAE,cAAc,YAAA;IAG5C,8CAA8C;IAC9C,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;;;;;OAQG;IACG,aAAa,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsG7D;;;OAGG;IACG,gBAAgB,CACpB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAahB,yEAAyE;IACnE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,iFAAiF;IAC3E,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;;OAGG;YACW,kBAAkB;CAWjC"}
@@ -1,3 +1,6 @@
1
+ import { CallbackApprovalHandler, Context as ApcoreContext, createApprovalResult, Executor } from 'apcore-js';
2
+ import { annotationsToDict } from 'apcore-toolkit/browser';
3
+ import { ApcoreExecutor } from '../core/executor.js';
1
4
  /**
2
5
  * Exposes `apcore-cli` for a Hono app: build a Commander program whose
3
6
  * commands are the app's registered apcore modules.
@@ -16,10 +19,13 @@
16
19
  export class ApcoreCliService {
17
20
  registry;
18
21
  options;
22
+ executor;
19
23
  configured = false;
20
- constructor(registry, options = {}) {
24
+ callOptions = new WeakMap();
25
+ constructor(registry, options = {}, executor) {
21
26
  this.registry = registry;
22
27
  this.options = options;
28
+ this.executor = executor;
23
29
  }
24
30
  /** Number of modules currently registered. */
25
31
  get moduleCount() {
@@ -37,7 +43,101 @@ export class ApcoreCliService {
37
43
  async createProgram(extensionsDir) {
38
44
  const cli = await import('apcore-cli');
39
45
  await this.applyModuleOptions();
40
- return cli.createCli(extensionsDir ?? this.options.extensionsDir, this.options.progName, this.options.verboseHelp ?? false);
46
+ const executor = this.executor ?? new ApcoreExecutor(new Executor({ registry: this.registry.raw }));
47
+ const raw = executor.raw;
48
+ let approvalOptions = { autoApprove: false, timeout: undefined };
49
+ // Child Contexts share data, so approval options follow nested SDK calls
50
+ // without adding integration keys to the public context or global state.
51
+ const callOptions = this.callOptions;
52
+ const cliContext = (context) => context ?? cli.buildCliContext() ?? ApcoreContext.create();
53
+ const runWithContext = async (id, context, run) => {
54
+ const ctx = cliContext(context);
55
+ callOptions.set(ctx.data, { ...approvalOptions, moduleId: id });
56
+ try {
57
+ return await run(ctx);
58
+ }
59
+ finally {
60
+ callOptions.delete(ctx.data);
61
+ }
62
+ };
63
+ const fallback = new CallbackApprovalHandler(async (request) => {
64
+ const options = callOptions.get(request.context.data);
65
+ // CLI's own annotation precheck has already completed for the root
66
+ // command. Nested calls and ACL/policy-only requirements still ask here.
67
+ if (options?.moduleId === request.moduleId &&
68
+ this.registry.getDefinition(request.moduleId)?.annotations?.requiresApproval) {
69
+ return createApprovalResult({ status: 'approved', approvedBy: 'cli_precheck' });
70
+ }
71
+ const terminal = new cli.CliApprovalHandler(options?.autoApprove, options?.timeout);
72
+ const result = await terminal.requestApproval({
73
+ module_id: request.moduleId,
74
+ requires_approval: true,
75
+ annotations: annotationsToDict(request.annotations),
76
+ });
77
+ return createApprovalResult({
78
+ status: result.status,
79
+ approvedBy: result.approved_by,
80
+ reason: result.reason,
81
+ });
82
+ });
83
+ // CLI 0.12 reads wire-format annotation keys. Keep that projection at
84
+ // the surface boundary; the shared Registry retains SDK annotations.
85
+ const registry = {
86
+ list: () => this.registry.list(),
87
+ getDefinition: (id) => {
88
+ const definition = this.registry.getDefinition(id);
89
+ return definition ? {
90
+ ...definition,
91
+ annotations: annotationsToDict(definition.annotations) ?? undefined,
92
+ } : null;
93
+ },
94
+ };
95
+ // Adapt the CLI's two-argument stream and third-position trace options.
96
+ // Only supply its approval fallback when the host has no handler.
97
+ const cliExecutor = {
98
+ registry,
99
+ call: (id, input, context) => runWithContext(id, context, (ctx) => raw.call(id, input, ctx)),
100
+ validate: raw.validate.bind(raw),
101
+ stream: async function* (id, input) {
102
+ const ctx = cliContext();
103
+ callOptions.set(ctx.data, { ...approvalOptions, moduleId: id });
104
+ try {
105
+ yield* raw.stream(id, input, ctx);
106
+ }
107
+ finally {
108
+ callOptions.delete(ctx.data);
109
+ }
110
+ },
111
+ callWithTrace: (id, input, options) => runWithContext(id, undefined, (ctx) => executor.callWithTrace(id, input, ctx, options)),
112
+ describePipeline: raw.describePipeline.bind(raw),
113
+ listStrategies: raw.listStrategies.bind(raw),
114
+ currentStrategy: raw.currentStrategy,
115
+ governanceState: raw.governanceState.bind(raw),
116
+ setAcl: raw.setAcl.bind(raw),
117
+ setApprovalHandler: () => {
118
+ if (!raw.governanceState().approvalHandlerConfigured)
119
+ raw.setApprovalHandler(fallback);
120
+ },
121
+ };
122
+ const bridge = cliExecutor;
123
+ const program = cli.createCli({
124
+ extensionsDir: extensionsDir ?? this.options.extensionsDir,
125
+ progName: this.options.progName,
126
+ allOptions: this.options.verboseHelp ?? false,
127
+ registry,
128
+ executor: bridge,
129
+ });
130
+ program.hook('preAction', (_parent, command) => {
131
+ const options = command.opts();
132
+ approvalOptions = { autoApprove: options.yes === true, timeout: options.approvalTimeout };
133
+ });
134
+ const modules = new cli.GroupedModuleGroup(registry, bridge);
135
+ for (const name of modules.listCommands()) {
136
+ const command = modules.getCommand(name);
137
+ if (command)
138
+ program.addCommand(command);
139
+ }
140
+ return program;
41
141
  }
42
142
  /**
43
143
  * Add `--help --man` support to an existing Commander program, so
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-cli.service.js","sourceRoot":"","sources":["../../src/cli/apcore-cli.service.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,gBAAgB;IAIR;IACA;IAJX,UAAU,GAAG,KAAK,CAAC;IAE3B,YACmB,QAAwB,EACxB,UAA4B,EAAE;QAD9B,aAAQ,GAAR,QAAQ,CAAgB;QACxB,YAAO,GAAP,OAAO,CAAuB;IAC9C,CAAC;IAEJ,8CAA8C;IAC9C,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,aAAsB;QACxC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEhC,OACE,GAAG,CAAC,SAKL,CACC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAClC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,WAAoB,EACpB,OAAgB;QAEhB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAErC,GAAG,CAAC,gBAOL,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC3F,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,UAAU,CAAC,GAAkB;QACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,GAAG,CAAC,UAA2C,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,cAAc,CAAC,OAAgB;QACnC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,GAAG,CAAC,cAA6C,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB;QAC9B,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"apcore-cli.service.js","sourceRoot":"","sources":["../../src/cli/apcore-cli.service.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuOA,6EAA6E;AAC7E,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqDlF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA4OA,6EAA6E;AAC7E,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqDlF"}
package/dist/cli.js CHANGED
@@ -4,7 +4,7 @@ import { writeFile } from 'node:fs/promises';
4
4
  import { pathToFileURL } from 'node:url';
5
5
  import { resolve as resolvePath } from 'node:path';
6
6
  import { formatModules } from 'apcore-toolkit';
7
- import { HonoApcore } from './core/apcore.js';
7
+ import { HonoApcore } from './core/apcore.node.js';
8
8
  import { HonoRouteScanner } from './scanners/hono-route-scanner.js';
9
9
  import { renderBindingsYaml, writeBindingsFile } from './output/yaml-writer.js';
10
10
  import { ApcoreMcpService } from './mcp/apcore-mcp.service.js';
@@ -156,6 +156,9 @@ async function commandServe(entry, values) {
156
156
  const settings = loadSettings();
157
157
  await instance.init(app ?? undefined, routeOptions(values, instance));
158
158
  if (values['bindings']) {
159
+ if (typeof instance.loadBindings !== 'function') {
160
+ throw new Error('--bindings requires an app built from the Node entry (hono-apcore), not hono-apcore/edge.');
161
+ }
159
162
  await instance.loadBindings(values['bindings']);
160
163
  }
161
164
  // A zero-config entry (a bare Hono app) still gets an MCP surface here, so
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,26 @@
1
1
  import { ApcoreRegistry } from './registry.js';
2
2
  import { ApcoreExecutor } from './executor.js';
3
- import { ApcoreMcpService } from '../mcp/apcore-mcp.service.js';
4
- import { ApcoreCliService } from '../cli/apcore-cli.service.js';
5
- import { ApcoreA2aService } from '../a2a/apcore-a2a.service.js';
6
3
  import { HonoContextFactory } from '../context/hono-context.factory.js';
7
4
  import type { HonoAppLike } from '../scanners/hono-route-scanner.js';
8
- import type { TargetResolver } from '../bridge/binding-loader.js';
9
- import type { MountableApp } from '../mcp/mount.js';
10
- import type { McpApp } from '../mcp/apcore-mcp.service.js';
11
5
  import type { ApcoreSettings } from '../config.js';
12
- import type { ApToolDefinition, HonoApcoreOptions, MountMcpOptions, RegisterMethodOptions, RegisterObjectOptions, RouteScanOptions } from '../types.js';
6
+ import type { ApToolDefinition, HonoApcoreCoreOptions, RegisterMethodOptions, RegisterObjectOptions, RouteScanOptions } from '../types.js';
13
7
  /**
14
- * The single entry point for wiring apcore into a Hono app.
8
+ * Core entry point for wiring apcore into a Hono app.
15
9
  *
16
10
  * Owns the apcore `Registry` and `Executor`, the tool/route registration
17
- * surface, and the optional MCP, CLI, and A2A services. Everything else in
18
- * this package hangs off an instance of this class.
11
+ * surface, and route scanning. This is the implementation behind both package
12
+ * entries: the Node subclass adds MCP, CLI, A2A, and YAML bindings, while the
13
+ * edge entry exposes this class directly.
19
14
  *
20
15
  * @example
21
16
  * ```ts
22
- * const ap = createApcore({
23
- * tools: [listTodos, addTodo],
24
- * mcp: { explorer: true, allowExecute: true },
25
- * });
17
+ * const ap = createApcore({ tools: [listTodos, addTodo] });
26
18
  *
27
19
  * app.use('*', apcore(ap));
28
20
  * await ap.init(app); // register tools, scan routes
29
- * await ap.mountMcp(app); // serve MCP on the same port
30
21
  * ```
31
22
  */
32
23
  export declare class HonoApcore {
33
- private readonly options;
34
24
  /** Canonical `APCORE_*` settings, environment merged with `options.settings`. */
35
25
  readonly settings: ApcoreSettings;
36
26
  /** Registry wrapper — register and inspect modules. */
@@ -39,12 +29,10 @@ export declare class HonoApcore {
39
29
  readonly executor: ApcoreExecutor;
40
30
  /** Builds per-request apcore `Context` objects from Hono requests. */
41
31
  readonly contextFactory: HonoContextFactory;
42
- private readonly _mcp;
43
- private readonly _cli;
44
- private readonly _a2a;
32
+ protected readonly options: HonoApcoreCoreOptions;
45
33
  private readonly scanner;
46
34
  private initPromise;
47
- constructor(options?: HonoApcoreOptions);
35
+ constructor(options?: HonoApcoreCoreOptions);
48
36
  /**
49
37
  * The route-scan options this instance would use: the `APCORE_*` settings
50
38
  * with the constructor's `routes` block layered on top.
@@ -53,12 +41,6 @@ export declare class HonoApcore {
53
41
  * produces the same module set the app itself registers.
54
42
  */
55
43
  get routeOptions(): RouteScanOptions;
56
- /** The MCP service, or `null` when `options.mcp` was omitted. */
57
- get mcp(): ApcoreMcpService | null;
58
- /** The CLI service, or `null` when `options.cli` was omitted. */
59
- get cli(): ApcoreCliService | null;
60
- /** The A2A service, or `null` when `options.a2a` was omitted. */
61
- get a2a(): ApcoreA2aService | null;
62
44
  /** Register one tool definition. Returns its module ID. */
63
45
  registerTool(tool: ApToolDefinition): Promise<string>;
64
46
  /** Register several tool definitions. Returns their module IDs. */
@@ -78,13 +60,6 @@ export declare class HonoApcore {
78
60
  * @returns The module IDs that were registered.
79
61
  */
80
62
  scanRoutes(app: HonoAppLike, options?: RouteScanOptions): Promise<string[]>;
81
- /**
82
- * Load a YAML bindings file and register its entries.
83
- *
84
- * @param filePath - Path to the YAML file. Defaults to `options.bindings`.
85
- * @param resolveTarget - Resolves each entry's `target` to a live handler.
86
- */
87
- loadBindings(filePath?: string, resolveTarget?: TargetResolver): Promise<string[]>;
88
63
  /**
89
64
  * Discover extensions, register the configured tools and bindings, scan the
90
65
  * app's routes, and start any surface configured to run standalone.
@@ -105,25 +80,17 @@ export declare class HonoApcore {
105
80
  private mergeRouteOptions;
106
81
  private runInit;
107
82
  /**
108
- * Mount the MCP endpoint into the Hono app so one port serves both HTTP and
109
- * MCP. Node runtime only — see {@link mountMcp}.
83
+ * Register file-backed bindings before routes are scanned.
110
84
  *
111
- * @throws {Error} When the instance was created without `options.mcp`.
85
+ * The core entry leaves this empty; the Node entry loads YAML from disk.
112
86
  */
113
- mountMcp(app: MountableApp, options?: MountMcpOptions): Promise<McpApp>;
87
+ protected loadConfiguredBindings(): Promise<void>;
114
88
  /**
115
- * Convert the registered modules to OpenAI-compatible tool definitions.
89
+ * Start configured standalone surfaces after every module is registered.
116
90
  *
117
- * @throws {Error} When the instance was created without `options.mcp`.
91
+ * The core entry leaves this empty; the Node entry starts MCP, CLI, and A2A.
118
92
  */
119
- toOpenaiTools(options?: {
120
- embedAnnotations?: boolean;
121
- strict?: boolean;
122
- tags?: string[];
123
- prefix?: string;
124
- }): Promise<unknown[]>;
125
- /** Shut down the MCP and A2A surfaces. */
126
- close(): Promise<void>;
93
+ protected startSurfaces(): Promise<void>;
127
94
  }
128
95
  /**
129
96
  * Create a {@link HonoApcore} instance.
@@ -131,5 +98,5 @@ export declare class HonoApcore {
131
98
  * Sugar for `new HonoApcore(options)`, matching the `createX()` style the
132
99
  * Hono ecosystem uses.
133
100
  */
134
- export declare function createApcore(options?: HonoApcoreOptions): HonoApcore;
101
+ export declare function createApcore(options?: HonoApcoreCoreOptions): HonoApcore;
135
102
  //# sourceMappingURL=apcore.d.ts.map