@rcrsr/rill-agent-ext-ahi 0.18.4

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Andre Bremer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @rcrsr/rill-agent-ext-ahi
2
+
3
+ [rill](https://github.com/rcrsr/rill) extension for the Agent Host Interface (AHI). Registers `ahi::<agentName>` host functions so a rill agent can call other agents over HTTP. Uses static URL resolution with `${VAR_NAME}` environment variable substitution.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @rcrsr/rill-agent-ext-ahi
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { createAhiExtension } from '@rcrsr/rill-agent-ext-ahi';
15
+
16
+ const ext = createAhiExtension({
17
+ agents: {
18
+ summarizer: { url: 'http://localhost:3001' },
19
+ classifier: { url: 'http://localhost:3002' },
20
+ },
21
+ timeout: 10000,
22
+ });
23
+ ```
24
+
25
+ ```rill
26
+ ahi::summarizer([text: "Long article content..."]) => $result
27
+ $result -> log
28
+ ```
29
+
30
+ ## Documentation
31
+
32
+ See [full documentation](docs/agent-ahi.md) for configuration, error mapping, and in-process binding.
33
+
34
+ ## License
35
+
36
+ MIT
@@ -0,0 +1,96 @@
1
+ /**
2
+ * AHI Extension Factory
3
+ *
4
+ * Provides agent-to-agent HTTP invocation via the Agent Host Interface (AHI).
5
+ * Static URL mode: agents are configured with explicit endpoint URLs.
6
+ */
7
+ import type { ExtensionConfigSchema, ExtensionManifest } from '@rcrsr/rill';
8
+ import type { RillValue, ApplicationCallable } from '@rcrsr/rill';
9
+ /**
10
+ * Result object returned by extension factories. Contains application
11
+ * callables keyed by function name with optional lifecycle hooks.
12
+ */
13
+ export type ExtensionResult = Record<string, ApplicationCallable> & {
14
+ dispose?: () => void | Promise<void>;
15
+ suspend?: () => unknown;
16
+ restore?: (state: unknown) => void;
17
+ };
18
+ /** Minimal run request for in-process agent invocation. */
19
+ interface InProcessRunRequest {
20
+ readonly params?: Record<string, unknown> | undefined;
21
+ readonly correlationId?: string | undefined;
22
+ readonly timeout?: number | undefined;
23
+ readonly trigger?: string | {
24
+ readonly type: 'agent';
25
+ readonly agentName: string;
26
+ readonly sessionId: string;
27
+ };
28
+ }
29
+ /** Minimal run response for in-process agent invocation. */
30
+ interface InProcessRunResponse {
31
+ readonly state: 'running' | 'completed' | 'failed';
32
+ readonly result?: RillValue | undefined;
33
+ }
34
+ /**
35
+ * Interface for an in-process agent host accepted by createInProcessFunction.
36
+ * Implemented by AgentHost from @rcrsr/rill-host. Defined here locally to
37
+ * avoid a cross-package dependency.
38
+ */
39
+ export interface InProcessRunner {
40
+ runForAgent(agentName: string, input: InProcessRunRequest): Promise<InProcessRunResponse>;
41
+ }
42
+ /** Configuration for a single AHI agent endpoint */
43
+ export interface AhiAgentConfig {
44
+ /** Resolved endpoint URL (after env substitution) */
45
+ url: string;
46
+ }
47
+ /** AHI extension configuration (static URL mode) */
48
+ export interface AhiExtensionConfig {
49
+ /** Agent name to endpoint config map */
50
+ agents: Record<string, AhiAgentConfig>;
51
+ /** Request timeout in milliseconds (default: 30000) */
52
+ timeout?: number | undefined;
53
+ }
54
+ /**
55
+ * Create AHI extension for agent-to-agent HTTP invocation.
56
+ *
57
+ * Each agent name registers an `ahi::<name>` host function.
58
+ *
59
+ * @param config - AHI extension configuration
60
+ * @returns ExtensionResult with one function per agent
61
+ * @throws Error if any agent URL contains an unset env variable (EC-2)
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * const ahiExt = createAhiExtension({
66
+ * agents: {
67
+ * parser: { url: 'http://localhost:4001' },
68
+ * },
69
+ * });
70
+ * ```
71
+ */
72
+ export declare function createAhiExtension(config: AhiExtensionConfig): ExtensionResult;
73
+ export declare const configSchema: ExtensionConfigSchema;
74
+ /**
75
+ * Create a HostFunctionDefinition for in-process AHI invocation.
76
+ *
77
+ * Used by bindHost() to register ahi::<name> functions that bypass HTTP
78
+ * and call the agent directly.
79
+ *
80
+ * @param runner - In-process agent runner (InProcessRunner-compatible)
81
+ * @param targetAgentName - Name of the target agent
82
+ * @param timeout - Default request timeout in ms (0 = unlimited)
83
+ * @returns HostFunctionDefinition ready for registration
84
+ */
85
+ export declare function createInProcessFunction(runner: InProcessRunner, targetAgentName: string, timeout: number): ApplicationCallable;
86
+ /**
87
+ * Standard extension manifest for @rcrsr/rill-agent-ext-ahi.
88
+ * Wraps createAhiExtension so that loadProject() can validate the
89
+ * bundle output config at build time (dry-run validation, AC-49).
90
+ *
91
+ * The factory accepts AhiExtensionConfig and returns the extension's
92
+ * callable dict as the mounted RillValue.
93
+ */
94
+ export declare const extensionManifest: ExtensionManifest;
95
+ export {};
96
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOlE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG;IAClE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,2DAA2D;AAC3D,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EACb,MAAM,GACN;QACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;CACP;AAED,4DAA4D;AAC5D,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACzC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAqKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,GACzB,eAAe,CA6DjB;AAKD,eAAO,MAAM,YAAY,EAAE,qBAG1B,CAAC;AA6FF;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,mBAAmB,CAQrB;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAU/B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,320 @@
1
+ /**
2
+ * AHI Extension Factory
3
+ *
4
+ * Provides agent-to-agent HTTP invocation via the Agent Host Interface (AHI).
5
+ * Static URL mode: agents are configured with explicit endpoint URLs.
6
+ */
7
+ import { isDict, RuntimeError, callable } from '@rcrsr/rill';
8
+ // ============================================================
9
+ // HELPERS
10
+ // ============================================================
11
+ /** ENV_VAR_PATTERN matches ${VAR_NAME} substitution tokens */
12
+ const ENV_VAR_PATTERN = /\$\{([^}]+)\}/g;
13
+ /**
14
+ * Resolve all ${VAR} tokens in a URL string using process.env.
15
+ * Throws synchronously if any referenced variable is unset.
16
+ */
17
+ function resolveEnvVars(url) {
18
+ return url.replace(ENV_VAR_PATTERN, (_match, varName) => {
19
+ const value = process.env[varName];
20
+ if (value === undefined) {
21
+ throw new Error(`AHI: environment variable ${varName} is not set`);
22
+ }
23
+ return value;
24
+ });
25
+ }
26
+ /**
27
+ * Convert the first rill argument to a JSON-serializable params object.
28
+ * If args[0] is a dict, spread it into a plain object.
29
+ * Otherwise return an empty object.
30
+ */
31
+ function extractParams(args) {
32
+ const first = args[0];
33
+ if (first !== undefined && isDict(first)) {
34
+ return { ...first };
35
+ }
36
+ return {};
37
+ }
38
+ // ============================================================
39
+ // SHARED HTTP INVOCATION
40
+ // ============================================================
41
+ /**
42
+ * Perform the HTTP POST to a resolved agent endpoint.
43
+ *
44
+ * @param agentUrl - Resolved base URL of the agent
45
+ * @param agentTimeout - Effective timeout in ms (0 = unlimited)
46
+ * @param args - Rill call arguments
47
+ * @param ctx - Rill call context (metadata forwarded as headers)
48
+ * @param inFlight - Set of active AbortControllers for dispose tracking
49
+ * @returns Rill value from downstream agent
50
+ */
51
+ async function invokeAgent(agentUrl, agentTimeout, args, ctx, inFlight) {
52
+ const params = extractParams(args);
53
+ const metadata = ctx.metadata ?? {};
54
+ // AC-5 / AC-22: forward remaining budget when it is less than the
55
+ // configured default. Read timeoutDeadline set by host.ts / handler.ts.
56
+ const deadlineRaw = metadata['timeoutDeadline'];
57
+ const deadlineMs = deadlineRaw !== undefined ? parseInt(deadlineRaw, 10) : undefined;
58
+ let effectiveTimeout = agentTimeout;
59
+ if (deadlineMs !== undefined && !isNaN(deadlineMs)) {
60
+ const remaining = deadlineMs - Date.now();
61
+ // If deadline has already passed, send 1 ms (not 0, which means no timeout).
62
+ // If remaining < configured default (or default is 0 = unlimited), use remaining.
63
+ if (agentTimeout === 0 || remaining < agentTimeout) {
64
+ effectiveTimeout = remaining > 0 ? remaining : 1;
65
+ }
66
+ }
67
+ const body = JSON.stringify({
68
+ params,
69
+ trigger: {
70
+ type: 'agent',
71
+ agentName: metadata['agentName'] ?? '',
72
+ sessionId: metadata['sessionId'] ?? '',
73
+ },
74
+ timeout: effectiveTimeout,
75
+ });
76
+ // Build AbortController only when a non-zero timeout is configured.
77
+ // AC-21: timeout 0 means no deadline — skip AbortController entirely.
78
+ let controller;
79
+ let timeoutHandle;
80
+ if (effectiveTimeout !== 0) {
81
+ controller = new AbortController();
82
+ timeoutHandle = setTimeout(() => {
83
+ controller.abort();
84
+ }, effectiveTimeout);
85
+ }
86
+ // Track controller for dispose cancellation
87
+ if (controller !== undefined) {
88
+ inFlight.add(controller);
89
+ }
90
+ try {
91
+ const response = await fetch(`${agentUrl}/run`, {
92
+ method: 'POST',
93
+ headers: {
94
+ 'Content-Type': 'application/json',
95
+ 'X-Correlation-ID': metadata['correlationId'] ?? '',
96
+ },
97
+ body,
98
+ signal: controller?.signal ?? null,
99
+ });
100
+ if (!response.ok) {
101
+ const status = response.status;
102
+ if (status === 400) {
103
+ const text = await response.text();
104
+ throw new RuntimeError('RILL-R027', `AHI: validation failed: ${text}`);
105
+ }
106
+ if (status === 404) {
107
+ throw new RuntimeError('RILL-R028', 'AHI: agent unreachable');
108
+ }
109
+ if (status === 429) {
110
+ throw new RuntimeError('RILL-R032', 'AHI: rate limited');
111
+ }
112
+ if (status === 500) {
113
+ throw new RuntimeError('RILL-R029', 'AHI: downstream execution failed');
114
+ }
115
+ throw new RuntimeError('RILL-R034', `AHI: downstream error: HTTP ${status}`);
116
+ }
117
+ const json = (await response.json());
118
+ return json.result;
119
+ }
120
+ catch (err) {
121
+ // Re-throw structured errors immediately
122
+ if (err instanceof RuntimeError) {
123
+ throw err;
124
+ }
125
+ // EC-7: AbortController signal fired → timeout exceeded
126
+ if (err instanceof Error && err.name === 'AbortError') {
127
+ throw new RuntimeError('RILL-R030', 'AHI: timeout exceeded');
128
+ }
129
+ // EC-8: Network failure (DNS, connection refused)
130
+ if (err instanceof TypeError) {
131
+ throw new RuntimeError('RILL-R031', 'AHI: connection refused');
132
+ }
133
+ throw err;
134
+ }
135
+ finally {
136
+ if (controller !== undefined) {
137
+ inFlight.delete(controller);
138
+ }
139
+ if (timeoutHandle !== undefined) {
140
+ clearTimeout(timeoutHandle);
141
+ }
142
+ }
143
+ }
144
+ // ============================================================
145
+ // FACTORY
146
+ // ============================================================
147
+ /**
148
+ * Create AHI extension for agent-to-agent HTTP invocation.
149
+ *
150
+ * Each agent name registers an `ahi::<name>` host function.
151
+ *
152
+ * @param config - AHI extension configuration
153
+ * @returns ExtensionResult with one function per agent
154
+ * @throws Error if any agent URL contains an unset env variable (EC-2)
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * const ahiExt = createAhiExtension({
159
+ * agents: {
160
+ * parser: { url: 'http://localhost:4001' },
161
+ * },
162
+ * });
163
+ * ```
164
+ */
165
+ export function createAhiExtension(config) {
166
+ const { agents, timeout = 30000 } = config;
167
+ // Static URL mode: validate and resolve env vars in each agent URL
168
+ const resolvedAgents = new Map();
169
+ for (const [name, agentConfig] of Object.entries(agents)) {
170
+ const resolvedUrl = resolveEnvVars(agentConfig.url);
171
+ resolvedAgents.set(name, { url: resolvedUrl });
172
+ }
173
+ // ============================================================
174
+ // IN-FLIGHT TRACKING (factory-level, shared across all agents)
175
+ // ============================================================
176
+ const inFlight = new Set();
177
+ let disposed = false;
178
+ // ============================================================
179
+ // FUNCTION REGISTRATION
180
+ // ============================================================
181
+ const functions = {};
182
+ for (const [name, agent] of resolvedAgents) {
183
+ // Capture agent state for this closure
184
+ const agentUrl = agent.url;
185
+ functions[name] = callable(((args, ctx) => {
186
+ // AC-11: reject calls after dispose
187
+ if (disposed) {
188
+ throw new RuntimeError('RILL-R033', 'AHI: extension disposed');
189
+ }
190
+ return invokeAgent(agentUrl, timeout, args, ctx, inFlight);
191
+ }));
192
+ }
193
+ // ============================================================
194
+ // DISPOSE
195
+ // ============================================================
196
+ // AC-11: cancel all in-flight requests and block further calls
197
+ const dispose = () => {
198
+ disposed = true;
199
+ for (const ctrl of inFlight) {
200
+ ctrl.abort();
201
+ }
202
+ inFlight.clear();
203
+ };
204
+ // ============================================================
205
+ // EXTENSION RESULT
206
+ // ============================================================
207
+ const result = { ...functions };
208
+ result.dispose = dispose;
209
+ return result;
210
+ }
211
+ // ============================================================
212
+ // CONFIG SCHEMA
213
+ // ============================================================
214
+ export const configSchema = {
215
+ agents: { type: 'string' },
216
+ timeout: { type: 'number' },
217
+ };
218
+ // ============================================================
219
+ // IN-PROCESS CALL
220
+ // ============================================================
221
+ /**
222
+ * Create a CallableFn that invokes a target agent in-process via runner.
223
+ *
224
+ * IR-9: Calls runner.runForAgent() with caller trigger metadata and
225
+ * propagated timeout deadline. Maps capacity errors to RILL-R032 and
226
+ * failed state to RILL-R029.
227
+ *
228
+ * @param runner - In-process agent runner
229
+ * @param targetAgentName - Name of the target agent to invoke
230
+ * @param defaultTimeout - Default timeout in ms (0 = unlimited)
231
+ */
232
+ function createInProcessCallFn(runner, targetAgentName, defaultTimeout) {
233
+ return async (args, ctx) => {
234
+ const params = extractParams(args);
235
+ const metadata = ctx.metadata ?? {};
236
+ const callerAgentName = metadata['agentName'] ?? '';
237
+ const callerSessionId = metadata['sessionId'] ?? '';
238
+ const callerCorrelationId = metadata['correlationId'];
239
+ // AC-5 / AC-22: propagate remaining budget when it is less than the
240
+ // configured default. Mirror the same logic used in invokeAgent().
241
+ const deadlineRaw = metadata['timeoutDeadline'];
242
+ const deadlineMs = deadlineRaw !== undefined ? parseInt(deadlineRaw, 10) : undefined;
243
+ let effectiveTimeout = defaultTimeout;
244
+ if (deadlineMs !== undefined && !isNaN(deadlineMs)) {
245
+ const remaining = deadlineMs - Date.now();
246
+ if (defaultTimeout === 0 || remaining < defaultTimeout) {
247
+ effectiveTimeout = remaining > 0 ? remaining : 1;
248
+ }
249
+ }
250
+ let response;
251
+ try {
252
+ response = await runner.runForAgent(targetAgentName, {
253
+ params,
254
+ correlationId: callerCorrelationId,
255
+ trigger: {
256
+ type: 'agent',
257
+ agentName: callerAgentName,
258
+ sessionId: callerSessionId,
259
+ },
260
+ timeout: effectiveTimeout,
261
+ });
262
+ }
263
+ catch (err) {
264
+ // EC-12: capacity error from host → RILL-R032 rate limited
265
+ // Duck-type check: ahi cannot import AgentHostError directly.
266
+ if (err instanceof Error &&
267
+ (('phase' in err &&
268
+ err.phase === 'capacity') ||
269
+ err.message.includes('capacity'))) {
270
+ throw new RuntimeError('RILL-R032', 'AHI: rate limited');
271
+ }
272
+ throw err;
273
+ }
274
+ // EC-13: downstream execution failed → RILL-R029
275
+ if (response.state === 'failed') {
276
+ throw new RuntimeError('RILL-R029', 'AHI: downstream execution failed');
277
+ }
278
+ return response.result ?? null;
279
+ };
280
+ }
281
+ // ============================================================
282
+ // IN-PROCESS FUNCTION FACTORY
283
+ // ============================================================
284
+ /**
285
+ * Create a HostFunctionDefinition for in-process AHI invocation.
286
+ *
287
+ * Used by bindHost() to register ahi::<name> functions that bypass HTTP
288
+ * and call the agent directly.
289
+ *
290
+ * @param runner - In-process agent runner (InProcessRunner-compatible)
291
+ * @param targetAgentName - Name of the target agent
292
+ * @param timeout - Default request timeout in ms (0 = unlimited)
293
+ * @returns HostFunctionDefinition ready for registration
294
+ */
295
+ export function createInProcessFunction(runner, targetAgentName, timeout) {
296
+ return callable(createInProcessCallFn(runner, targetAgentName, timeout));
297
+ }
298
+ // ============================================================
299
+ // EXTENSION MANIFEST
300
+ // ============================================================
301
+ /**
302
+ * Standard extension manifest for @rcrsr/rill-agent-ext-ahi.
303
+ * Wraps createAhiExtension so that loadProject() can validate the
304
+ * bundle output config at build time (dry-run validation, AC-49).
305
+ *
306
+ * The factory accepts AhiExtensionConfig and returns the extension's
307
+ * callable dict as the mounted RillValue.
308
+ */
309
+ export const extensionManifest = {
310
+ factory: async (config) => {
311
+ const result = createAhiExtension(config);
312
+ const { dispose, ...value } = result;
313
+ return {
314
+ value: value,
315
+ ...(dispose !== undefined ? { dispose } : {}),
316
+ };
317
+ },
318
+ configSchema,
319
+ };
320
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@rcrsr/rill-agent-ext-ahi",
3
+ "version": "0.18.4",
4
+ "description": "rill extension for Agent Host Interface (AHI) integration",
5
+ "license": "MIT",
6
+ "author": "Andre Bremer",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "keywords": [
11
+ "rill",
12
+ "ahi",
13
+ "agent",
14
+ "extension",
15
+ "ai",
16
+ "scripting"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc --build",
20
+ "test": "vitest run",
21
+ "typecheck": "tsc --noEmit",
22
+ "lint": "eslint --config ../../../eslint.config.js src/",
23
+ "check": "pnpm run build && pnpm run test && pnpm run lint"
24
+ },
25
+ "peerDependencies": {
26
+ "@rcrsr/rill": "~0.18.4"
27
+ },
28
+ "devDependencies": {
29
+ "@rcrsr/rill": "^0.18.4"
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ],
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/rcrsr/rill-agent.git",
37
+ "directory": "packages/agent/ahi"
38
+ },
39
+ "homepage": "https://rill.run/docs/extensions/ahi/",
40
+ "bugs": {
41
+ "url": "https://github.com/rcrsr/rill-agent/issues"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ }
46
+ }