@rcrsr/rill-agent 0.19.0 → 0.21.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 +1 -1
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +22 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +11 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +37 -5
- package/dist/manifest.js.map +1 -1
- package/dist/router-error.d.ts.map +1 -1
- package/dist/router-error.js +23 -1
- package/dist/router-error.js.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +37 -6
- package/dist/router.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-params.d.ts.map +1 -1
- package/dist/validate-params.js +5 -1
- package/dist/validate-params.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @rcrsr/rill-agent
|
|
2
2
|
|
|
3
|
-
Core agent runtime for the [rill](https://github.com/rcrsr/rill) language. Loads agent manifests, builds an `AgentRouter`, and
|
|
3
|
+
Core agent runtime for the [rill](https://github.com/rcrsr/rill) language. Loads agent manifests, builds an `AgentRouter`, and validates parameters. Transport-agnostic: pair it with a harness package (`@rcrsr/rill-agent-http`, `-foundry`, or `-chat`) to serve agents. Supports single-agent and multi-agent deployments.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown by the router when a requested agent name does not resolve
|
|
3
|
+
* to a registered handler. Structured so `routerErrorToStatus` can classify
|
|
4
|
+
* it by field rather than message substring, which survives errors crossing
|
|
5
|
+
* a realm boundary (e.g. VM contexts) where `instanceof` would not hold.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AgentNotFoundError extends Error {
|
|
8
|
+
/** HTTP status code for this error. */
|
|
9
|
+
readonly statusCode: 404;
|
|
10
|
+
/** Duck-typed discriminant, stable across realms. */
|
|
11
|
+
readonly code: 'AGENT_NOT_FOUND';
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,uCAAuC;IACvC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAEjC,YAAY,OAAO,EAAE,MAAM,EAK1B;CACF"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// ERROR CLASSES
|
|
3
|
+
// ============================================================
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown by the router when a requested agent name does not resolve
|
|
6
|
+
* to a registered handler. Structured so `routerErrorToStatus` can classify
|
|
7
|
+
* it by field rather than message substring, which survives errors crossing
|
|
8
|
+
* a realm boundary (e.g. VM contexts) where `instanceof` would not hold.
|
|
9
|
+
*/
|
|
10
|
+
export class AgentNotFoundError extends Error {
|
|
11
|
+
/** HTTP status code for this error. */
|
|
12
|
+
statusCode;
|
|
13
|
+
/** Duck-typed discriminant, stable across realms. */
|
|
14
|
+
code;
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = 'AgentNotFoundError';
|
|
18
|
+
this.statusCode = 404;
|
|
19
|
+
this.code = 'AGENT_NOT_FOUND';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,uCAAuC;IAC9B,UAAU,CAAM;IACzB,qDAAqD;IAC5C,IAAI,CAAoB;IAEjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export { loadManifest } from './manifest.js';
|
|
1
|
+
export { loadManifest, assembleManifest } from './manifest.js';
|
|
2
2
|
export { createRouter } from './router.js';
|
|
3
3
|
export { validateParams } from './validate-params.js';
|
|
4
4
|
export { routerErrorToStatus } from './router-error.js';
|
|
5
|
+
export { AgentNotFoundError } from './errors.js';
|
|
5
6
|
export type { AgentHandler, AgentManifest, AgentRouter, HandlerDescription, InitContext, RunRequest, RunContext, RunResponse, } from './types.js';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { loadManifest } from './manifest.js';
|
|
1
|
+
export { loadManifest, assembleManifest } from './manifest.js';
|
|
2
2
|
export { createRouter } from './router.js';
|
|
3
3
|
export { validateParams } from './validate-params.js';
|
|
4
4
|
export { routerErrorToStatus } from './router-error.js';
|
|
5
|
+
export { AgentNotFoundError } from './errors.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -7,4 +7,15 @@ import type { AgentManifest } from './types.js';
|
|
|
7
7
|
* a single-agent deployment (auto-detect).
|
|
8
8
|
*/
|
|
9
9
|
export declare function loadManifest(dir: string): Promise<AgentManifest>;
|
|
10
|
+
/**
|
|
11
|
+
* Assemble a manifest from explicit (name, dir) entries, importing handler.js
|
|
12
|
+
* from each directory. Used by rill-CLI bundle harness adapters, which receive
|
|
13
|
+
* each package's compiled output path (keyed by mount) rather than a single
|
|
14
|
+
* manifest directory. Agent names are the caller-supplied entry names (mounts).
|
|
15
|
+
* The first entry is the default agent unless `defaultAgent` names another.
|
|
16
|
+
*/
|
|
17
|
+
export declare function assembleManifest(entries: ReadonlyArray<{
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly dir: string;
|
|
20
|
+
}>, defaultAgent?: string): Promise<AgentManifest>;
|
|
10
21
|
//# sourceMappingURL=manifest.d.ts.map
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0BtE"}
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0BtE;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CAwBxB"}
|
package/dist/manifest.js
CHANGED
|
@@ -31,8 +31,40 @@ export async function loadManifest(dir) {
|
|
|
31
31
|
}
|
|
32
32
|
throw new Error(`No manifest.json or handler.js found in ${absDir}`);
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Assemble a manifest from explicit (name, dir) entries, importing handler.js
|
|
36
|
+
* from each directory. Used by rill-CLI bundle harness adapters, which receive
|
|
37
|
+
* each package's compiled output path (keyed by mount) rather than a single
|
|
38
|
+
* manifest directory. Agent names are the caller-supplied entry names (mounts).
|
|
39
|
+
* The first entry is the default agent unless `defaultAgent` names another.
|
|
40
|
+
*/
|
|
41
|
+
export async function assembleManifest(entries, defaultAgent) {
|
|
42
|
+
const first = entries[0];
|
|
43
|
+
if (first === undefined) {
|
|
44
|
+
throw new Error('assembleManifest requires at least one package entry');
|
|
45
|
+
}
|
|
46
|
+
const agents = new Map();
|
|
47
|
+
for (const { name, dir } of entries) {
|
|
48
|
+
const handlerPath = path.join(path.resolve(dir), 'handler.js');
|
|
49
|
+
if (!existsSync(handlerPath)) {
|
|
50
|
+
throw new Error(`handler.js not found for agent "${name}" at ${handlerPath}`);
|
|
51
|
+
}
|
|
52
|
+
agents.set(name, await importHandler(handlerPath));
|
|
53
|
+
}
|
|
54
|
+
if (defaultAgent !== undefined && !agents.has(defaultAgent)) {
|
|
55
|
+
throw new Error(`Default agent "${defaultAgent}" not found among package entries`);
|
|
56
|
+
}
|
|
57
|
+
return { defaultAgent: defaultAgent ?? first.name, agents };
|
|
58
|
+
}
|
|
34
59
|
async function loadMultiAgent(dir, manifestPath) {
|
|
35
|
-
|
|
60
|
+
let raw;
|
|
61
|
+
try {
|
|
62
|
+
raw = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
66
|
+
throw new Error(`Malformed manifest.json at ${manifestPath}: ${reason}`);
|
|
67
|
+
}
|
|
36
68
|
const defaultAgent = typeof raw['default'] === 'string' ? raw['default'] : '';
|
|
37
69
|
const agentsConfig = raw['agents'];
|
|
38
70
|
if (agentsConfig === undefined ||
|
|
@@ -53,15 +85,15 @@ async function loadMultiAgent(dir, manifestPath) {
|
|
|
53
85
|
const handler = await importHandler(handlerPath);
|
|
54
86
|
agents.set(name, handler);
|
|
55
87
|
}
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
return { defaultAgent: firstName, agents };
|
|
88
|
+
if (agents.size === 0) {
|
|
89
|
+
throw new Error(`manifest.json at ${manifestPath} declares no agents`);
|
|
59
90
|
}
|
|
60
91
|
if (defaultAgent !== '' && !agents.has(defaultAgent)) {
|
|
61
92
|
throw new Error(`Default agent "${defaultAgent}" not found in manifest`);
|
|
62
93
|
}
|
|
94
|
+
const firstName = agents.keys().next().value;
|
|
63
95
|
return {
|
|
64
|
-
defaultAgent: defaultAgent ||
|
|
96
|
+
defaultAgent: defaultAgent || firstName,
|
|
65
97
|
agents,
|
|
66
98
|
};
|
|
67
99
|
}
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAExD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,CAAC;IAED,yDAAyD;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,+CAA+C;IAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC3D,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,YAAoB;IAEpB,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-error.d.ts","sourceRoot":"","sources":["../src/router-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router-error.d.ts","sourceRoot":"","sources":["../src/router-error.ts"],"names":[],"mappings":"AAsBA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,GAAG,CAU3D"}
|
package/dist/router-error.js
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Duck-typed shape check for a structured router error, matched by field
|
|
3
|
+
* rather than `instanceof` so classification survives errors crossing a
|
|
4
|
+
* realm boundary (e.g. VM contexts) where prototype chains do not line up.
|
|
5
|
+
*/
|
|
6
|
+
function hasNotFoundCode(err) {
|
|
7
|
+
return (typeof err === 'object' &&
|
|
8
|
+
err !== null &&
|
|
9
|
+
'code' in err &&
|
|
10
|
+
err.code === 'AGENT_NOT_FOUND');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Matches the router's legacy unstructured not-found message shape
|
|
14
|
+
* (`Agent "<name>" not found. Available: <list>`). Scoped to that exact
|
|
15
|
+
* shape, not a bare "not found" substring, so an unrelated error that
|
|
16
|
+
* happens to mention "not found" is not misclassified as 404.
|
|
17
|
+
*/
|
|
18
|
+
const LEGACY_AGENT_NOT_FOUND_PATTERN = /^Agent ".*" not found\./;
|
|
1
19
|
export function routerErrorToStatus(err) {
|
|
20
|
+
if (hasNotFoundCode(err)) {
|
|
21
|
+
return 404;
|
|
22
|
+
}
|
|
23
|
+
// Fallback for errors that predate the structured `code` field.
|
|
2
24
|
const message = err instanceof Error ? err.message : String(err);
|
|
3
|
-
if (
|
|
25
|
+
if (LEGACY_AGENT_NOT_FOUND_PATTERN.test(message)) {
|
|
4
26
|
return 404;
|
|
5
27
|
}
|
|
6
28
|
return 500;
|
package/dist/router-error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-error.js","sourceRoot":"","sources":["../src/router-error.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,
|
|
1
|
+
{"version":3,"file":"router-error.js","sourceRoot":"","sources":["../src/router-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,MAAM,IAAI,GAAG;QACZ,GAAyB,CAAC,IAAI,KAAK,iBAAiB,CACtD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,8BAA8B,GAAG,yBAAyB,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,gEAAgE;IAChE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACb,WAAW,EAKZ,MAAM,YAAY,CAAC;AAsBpB;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;CAAE,GAC5D,OAAO,CAAC,WAAW,CAAC,CA+FtB"}
|
package/dist/router.js
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
import { AgentNotFoundError } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Dispose every handler, even if some fail. Uses `Promise.allSettled` so a
|
|
4
|
+
* single failing `dispose()` cannot prevent the rest from being attempted.
|
|
5
|
+
* Throws an `AggregateError` wrapping every rejection if any handler failed.
|
|
6
|
+
*/
|
|
7
|
+
async function disposeAll(handlers) {
|
|
8
|
+
const results = await Promise.allSettled(Array.from(handlers, (handler) => handler.dispose()));
|
|
9
|
+
const failures = results.filter((result) => result.status === 'rejected');
|
|
10
|
+
if (failures.length > 0) {
|
|
11
|
+
throw new AggregateError(failures.map((failure) => failure.reason), `${failures.length} handler(s) failed to dispose`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
1
14
|
/**
|
|
2
15
|
* Create a router from a loaded manifest.
|
|
3
16
|
*
|
|
@@ -18,18 +31,37 @@ export async function createRouter(manifest, options) {
|
|
|
18
31
|
const ahiResolver = async (agentName, request) => {
|
|
19
32
|
return run(agentName, request);
|
|
20
33
|
};
|
|
21
|
-
// Step 3: Initialize all agents concurrently
|
|
22
|
-
|
|
34
|
+
// Step 3: Initialize all agents concurrently. On any rejection, dispose
|
|
35
|
+
// the handlers whose init() already succeeded before rethrowing, so a
|
|
36
|
+
// partially-initialized router never leaks resources.
|
|
37
|
+
const handlerEntries = Array.from(manifest.agents.values());
|
|
38
|
+
const initResults = await Promise.allSettled(handlerEntries.map((handler) => handler.init({
|
|
23
39
|
globalVars: options?.globalVars,
|
|
24
40
|
ahiResolver,
|
|
25
41
|
})));
|
|
42
|
+
const initFailures = [];
|
|
43
|
+
const initSucceeded = [];
|
|
44
|
+
initResults.forEach((result, index) => {
|
|
45
|
+
if (result.status === 'rejected') {
|
|
46
|
+
initFailures.push(result.reason);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
initSucceeded.push(handlerEntries[index]);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (initFailures.length > 0) {
|
|
53
|
+
await disposeAll(initSucceeded).catch(() => undefined);
|
|
54
|
+
throw initFailures.length === 1
|
|
55
|
+
? initFailures[0]
|
|
56
|
+
: new AggregateError(initFailures, `${initFailures.length} handler(s) failed to init`);
|
|
57
|
+
}
|
|
26
58
|
// Step 4: Build router
|
|
27
59
|
async function run(agentName, request, context) {
|
|
28
60
|
const resolvedName = agentName === '' ? manifest.defaultAgent : agentName;
|
|
29
61
|
const handler = manifest.agents.get(resolvedName);
|
|
30
62
|
if (handler === undefined) {
|
|
31
63
|
const available = Array.from(manifest.agents.keys()).join(', ');
|
|
32
|
-
throw new
|
|
64
|
+
throw new AgentNotFoundError(`Agent "${resolvedName}" not found. Available: ${available}`);
|
|
33
65
|
}
|
|
34
66
|
const normalized = {
|
|
35
67
|
...request,
|
|
@@ -48,11 +80,10 @@ export async function createRouter(manifest, options) {
|
|
|
48
80
|
return manifest.defaultAgent;
|
|
49
81
|
}
|
|
50
82
|
async function dispose() {
|
|
51
|
-
|
|
52
|
-
await handler.dispose();
|
|
53
|
-
}
|
|
83
|
+
await disposeAll(manifest.agents.values());
|
|
54
84
|
}
|
|
55
85
|
return {
|
|
86
|
+
manifest,
|
|
56
87
|
run,
|
|
57
88
|
describe,
|
|
58
89
|
agents,
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,6 +8,13 @@ export interface HandlerDescription {
|
|
|
8
8
|
readonly description?: string | undefined;
|
|
9
9
|
readonly defaultValue?: unknown;
|
|
10
10
|
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Handler return type annotation, formatted with the same grammar as
|
|
13
|
+
* parameter type strings (e.g. `stream(dict(content: string)):string`).
|
|
14
|
+
* Undefined when the handler closure has no `:T` annotation, or when the
|
|
15
|
+
* rill-build emitting the handler is too old to expose the field.
|
|
16
|
+
*/
|
|
17
|
+
readonly returnType?: string | undefined;
|
|
11
18
|
}
|
|
12
19
|
export interface InitContext {
|
|
13
20
|
readonly globalVars?: Record<string, string> | undefined;
|
|
@@ -21,6 +28,7 @@ export interface RunContext {
|
|
|
21
28
|
readonly sessionVars?: Record<string, string> | undefined;
|
|
22
29
|
readonly onLog?: ((message: string) => void) | undefined;
|
|
23
30
|
readonly onChunk?: ((chunk: unknown) => Promise<void>) | undefined;
|
|
31
|
+
readonly signal?: AbortSignal | undefined;
|
|
24
32
|
}
|
|
25
33
|
export interface RunResponse {
|
|
26
34
|
readonly state: 'completed' | 'error';
|
|
@@ -38,6 +46,7 @@ export interface AgentManifest {
|
|
|
38
46
|
readonly agents: ReadonlyMap<string, AgentHandler>;
|
|
39
47
|
}
|
|
40
48
|
export interface AgentRouter {
|
|
49
|
+
readonly manifest: AgentManifest;
|
|
41
50
|
run(agentName: string, request: RunRequest, context?: RunContext): Promise<RunResponse>;
|
|
42
51
|
describe(agentName: string): HandlerDescription | null;
|
|
43
52
|
agents(): string[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-params.d.ts","sourceRoot":"","sources":["../src/validate-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"validate-params.d.ts","sourceRoot":"","sources":["../src/validate-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAClB,MAAM,GAAG,IAAI,CAgCf"}
|
package/dist/validate-params.js
CHANGED
|
@@ -9,7 +9,11 @@ export function validateParams(params, agentName, router) {
|
|
|
9
9
|
}
|
|
10
10
|
if (value !== undefined && value !== null && param.type !== 'any') {
|
|
11
11
|
const actual = typeof value;
|
|
12
|
-
const expected = param.type === 'dict'
|
|
12
|
+
const expected = param.type === 'dict'
|
|
13
|
+
? 'object'
|
|
14
|
+
: param.type === 'bool'
|
|
15
|
+
? 'boolean'
|
|
16
|
+
: param.type;
|
|
13
17
|
if (expected === 'list') {
|
|
14
18
|
if (!Array.isArray(value)) {
|
|
15
19
|
return `Parameter "${param.name}" must be a list, got ${actual}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-params.js","sourceRoot":"","sources":["../src/validate-params.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAC5B,MAA+B,EAC/B,SAAiB,EACjB,MAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;YAC5B,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"validate-params.js","sourceRoot":"","sources":["../src/validate-params.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAC5B,MAA+B,EAC/B,SAAiB,EACjB,MAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAClE,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC;YAC5B,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,MAAM;gBACnB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;oBACrB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACnB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO,cAAc,KAAK,CAAC,IAAI,yBAAyB,MAAM,EAAE,CAAC;gBACnE,CAAC;YACH,CAAC;iBAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClE,OAAO,cAAc,KAAK,CAAC,IAAI,yBAAyB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnG,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,cAAc,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,IAAI,SAAS,MAAM,EAAE,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rcrsr/rill-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Andre Bremer",
|
|
6
6
|
"type": "module",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"build": "tsc --build",
|
|
26
26
|
"test": "vitest run",
|
|
27
27
|
"typecheck": "tsc --noEmit",
|
|
28
|
-
"lint": "
|
|
28
|
+
"lint": "oxlint --config ../../../.oxlintrc.json src/ tests/",
|
|
29
29
|
"check": "pnpm run build && pnpm run test && pnpm run lint"
|
|
30
30
|
}
|
|
31
31
|
}
|