@nylorun/agents 0.21.0-beta → 0.22.0-beta
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/CHANGELOG.md +35 -0
- package/README.md +64 -17
- package/dist/client.d.ts +1 -1
- package/dist/connection.d.ts +1 -1
- package/dist/connection.js +1 -1
- package/dist/session-client.d.ts +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @nylorun/agents
|
|
2
2
|
|
|
3
|
+
## 0.22.0-beta
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a0cf8b2: **HTTP tools take `GET` and `DELETE`, and URL path parameters.**
|
|
8
|
+
|
|
9
|
+
- `method` is `GET`, `POST` (default), `PUT`, `PATCH` or `DELETE`. `POST`, `PUT` and `PATCH` send the input as the JSON body, as before. `GET` and `DELETE` send no body: the input becomes the query string, after any query string written in the URL. An array repeats its name (`tag=a&tag=b`) and a `null` is left out.
|
|
10
|
+
- The URL's path may name input fields as `{field}`, as in `https://api.example.com/orders/{orderId}`. Each value is percent-encoded into the path and is not sent again in the body or query string. A value that is empty, `.` or `..`, or not a string, number or boolean is refused before the call is sent (`tool.invalid-input`).
|
|
11
|
+
- `http()` and the manifest contract check a tool against its input schema. Each `{field}` must be a required scalar property. For `GET` and `DELETE`, a property must not be an object and must not repeat a query parameter the URL already sets.
|
|
12
|
+
- An HTTP verifier still takes only `POST`, `PUT` or `PATCH` and a URL without `{field}` parameters, because it is sent `{ input, output, iteration }` as a body. A credential with `via` cannot serve a tool with `{field}` parameters (`http.credential`).
|
|
13
|
+
- core exports `httpToolRequest`, which maps a call's input to the request, and `httpPathParameters`. The Runtime's outbound `post()` is now `send()`, which can send a request without a body.
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 620072d: **Docs and schemas match what the CLI and the Runtime do.**
|
|
18
|
+
|
|
19
|
+
- `@nylorun/core`: the environment manifest's JSON Schema (`@nylorun/core/schemas/environment-manifest.json`) takes the CLI's `{ path, from }` `files` entry, so an editor no longer flags a manifest that `nylorun environments manifests save` accepts. The Runtime's own schema is unchanged: the CLI turns the folder into `{ path, files }` before saving. `manifest_changed` says to save without `If-Match` (`--if-match`, `ifMatch`); no command takes `--force`.
|
|
20
|
+
- Tool names, skill names and MCP server names are each unique within their kind, as the builder and the Runtime check; a tool, a skill and a server may share a name. The docs said they were unique across kinds.
|
|
21
|
+
- `harness_mismatch` is described as what it is since protocol 14: an Environment's harness is fixed for its life (fork onto a manifest version to run another), and a session's turn is refused when its Environment id was deleted and made again with another harness, or an Environment changed in place before protocol 14 applies that change.
|
|
22
|
+
- `@nylorun/agents`: the README names `nylorun environments list | delete`, not `nylorun local sandbox ls | rm`.
|
|
23
|
+
- MIGRATION.md no longer offers a tool's `approval`, removed in protocol 11, as a replacement for step middleware.
|
|
24
|
+
|
|
25
|
+
- 000ff75: **READMEs and help text match protocol 14.**
|
|
26
|
+
|
|
27
|
+
- `nylorun --help` lists `environments fork`, `manifests` and `delete-version`. The package description no longer offers `nylo` as the Runtime client, and the README says nylorun depends on `@nylorun/agents` too.
|
|
28
|
+
- The READMEs name the current commands: `nylorun tenant keys`, `nylorun tenant mcp inspect`, `nylorun local logs` and `nylorun local reset`. `@nylorun/admin` says it speaks protocol 14.
|
|
29
|
+
- `@nylorun/agents`: a lost MCP or HTTP tool call is sent again with its key, then fails to the model as `tool.interrupted` (it is not left `uncertain`). Every manifest is v7. A2A takes `raw` files. A delegated agent cannot pause.
|
|
30
|
+
- `@nylorun/runtime`: the README describes protocol 14, `PUT /v1/sessions/{id}` says it answers an identical session (vaults are no longer attached), and the database-layout error names `nylorun local reset`.
|
|
31
|
+
- `@nylorun/create-agent`: `nylorun start` writes the project's keys (no key is derived any more).
|
|
32
|
+
|
|
33
|
+
- Pin core to the tested release.
|
|
34
|
+
- Updated dependencies [620072d]
|
|
35
|
+
- Updated dependencies [a0cf8b2]
|
|
36
|
+
- @nylorun/core@0.22.0-beta
|
|
37
|
+
|
|
3
38
|
## 0.21.0-beta
|
|
4
39
|
|
|
5
40
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@ const refundOrder = http({
|
|
|
46
46
|
input: z.object({ orderId: z.string(), amount: z.number() }), // or a JSON Schema object
|
|
47
47
|
output: z.object({ refundId: z.string() }), // optional
|
|
48
48
|
url: "https://billing.example.com/refunds",
|
|
49
|
-
method: "POST", // default; or PUT, PATCH
|
|
49
|
+
method: "POST", // default; or GET, PUT, PATCH, DELETE
|
|
50
50
|
credential: "billing", // optional: the session's Environment holds a credential for this URL
|
|
51
51
|
timeoutMs: 20_000, // default 60000, at most 300000
|
|
52
52
|
});
|
|
@@ -54,9 +54,51 @@ const refundOrder = http({
|
|
|
54
54
|
export const support = Agent({ id: "support" }).tools(refundOrder);
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
The
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
The method decides where the input goes:
|
|
58
|
+
|
|
59
|
+
| Method | Request |
|
|
60
|
+
| -------------------------------- | -------------------------------------------------------------- |
|
|
61
|
+
| `POST` (default), `PUT`, `PATCH` | The input as the JSON body (`content-type: application/json`) |
|
|
62
|
+
| `GET`, `DELETE` | No body: the input as the query string |
|
|
63
|
+
|
|
64
|
+
The URL's path may name input fields as `{field}`. Each one must be a required string,
|
|
65
|
+
number or boolean field of `input`. Its value goes into the path percent-encoded (so `/`,
|
|
66
|
+
`?` and `#` cannot change the request), and it is not sent again in the body or query
|
|
67
|
+
string. A query string written in the URL is kept, and the input's fields come after it.
|
|
68
|
+
In the query string an array repeats its name (`tag=a&tag=b`) and a `null` is left out.
|
|
69
|
+
|
|
70
|
+
`http()`, and the Runtime when it saves a manifest, refuse a tool whose URL names a field
|
|
71
|
+
the input does not require. For `GET` and `DELETE` they also refuse a field that is an object (a query string cannot hold one), and a
|
|
72
|
+
field that repeats a query parameter the URL already sets. A call is refused before it is
|
|
73
|
+
sent (`tool.invalid-input`) when a URL value is empty, `.` or `..`, or not a string, number
|
|
74
|
+
or boolean.
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
// GET https://api.open-meteo.com/v1/forecast?current=…&latitude=22.57&longitude=88.36
|
|
78
|
+
const forecast = http({
|
|
79
|
+
name: "get_forecast",
|
|
80
|
+
description: "Current weather at a latitude and longitude.",
|
|
81
|
+
input: z.object({
|
|
82
|
+
latitude: z.number(),
|
|
83
|
+
longitude: z.number(),
|
|
84
|
+
temperature_unit: z.enum(["celsius", "fahrenheit"]).optional(),
|
|
85
|
+
}),
|
|
86
|
+
url: "https://api.open-meteo.com/v1/forecast?current=temperature_2m,relative_humidity_2m,wind_speed_10m&timezone=auto",
|
|
87
|
+
method: "GET",
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// DELETE https://billing.example.com/orders/A-17?reason=duplicate
|
|
91
|
+
const cancelOrder = http({
|
|
92
|
+
name: "cancel_order",
|
|
93
|
+
input: z.object({ orderId: z.string(), reason: z.string() }),
|
|
94
|
+
url: "https://billing.example.com/orders/{orderId}",
|
|
95
|
+
method: "DELETE",
|
|
96
|
+
credential: "billing",
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The tool goes into the manifest as `http`, and the Runtime's Tool Gate sends
|
|
101
|
+
the request under the Host's address policy (`NYLORUN_ENDPOINT_*`), with
|
|
60
102
|
`Nylorun-Session-Id`, `Nylorun-Turn-Id`, `Nylorun-Agent-Id` and an
|
|
61
103
|
`Idempotency-Key` that is the same when the Runtime re-sends the call after a
|
|
62
104
|
restart, so your service can drop duplicates. A `2xx` JSON answer is the output
|
|
@@ -81,10 +123,11 @@ turn say, that is a new call with a new key: put a business key (an order or
|
|
|
81
123
|
charge id) in the tool's input schema to refuse it too.
|
|
82
124
|
|
|
83
125
|
`credential` works as for a remote MCP server: the vault of the session's
|
|
84
|
-
Environment must hold a credential bound to the tool's exact URL
|
|
85
|
-
fails before it is sent
|
|
86
|
-
sends the call there instead, such
|
|
87
|
-
|
|
126
|
+
Environment must hold a credential bound to the tool's exact URL (as written,
|
|
127
|
+
`{field}` parameters included), else the call fails before it is sent
|
|
128
|
+
(`http.credential`). A credential with `via` sends the call there instead, such
|
|
129
|
+
as a gateway, with the session owner in its identity header (a gateway has one
|
|
130
|
+
URL, so a tool with `{field}` parameters fails with `http.credential`), and a `401` is `credential_rejected` to the model, not retried.
|
|
88
131
|
Whether a call waits for a person is not the tool's to say: it is the Tenant's
|
|
89
132
|
[tool policy](#tool-policy). An HTTP tool is also a flow stage (see [Flow agents](#flow-agents)), and runs
|
|
90
133
|
only on the Runtime (a local `run()` reports `http.runtime-only`).
|
|
@@ -215,11 +258,11 @@ const assistant = Agent({ id: "assistant", name: "Assistant" })
|
|
|
215
258
|
});
|
|
216
259
|
```
|
|
217
260
|
|
|
218
|
-
Each key names a server; its `name` defaults to the key and, when given, must equal it. Repeated `.mcp()` calls add servers to the manifest's `mcpServers`. Nylorun accepts remote servers only: `streamable-http` and `sse` ([Agent Plugins MCP servers](https://agent-plugins.org/plugin-authors/mcp-servers)); a `stdio` server is refused, so run it behind an HTTP transport and declare its URL. Attach an Agent Plugin package with `.plugin(path)`: its skills and remote MCP servers join the agent's `skills` and `mcpServers`, each labelled `plugin: { name, version }` from its `plugin.json`, and a stdio server in its `mcp.json` throws.
|
|
261
|
+
Each key names a server; its `name` defaults to the key and, when given, must equal it. Repeated `.mcp()` calls add servers to the manifest's `mcpServers`. Nylorun accepts remote servers only: `streamable-http` and `sse` ([Agent Plugins MCP servers](https://agent-plugins.org/plugin-authors/mcp-servers)); a `stdio` server is refused, so run it behind an HTTP transport and declare its URL. Attach an Agent Plugin package with `.plugin(path)`: its skills and remote MCP servers join the agent's `skills` and `mcpServers`, each labelled `plugin: { name, version }` from its `plugin.json`, and a stdio server in its `mcp.json` throws. Tool names, skill names and server names are each unique within their kind; a tool, a skill and a server may share a name, since a server's tools are called `<server>__<tool>`.
|
|
219
262
|
|
|
220
|
-
Set a server's tools one by one with `tools`, keyed by the server's own tool names, `"*"` for the rest: `{ "*": { enabled: false }, search_issues: { enabled: true }, create_issue: { enabled: true } }` is an allowlist (whether a call waits for a person is the [tool policy](#tool-policy)). When an agent's MCP tools would fill more than a tenth of the model's context window, the Runtime defers them: the model finds them with `tool_search` and runs them with `tool_call`. `deferred: true` or `false`, on a tool or on the server, decides instead.
|
|
263
|
+
Set a server's tools one by one with `tools`, keyed by the server's own tool names, `"*"` for the rest: `{ "*": { enabled: false }, search_issues: { enabled: true }, create_issue: { enabled: true } }` is an allowlist (whether a call waits for a person is the [tool policy](#tool-policy)). When an agent's MCP tools would fill more than a tenth of the model's context window, the Runtime defers them: the model finds them with `tool_search` and runs them with `tool_call`. `deferred: true` or `false`, on a tool or on the server, decides instead.
|
|
221
264
|
|
|
222
|
-
A manifest never carries a server's credential, and its `headers` hold no secret. You write a credential for the server's URL into an Environment (a token or a header map, or a gateway's key with `via` and an identity header for servers that need each person's sign-in, with `client.environments.secrets.put`), and sessions that name the Environment use it: [DEPLOYMENT.md](../../guides/DEPLOYMENT.md#mcp-servers-and-http-tools), which also shows `nylorun mcp inspect` for listing a server's tools first. After `saveAgent`, `admin.coverage({ agentId, environmentId })` in `@nylorun/admin` says which credential each server and HTTP tool would get in that Environment ([Checking an agent's credentials](../../guides/DEPLOYMENT.md#checking-an-agents-credentials)). The model knows each tool as `server__tool`, with characters outside `[A-Za-z0-9_-]` replaced by `_`; a failed call reaches it with a code (`credential_rejected` on a `401`, `mcp.unreachable`, …), and a result past 32 KiB, or an image, becomes an artifact of the session that it reads with `read_artifact`.
|
|
265
|
+
A manifest never carries a server's credential, and its `headers` hold no secret. You write a credential for the server's URL into an Environment (a token or a header map, or a gateway's key with `via` and an identity header for servers that need each person's sign-in, with `client.environments.secrets.put`), and sessions that name the Environment use it: [DEPLOYMENT.md](../../guides/DEPLOYMENT.md#mcp-servers-and-http-tools), which also shows `nylorun tenant mcp inspect` for listing a server's tools first. After `saveAgent`, `admin.coverage({ agentId, environmentId })` in `@nylorun/admin` says which credential each server and HTTP tool would get in that Environment ([Checking an agent's credentials](../../guides/DEPLOYMENT.md#checking-an-agents-credentials)). The model knows each tool as `server__tool`, with characters outside `[A-Za-z0-9_-]` replaced by `_`; a failed call reaches it with a code (`credential_rejected` on a `401`, `mcp.unreachable`, …), and a result past 32 KiB, or an image, becomes an artifact of the session that it reads with `read_artifact`.
|
|
223
266
|
|
|
224
267
|
A session runs in an **Environment**: one sandbox and one vault, with an id you choose, which outlives the sessions that name it (protocol 11). It is made from one version of an **environment manifest** or from inline fields, and never changes what it runs after that (protocol 14). The agent names no Environment, so the same agent runs in any Tenant; it may state what it needs (`.requires()`). Whether an Environment serves one session, one person or a project is your app's choice:
|
|
225
268
|
|
|
@@ -271,7 +314,7 @@ An Environment never changes what it runs (protocol 14, its view's `manifest`):
|
|
|
271
314
|
|
|
272
315
|
Secrets are write-only: `client.environments.secrets.put(id, name, secret)` creates or replaces one, and `list`, `get` and `delete` never return a value. An `environment_secret` (`{ value, allowedHosts, inject? }`) shows its name to commands as the sentinel `nylorun-managed`, and egress-gate sets its header on HTTPS requests to `allowedHosts` (pods only); an `environment_variable` (`{ value }`) is a plain variable; `bearer` (`{ url, value, via?, identity? }`) and `headers` (`{ url, headers, via?, identity? }`) are credentials for the MCP servers and HTTP tools at `url`. A second secret for one host, or a second credential for one URL, is `409 credential_conflict` at the write ([DEPLOYMENT.md](../../guides/DEPLOYMENT.md#credentials)). When what an Environment runs declares a secret's slot (a manifest's `secrets`), send only `{ value }` (or `{ headers }`): the type and binding come from the slot, and a name it does not declare is `409 secret_not_in_manifest`. An agent built with `.requires({ sandbox: "pod", secrets: ["GH_TOKEN"] })` opens a session only on an Environment that has them (`409 environment_unsuitable`). `saveAgent(agent, { dryRun: true })` checks a definition and saves nothing.
|
|
273
316
|
|
|
274
|
-
Sessions on one Environment share its `/workspace` and run their turns at the same time (one turn per session); which sessions work on one disk, and when, is your app's call. Stop, reset, snapshot and restore wait until no turn runs (`409 environment_busy`). Deleting a session only detaches it. With `ownerUserId` set, a session of another owner is `403 environment_owner_mismatch` (a caller acting for a person gets the `404` of a missing Environment), checked when it opens and at every turn start. `client.environments.list({ labels })`, `page`, `get(id)`, `events(id, { types, since, until })` (its lifecycle, and `environment.egress` for every connection its sandbox opens, naming the turns that were running), `stop(id)`, `reset(id)` and `delete(id)` manage them, and `npx nylorun
|
|
317
|
+
Sessions on one Environment share its `/workspace` and run their turns at the same time (one turn per session); which sessions work on one disk, and when, is your app's call. Stop, reset, snapshot and restore wait until no turn runs (`409 environment_busy`). Deleting a session only detaches it. With `ownerUserId` set, a session of another owner is `403 environment_owner_mismatch` (a caller acting for a person gets the `404` of a missing Environment), checked when it opens and at every turn start. `client.environments.list({ labels })`, `page`, `get(id)`, `events(id, { types, since, until })` (its lifecycle, and `environment.egress` for every connection its sandbox opens, naming the turns that were running), `stop(id)`, `reset(id)` and `delete(id)` manage them, and `npx nylorun environments list | delete` does the same from the command line. Acting for a person (`app.as(...)`), changing an Environment or its secrets needs `environments:write`. A trusted issuer's token reaches only the Environments its issuer grants (the identity file's `environments` templates, exact ids or prefixes ending in `/*`), checked at every turn start. The Tenant holds at most `limits.environments` of them (`PUT /v1/tenant/sandbox`, default 100).
|
|
275
318
|
|
|
276
319
|
A pod's disk can start prepared: `files` copies versions of Tenant-wide artifacts in, then `setup` runs its commands, once per new disk and before its first turn (a failed command fails the pod, and the next turn start runs the setup again). Between turns, `client.environments.snapshot(id)` keeps a version of the disk, `restore(id, version)` puts one back (a pod on a new volume seeded before its next turn), `put(newId, { from: { environment: id, version: "latest" } })` starts a new Environment from it, and `versions(id)` and `deleteVersion(id, n)` manage them ([DEPLOYMENT.md](../../guides/DEPLOYMENT.md#environments)):
|
|
277
320
|
|
|
@@ -312,7 +355,7 @@ The tool is named after the agent's `id` and takes `{ task: string }`; the agent
|
|
|
312
355
|
|
|
313
356
|
A flow agent can be a subagent too: `.subagents(researchFlow)` with a `description` like any other. Its manifest is inlined in the parent's, so it is saved with the parent. When the model calls it, the flow runs on the Runtime in its own linked session (a fresh one per call, linked from the parent's with a `node.agent` event at `support/<flow id>`), its agents in theirs, and the flow's output comes back as the tool result; a failed flow is a failed tool result. Cancelling the parent cancels the flow. Flow agents as subagents run on the Runtime only, not in a local `run()`. An approval asked for inside the flow waits on the flow's own session.
|
|
314
357
|
|
|
315
|
-
Delegate when the parent should keep the answer. When a specialist should own the rest of the conversation, send the next message with a turn manifest that has the specialist's instructions instead. This version is one level deep and non-interactive: a delegated agent cannot use agents as tools, and
|
|
358
|
+
Delegate when the parent should keep the answer. When a specialist should own the rest of the conversation, send the next message with a turn manifest that has the specialist's instructions instead. This version is one level deep and non-interactive: a delegated agent cannot use agents as tools, and cannot pause for input, an approval or a wait (keep those on the parent). In the local engine (`@nylorun/harness/run`), a delegated agent's `tool({ run })` tools start with empty `ctx.state`, can read `ctx.agent` (`{ id, path, delegationId }`), and fail with `delegation.interaction-unsupported` on `ctx.ask`, `ctx.approve`, `ctx.sleep` or `ctx.waitFor`. Delegation is not an approval boundary.
|
|
316
359
|
|
|
317
360
|
## Flow agents
|
|
318
361
|
|
|
@@ -398,7 +441,8 @@ an answer that does not match `output` fails the stage with its code (`http.stat
|
|
|
398
441
|
is retried with the Loop's input, not the feedback.
|
|
399
442
|
|
|
400
443
|
A Loop may be judged by your service instead of an agent: `http({ url, method?,
|
|
401
|
-
credential?, timeoutMs? })`, with no name or input, is an HTTP verifier.
|
|
444
|
+
credential?, timeoutMs? })`, with no name or input, is an HTTP verifier. Its method is
|
|
445
|
+
`POST`, `PUT` or `PATCH` and its URL has no `{field}` parameters, because the Runtime
|
|
402
446
|
sends `{ input, output, iteration }` (the Loop's input, the attempt's output, its
|
|
403
447
|
number) and reads a verdict, `{ pass, feedback? }`, from the answer; anything else, or a
|
|
404
448
|
failed request, fails the Loop (`loop.verify-failed`). Its verdicts are recorded as
|
|
@@ -459,7 +503,8 @@ then `dev`. Agents do not hash the manifest; the Runtime pins the digest of the
|
|
|
459
503
|
definition a session opens with. Model selection and model credentials belong to
|
|
460
504
|
the Tenant.
|
|
461
505
|
|
|
462
|
-
The Runtime
|
|
506
|
+
The Runtime sends a lost MCP or HTTP tool call again with the same key, then fails it to the
|
|
507
|
+
model as `tool.interrupted` (see **How tool calls are delivered**).
|
|
463
508
|
In the local engine (`@nylorun/harness/run`), `tool({ run })` tools receive state, info,
|
|
464
509
|
identity, resume, signal, approval/response helpers and memoized `step`. Agent definitions
|
|
465
510
|
have no `.run()`; explicit
|
|
@@ -590,8 +635,10 @@ What the Runtime answers (Host feature `a2a-endpoint`):
|
|
|
590
635
|
on the same `taskId`.
|
|
591
636
|
- The `messageId` is the idempotency key: a retried message returns the same
|
|
592
637
|
task.
|
|
593
|
-
- Text parts,
|
|
594
|
-
|
|
638
|
+
- Text parts, a single data part, or text and `raw` file parts in (at most
|
|
639
|
+
20 MiB each, stored as artifacts of the context's session); the turn's
|
|
640
|
+
output as the artifact `output` (text, or JSON as a data part). A file by
|
|
641
|
+
`url`, or one the Tenant's model does not read, is
|
|
595
642
|
`ContentTypeNotSupportedError`.
|
|
596
643
|
- Clients must send `A2A-Version: 1.0` (header or `?A2A-Version=`).
|
|
597
644
|
- Not yet: `ListTasks`, streaming and `SubscribeToTask`
|
package/dist/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export * from "./session-client.js";
|
|
|
2
2
|
import { AgentsClient } from "./session-client.js";
|
|
3
3
|
import type { Destination } from "./http.js";
|
|
4
4
|
/**
|
|
5
|
-
* Build a
|
|
5
|
+
* Build a Runtime API client.
|
|
6
6
|
* Explicit connection fields keep today's sync Transport resolution (including
|
|
7
7
|
* environment fill-ins). With no connection fields, resolves via
|
|
8
8
|
* `resolveConnection` (environment → project link), which reads the Project's files: it is
|
package/dist/connection.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare class ConnectionError extends Error {
|
|
|
9
9
|
constructor(message: string);
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
* Resolve
|
|
12
|
+
* Resolve a Runtime API connection: options → environment → project link (D§7.1). A connection is a
|
|
13
13
|
* Runtime URL and a key: the Runtime serves one Tenant, so nothing names it.
|
|
14
14
|
*/
|
|
15
15
|
export declare function resolveConnection(options?: {
|
package/dist/connection.js
CHANGED
|
@@ -42,7 +42,7 @@ function readProjectLink(cwd) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
|
-
* Resolve
|
|
45
|
+
* Resolve a Runtime API connection: options → environment → project link (D§7.1). A connection is a
|
|
46
46
|
* Runtime URL and a key: the Runtime serves one Tenant, so nothing names it.
|
|
47
47
|
*/
|
|
48
48
|
export async function resolveConnection(options) {
|
package/dist/session-client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The Runtime API client classes, with no Node-only imports. `client.ts` adds `createClient`,
|
|
3
3
|
* which resolves the connection from the environment or the Project link.
|
|
4
4
|
*/
|
|
5
5
|
import type { AgentManifest, BuiltAgent, BuiltWorkflow, JsonValue, SandboxToolName, WorkflowManifest } from "@nylorun/core/define";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nylorun/agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0-beta",
|
|
4
4
|
"description": "Nylorun agent definitions and session client",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"test": "vitest run --passWithNoTests"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@nylorun/core": "0.
|
|
46
|
+
"@nylorun/core": "0.22.0-beta",
|
|
47
47
|
"gray-matter": "^4.0.3"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|