hono-apcore 0.1.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/LICENSE +190 -0
- package/README.md +426 -0
- package/dist/a2a/apcore-a2a.service.d.ts +44 -0
- package/dist/a2a/apcore-a2a.service.d.ts.map +1 -0
- package/dist/a2a/apcore-a2a.service.js +82 -0
- package/dist/a2a/apcore-a2a.service.js.map +1 -0
- package/dist/a2a/index.d.ts +2 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +2 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/bridge/binding-loader.d.ts +45 -0
- package/dist/bridge/binding-loader.d.ts.map +1 -0
- package/dist/bridge/binding-loader.js +84 -0
- package/dist/bridge/binding-loader.js.map +1 -0
- package/dist/bridge/index.d.ts +3 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +2 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/cli/apcore-cli.service.d.ts +50 -0
- package/dist/cli/apcore-cli.service.d.ts.map +1 -0
- package/dist/cli/apcore-cli.service.js +76 -0
- package/dist/cli/apcore-cli.service.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +247 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +55 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +86 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +27 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +27 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/hono-context.factory.d.ts +61 -0
- package/dist/context/hono-context.factory.d.ts.map +1 -0
- package/dist/context/hono-context.factory.js +117 -0
- package/dist/context/hono-context.factory.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/core/apcore.d.ts +135 -0
- package/dist/core/apcore.d.ts.map +1 -0
- package/dist/core/apcore.js +257 -0
- package/dist/core/apcore.js.map +1 -0
- package/dist/core/executor.d.ts +32 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/core/executor.js +41 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/middleware.d.ts +61 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/middleware.js +51 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/registry.d.ts +79 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +218 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/apcore-mcp.service.d.ts +83 -0
- package/dist/mcp/apcore-mcp.service.d.ts.map +1 -0
- package/dist/mcp/apcore-mcp.service.js +189 -0
- package/dist/mcp/apcore-mcp.service.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mount.d.ts +51 -0
- package/dist/mcp/mount.d.ts.map +1 -0
- package/dist/mcp/mount.js +95 -0
- package/dist/mcp/mount.js.map +1 -0
- package/dist/output/index.d.ts +3 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +2 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/yaml-writer.d.ts +31 -0
- package/dist/output/yaml-writer.d.ts.map +1 -0
- package/dist/output/yaml-writer.js +49 -0
- package/dist/output/yaml-writer.js.map +1 -0
- package/dist/scanners/hono-route-scanner.d.ts +60 -0
- package/dist/scanners/hono-route-scanner.d.ts.map +1 -0
- package/dist/scanners/hono-route-scanner.js +217 -0
- package/dist/scanners/hono-route-scanner.js.map +1 -0
- package/dist/scanners/index.d.ts +3 -0
- package/dist/scanners/index.d.ts.map +1 -0
- package/dist/scanners/index.js +2 -0
- package/dist/scanners/index.js.map +1 -0
- package/dist/schema/adapters/json-schema.adapter.d.ts +23 -0
- package/dist/schema/adapters/json-schema.adapter.d.ts.map +1 -0
- package/dist/schema/adapters/json-schema.adapter.js +40 -0
- package/dist/schema/adapters/json-schema.adapter.js.map +1 -0
- package/dist/schema/adapters/schema-adapter.interface.d.ts +24 -0
- package/dist/schema/adapters/schema-adapter.interface.d.ts.map +1 -0
- package/dist/schema/adapters/schema-adapter.interface.js +2 -0
- package/dist/schema/adapters/schema-adapter.interface.js.map +1 -0
- package/dist/schema/adapters/typebox.adapter.d.ts +26 -0
- package/dist/schema/adapters/typebox.adapter.d.ts.map +1 -0
- package/dist/schema/adapters/typebox.adapter.js +39 -0
- package/dist/schema/adapters/typebox.adapter.js.map +1 -0
- package/dist/schema/adapters/zod.adapter.d.ts +17 -0
- package/dist/schema/adapters/zod.adapter.d.ts.map +1 -0
- package/dist/schema/adapters/zod.adapter.js +372 -0
- package/dist/schema/adapters/zod.adapter.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +5 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/schema-extractor.d.ts +51 -0
- package/dist/schema/schema-extractor.d.ts.map +1 -0
- package/dist/schema/schema-extractor.js +89 -0
- package/dist/schema/schema-extractor.js.map +1 -0
- package/dist/tools/define-tool.d.ts +68 -0
- package/dist/tools/define-tool.d.ts.map +1 -0
- package/dist/tools/define-tool.js +122 -0
- package/dist/tools/define-tool.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +246 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/id-generator.d.ts +52 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +87 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/module-factory.d.ts +34 -0
- package/dist/utils/module-factory.d.ts.map +1 -0
- package/dist/utils/module-factory.js +59 -0
- package/dist/utils/module-factory.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages the A2A (Agent-to-Agent) server that exposes the registered apcore
|
|
3
|
+
* modules as agent skills.
|
|
4
|
+
*
|
|
5
|
+
* `apcore-a2a` is an **optional** peer dependency, loaded lazily.
|
|
6
|
+
*
|
|
7
|
+
* - **Standalone** — set `port` and call {@link start}; the A2A server binds
|
|
8
|
+
* its own port alongside the Hono HTTP server.
|
|
9
|
+
* - **Embedded** — {@link asyncServe} returns an Express-compatible app you
|
|
10
|
+
* can mount behind a reverse proxy or inside a Node server.
|
|
11
|
+
*/
|
|
12
|
+
export class ApcoreA2aService {
|
|
13
|
+
registry;
|
|
14
|
+
executor;
|
|
15
|
+
options;
|
|
16
|
+
_isRunning = false;
|
|
17
|
+
constructor(registry, executor, options = {}) {
|
|
18
|
+
this.registry = registry;
|
|
19
|
+
this.executor = executor;
|
|
20
|
+
this.options = options;
|
|
21
|
+
}
|
|
22
|
+
/** Whether the standalone A2A server has been started. */
|
|
23
|
+
get isRunning() {
|
|
24
|
+
return this._isRunning;
|
|
25
|
+
}
|
|
26
|
+
/** Number of skills (modules) exposed to A2A clients. */
|
|
27
|
+
get skillCount() {
|
|
28
|
+
return this.registry.list().length;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Start a standalone A2A HTTP server with the configured options.
|
|
32
|
+
*
|
|
33
|
+
* Called automatically by {@link HonoApcore.init} when `port` is set.
|
|
34
|
+
*/
|
|
35
|
+
async start() {
|
|
36
|
+
const { serve } = await import('apcore-a2a');
|
|
37
|
+
this._isRunning = true;
|
|
38
|
+
serve(this.executor.raw, this.serveOptions());
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build an embeddable A2A application without binding a port.
|
|
42
|
+
*
|
|
43
|
+
* @param overrides - Option overrides merged over the configured values.
|
|
44
|
+
*/
|
|
45
|
+
async asyncServe(overrides) {
|
|
46
|
+
const { asyncServe } = await import('apcore-a2a');
|
|
47
|
+
return asyncServe(this.executor.raw, this.serveOptions(overrides));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Mark the service stopped. The underlying HTTP server owns its own
|
|
51
|
+
* lifecycle and shuts down with the process.
|
|
52
|
+
*/
|
|
53
|
+
stop() {
|
|
54
|
+
this._isRunning = false;
|
|
55
|
+
}
|
|
56
|
+
serveOptions(overrides) {
|
|
57
|
+
const opts = { ...this.options, ...overrides };
|
|
58
|
+
const result = {
|
|
59
|
+
name: opts.name,
|
|
60
|
+
description: opts.description,
|
|
61
|
+
version: opts.version,
|
|
62
|
+
url: opts.url,
|
|
63
|
+
host: opts.host,
|
|
64
|
+
port: opts.port,
|
|
65
|
+
auth: opts.auth,
|
|
66
|
+
taskStore: opts.taskStore,
|
|
67
|
+
corsOrigins: opts.corsOrigins,
|
|
68
|
+
explorer: opts.explorer,
|
|
69
|
+
explorerPrefix: opts.explorerPrefix,
|
|
70
|
+
executionTimeout: opts.executionTimeout,
|
|
71
|
+
metrics: opts.metrics,
|
|
72
|
+
logLevel: opts.logLevel,
|
|
73
|
+
shutdownTimeout: opts.shutdownTimeout,
|
|
74
|
+
};
|
|
75
|
+
for (const key of Object.keys(result)) {
|
|
76
|
+
if (result[key] === undefined)
|
|
77
|
+
delete result[key];
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=apcore-a2a.service.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/a2a/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a2a/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ApcoreRegistry } from '../core/registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the `"Object.method"` target of a binding entry to a live handler.
|
|
4
|
+
*
|
|
5
|
+
* Returning `undefined` leaves the module registered but non-functional,
|
|
6
|
+
* which surfaces the missing wiring at call time rather than at boot.
|
|
7
|
+
*/
|
|
8
|
+
export type TargetResolver = (target: string) => ((inputs: Record<string, unknown>, context?: unknown) => unknown) | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Builds a resolver over a map of named service objects.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* const loader = new ApBindingLoader(apcore.registry, resolverFromObjects({ TodoService: todo }));
|
|
15
|
+
* await loader.loadFromFile('./bindings.yaml'); // target: TodoService.list
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolverFromObjects(objects: Record<string, object>): TargetResolver;
|
|
19
|
+
/**
|
|
20
|
+
* Registers apcore modules declared in a YAML bindings file — the zero-code
|
|
21
|
+
* path for exposing existing functions as AI tools.
|
|
22
|
+
*
|
|
23
|
+
* Uses apcore-toolkit's `createScannedModule()` to build the standard
|
|
24
|
+
* intermediate, then hands it to {@link ApcoreRegistry.registerScanned}.
|
|
25
|
+
*/
|
|
26
|
+
export declare class ApBindingLoader {
|
|
27
|
+
private readonly registry;
|
|
28
|
+
private readonly resolveTarget?;
|
|
29
|
+
constructor(registry: ApcoreRegistry, resolveTarget?: TargetResolver | undefined);
|
|
30
|
+
/**
|
|
31
|
+
* Parse YAML describing bindings and register each entry.
|
|
32
|
+
*
|
|
33
|
+
* @param content - Raw YAML string.
|
|
34
|
+
* @returns The module IDs that were registered.
|
|
35
|
+
*/
|
|
36
|
+
loadFromString(content: string): Promise<string[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Read a YAML bindings file from disk and register its entries.
|
|
39
|
+
*
|
|
40
|
+
* @param filePath - Absolute or CWD-relative path to the YAML file.
|
|
41
|
+
* @returns The module IDs that were registered.
|
|
42
|
+
*/
|
|
43
|
+
loadFromFile(filePath: string): Promise<string[]>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=binding-loader.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import * as yaml from 'js-yaml';
|
|
3
|
+
import { createScannedModule } from 'apcore-toolkit';
|
|
4
|
+
import { EMPTY_OBJECT_SCHEMA, normalizeResult, toModuleAnnotations, } from '../utils/module-factory.js';
|
|
5
|
+
/**
|
|
6
|
+
* Builds a resolver over a map of named service objects.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const loader = new ApBindingLoader(apcore.registry, resolverFromObjects({ TodoService: todo }));
|
|
11
|
+
* await loader.loadFromFile('./bindings.yaml'); // target: TodoService.list
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export function resolverFromObjects(objects) {
|
|
15
|
+
return (target) => {
|
|
16
|
+
const [objectName, methodName] = target.split('.');
|
|
17
|
+
if (!objectName || !methodName)
|
|
18
|
+
return undefined;
|
|
19
|
+
const instance = objects[objectName];
|
|
20
|
+
if (!instance)
|
|
21
|
+
return undefined;
|
|
22
|
+
const fn = instance[methodName];
|
|
23
|
+
if (typeof fn !== 'function')
|
|
24
|
+
return undefined;
|
|
25
|
+
return (inputs, context) => fn.call(instance, inputs, context);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Registers apcore modules declared in a YAML bindings file — the zero-code
|
|
30
|
+
* path for exposing existing functions as AI tools.
|
|
31
|
+
*
|
|
32
|
+
* Uses apcore-toolkit's `createScannedModule()` to build the standard
|
|
33
|
+
* intermediate, then hands it to {@link ApcoreRegistry.registerScanned}.
|
|
34
|
+
*/
|
|
35
|
+
export class ApBindingLoader {
|
|
36
|
+
registry;
|
|
37
|
+
resolveTarget;
|
|
38
|
+
constructor(registry, resolveTarget) {
|
|
39
|
+
this.registry = registry;
|
|
40
|
+
this.resolveTarget = resolveTarget;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parse YAML describing bindings and register each entry.
|
|
44
|
+
*
|
|
45
|
+
* @param content - Raw YAML string.
|
|
46
|
+
* @returns The module IDs that were registered.
|
|
47
|
+
*/
|
|
48
|
+
async loadFromString(content) {
|
|
49
|
+
const parsed = (yaml.load(content) ?? {});
|
|
50
|
+
const bindings = parsed.bindings ?? [];
|
|
51
|
+
const ids = [];
|
|
52
|
+
for (const binding of bindings) {
|
|
53
|
+
const moduleId = binding.module_id;
|
|
54
|
+
const handler = this.resolveTarget?.(binding.target);
|
|
55
|
+
const execute = handler
|
|
56
|
+
? async (inputs, context) => normalizeResult(await handler(inputs, context))
|
|
57
|
+
: async () => ({
|
|
58
|
+
error: `No handler resolved for binding target "${binding.target}"`,
|
|
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
|
+
});
|
|
70
|
+
ids.push(await this.registry.registerScanned(scanned, execute));
|
|
71
|
+
}
|
|
72
|
+
return ids;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Read a YAML bindings file from disk and register its entries.
|
|
76
|
+
*
|
|
77
|
+
* @param filePath - Absolute or CWD-relative path to the YAML file.
|
|
78
|
+
* @returns The module IDs that were registered.
|
|
79
|
+
*/
|
|
80
|
+
async loadFromFile(filePath) {
|
|
81
|
+
return this.loadFromString(await readFile(filePath, 'utf-8'));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=binding-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-loader.js","sourceRoot":"","sources":["../../src/bridge/binding-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ApcoreRegistry } from '../core/registry.js';
|
|
2
|
+
import type { ApcoreCliOptions } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Exposes `apcore-cli` for a Hono app: build a Commander program whose
|
|
5
|
+
* commands are the app's registered apcore modules.
|
|
6
|
+
*
|
|
7
|
+
* `apcore-cli` is an **optional** peer dependency, loaded lazily — importing
|
|
8
|
+
* `hono-apcore` never pulls in a CLI stack you are not using.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const cli = new ApcoreCliService(apcore.registry, { progName: 'my-app' });
|
|
13
|
+
* const program = await cli.createProgram();
|
|
14
|
+
* await cli.configureManHelp(program, 'my-app', '1.0.0', 'My Hono app');
|
|
15
|
+
* program.parse();
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare class ApcoreCliService {
|
|
19
|
+
private readonly registry;
|
|
20
|
+
private readonly options;
|
|
21
|
+
private configured;
|
|
22
|
+
constructor(registry: ApcoreRegistry, options?: ApcoreCliOptions);
|
|
23
|
+
/** Number of modules currently registered. */
|
|
24
|
+
get moduleCount(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Build a Commander program exposing the registered modules.
|
|
27
|
+
*
|
|
28
|
+
* Built-in apcore options (`--input`, `--yes`, `--large-input`, `--format`)
|
|
29
|
+
* are hidden by default; `--help --verbose` at runtime — or `verboseHelp`
|
|
30
|
+
* in the options — reveals them.
|
|
31
|
+
*
|
|
32
|
+
* @param extensionsDir - Overrides the configured extensions directory.
|
|
33
|
+
*/
|
|
34
|
+
createProgram(extensionsDir?: string): Promise<unknown>;
|
|
35
|
+
/**
|
|
36
|
+
* Add `--help --man` support to an existing Commander program, so
|
|
37
|
+
* `<prog> --help --man` writes a full man page to stdout.
|
|
38
|
+
*/
|
|
39
|
+
configureManHelp(program: unknown, progName: string, version: string, description?: string, docsUrl?: string): Promise<void>;
|
|
40
|
+
/** Update the docs URL used by man pages and per-command help output. */
|
|
41
|
+
setDocsUrl(url: string | null): Promise<void>;
|
|
42
|
+
/** Toggle verbose help — when on, `--help` lists the built-in apcore options. */
|
|
43
|
+
setVerboseHelp(verbose: boolean): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Apply the module-level `docsUrl` / `verboseHelp` defaults once, the first
|
|
46
|
+
* time a program is built.
|
|
47
|
+
*/
|
|
48
|
+
private applyModuleOptions;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=apcore-cli.service.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exposes `apcore-cli` for a Hono app: build a Commander program whose
|
|
3
|
+
* commands are the app's registered apcore modules.
|
|
4
|
+
*
|
|
5
|
+
* `apcore-cli` is an **optional** peer dependency, loaded lazily — importing
|
|
6
|
+
* `hono-apcore` never pulls in a CLI stack you are not using.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const cli = new ApcoreCliService(apcore.registry, { progName: 'my-app' });
|
|
11
|
+
* const program = await cli.createProgram();
|
|
12
|
+
* await cli.configureManHelp(program, 'my-app', '1.0.0', 'My Hono app');
|
|
13
|
+
* program.parse();
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export class ApcoreCliService {
|
|
17
|
+
registry;
|
|
18
|
+
options;
|
|
19
|
+
configured = false;
|
|
20
|
+
constructor(registry, options = {}) {
|
|
21
|
+
this.registry = registry;
|
|
22
|
+
this.options = options;
|
|
23
|
+
}
|
|
24
|
+
/** Number of modules currently registered. */
|
|
25
|
+
get moduleCount() {
|
|
26
|
+
return this.registry.count;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build a Commander program exposing the registered modules.
|
|
30
|
+
*
|
|
31
|
+
* Built-in apcore options (`--input`, `--yes`, `--large-input`, `--format`)
|
|
32
|
+
* are hidden by default; `--help --verbose` at runtime — or `verboseHelp`
|
|
33
|
+
* in the options — reveals them.
|
|
34
|
+
*
|
|
35
|
+
* @param extensionsDir - Overrides the configured extensions directory.
|
|
36
|
+
*/
|
|
37
|
+
async createProgram(extensionsDir) {
|
|
38
|
+
const cli = await import('apcore-cli');
|
|
39
|
+
await this.applyModuleOptions();
|
|
40
|
+
return cli.createCli(extensionsDir ?? this.options.extensionsDir, this.options.progName, this.options.verboseHelp ?? false);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Add `--help --man` support to an existing Commander program, so
|
|
44
|
+
* `<prog> --help --man` writes a full man page to stdout.
|
|
45
|
+
*/
|
|
46
|
+
async configureManHelp(program, progName, version, description, docsUrl) {
|
|
47
|
+
const cli = await import('apcore-cli');
|
|
48
|
+
cli.configureManHelp(program, progName, version, description, docsUrl ?? this.options.docsUrl ?? undefined);
|
|
49
|
+
}
|
|
50
|
+
/** Update the docs URL used by man pages and per-command help output. */
|
|
51
|
+
async setDocsUrl(url) {
|
|
52
|
+
const cli = await import('apcore-cli');
|
|
53
|
+
cli.setDocsUrl(url);
|
|
54
|
+
}
|
|
55
|
+
/** Toggle verbose help — when on, `--help` lists the built-in apcore options. */
|
|
56
|
+
async setVerboseHelp(verbose) {
|
|
57
|
+
const cli = await import('apcore-cli');
|
|
58
|
+
cli.setVerboseHelp(verbose);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Apply the module-level `docsUrl` / `verboseHelp` defaults once, the first
|
|
62
|
+
* time a program is built.
|
|
63
|
+
*/
|
|
64
|
+
async applyModuleOptions() {
|
|
65
|
+
if (this.configured)
|
|
66
|
+
return;
|
|
67
|
+
this.configured = true;
|
|
68
|
+
if (this.options.docsUrl !== undefined) {
|
|
69
|
+
await this.setDocsUrl(this.options.docsUrl);
|
|
70
|
+
}
|
|
71
|
+
if (this.options.verboseHelp !== undefined) {
|
|
72
|
+
await this.setVerboseHelp(this.options.verboseHelp);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=apcore-cli.service.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +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"}
|