@resourcexjs/arp 2.4.1 → 2.5.1
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 +334 -184
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
# @resourcexjs/arp
|
|
2
2
|
|
|
3
|
-
Agent Resource Protocol
|
|
3
|
+
Agent Resource Protocol (ARP) - A URL protocol for AI agents to access resources.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
bun add @resourcexjs/arp
|
|
9
|
+
# or
|
|
10
|
+
npm install @resourcexjs/arp
|
|
9
11
|
```
|
|
10
12
|
|
|
11
13
|
## Overview
|
|
12
14
|
|
|
13
|
-
ARP
|
|
15
|
+
ARP provides a unified URL-based abstraction for resource I/O operations. It separates **what** a resource means (semantic) from **where** and **how** to access it (transport).
|
|
14
16
|
|
|
15
17
|
### URL Format
|
|
16
18
|
|
|
@@ -18,200 +20,251 @@ ARP (Agent Resource Protocol) provides a URL-based abstraction layer for resourc
|
|
|
18
20
|
arp:{semantic}:{transport}://{location}
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
| Component | Description | Examples |
|
|
24
|
+
| ----------- | ---------------------- | ----------------------------------- |
|
|
25
|
+
| `semantic` | Content interpretation | `text`, `binary` |
|
|
26
|
+
| `transport` | Storage backend | `file`, `http`, `https` |
|
|
27
|
+
| `location` | Resource path | `/path/to/file`, `example.com/data` |
|
|
24
28
|
|
|
25
|
-
###
|
|
29
|
+
### Example URLs
|
|
26
30
|
|
|
27
31
|
```
|
|
28
|
-
arp:text:file
|
|
29
|
-
arp:
|
|
32
|
+
arp:text:file:///path/to/file.txt # Absolute file path
|
|
33
|
+
arp:text:file://./relative/file.txt # Relative file path
|
|
34
|
+
arp:binary:https://example.com/image.png # HTTPS resource
|
|
35
|
+
arp:text:http://localhost:3000/data # HTTP resource
|
|
30
36
|
```
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
**createARP()** auto-registers standard protocol handlers:
|
|
35
|
-
|
|
36
|
-
**Transports:**
|
|
37
|
-
|
|
38
|
-
- `file` - Local filesystem (read-write)
|
|
39
|
-
- `http`, `https` - Network resources (read-only)
|
|
40
|
-
|
|
41
|
-
> **Note:** For `rxr` transport (ResourceX-specific), use `resourcexjs/arp` instead.
|
|
42
|
-
> The main package provides an enhanced `createARP()` that includes RxrTransport.
|
|
43
|
-
|
|
44
|
-
**Semantics:**
|
|
45
|
-
|
|
46
|
-
- `text` - UTF-8 text -> string
|
|
47
|
-
- `binary` - Raw bytes -> Buffer
|
|
48
|
-
|
|
49
|
-
## Usage
|
|
50
|
-
|
|
51
|
-
### Basic Operations
|
|
38
|
+
## Quick Start
|
|
52
39
|
|
|
53
40
|
```typescript
|
|
54
41
|
import { createARP } from "@resourcexjs/arp";
|
|
55
42
|
|
|
56
43
|
const arp = createARP();
|
|
57
44
|
|
|
58
|
-
// Parse ARP URL
|
|
45
|
+
// Parse ARP URL into ARL (Agent Resource Locator)
|
|
59
46
|
const arl = arp.parse("arp:text:file://./data.txt");
|
|
60
47
|
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
// Write
|
|
66
|
-
await arl.deposit("Hello, World!");
|
|
48
|
+
// Core operations
|
|
49
|
+
await arl.deposit("Hello, World!"); // Write
|
|
50
|
+
const resource = await arl.resolve(); // Read
|
|
51
|
+
console.log(resource.content); // "Hello, World!"
|
|
67
52
|
|
|
68
|
-
// Check existence
|
|
69
53
|
if (await arl.exists()) {
|
|
70
|
-
|
|
54
|
+
// Check existence
|
|
55
|
+
await arl.delete(); // Delete
|
|
71
56
|
}
|
|
72
|
-
|
|
73
|
-
// Delete
|
|
74
|
-
await arl.delete();
|
|
75
57
|
```
|
|
76
58
|
|
|
77
|
-
|
|
59
|
+
## Core Concepts
|
|
78
60
|
|
|
79
|
-
|
|
80
|
-
const arl = arp.parse("arp:text:file://./hello.txt");
|
|
61
|
+
### ARI vs ARL
|
|
81
62
|
|
|
82
|
-
|
|
83
|
-
|
|
63
|
+
- **ARI (Agent Resource Identifier)**: Identifies resource type (semantic + transport)
|
|
64
|
+
- **ARL (Agent Resource Locator)**: Full locator with operations (semantic + transport + location)
|
|
84
65
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
66
|
+
```typescript
|
|
67
|
+
interface ARI {
|
|
68
|
+
readonly semantic: string;
|
|
69
|
+
readonly transport: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
interface ARL extends ARI {
|
|
73
|
+
readonly location: string;
|
|
74
|
+
resolve(params?): Promise<Resource>;
|
|
75
|
+
deposit(data, params?): Promise<void>;
|
|
76
|
+
exists(): Promise<boolean>;
|
|
77
|
+
delete(): Promise<void>;
|
|
78
|
+
list(options?): Promise<string[]>;
|
|
79
|
+
mkdir(): Promise<void>;
|
|
80
|
+
toString(): string;
|
|
81
|
+
}
|
|
88
82
|
```
|
|
89
83
|
|
|
90
|
-
###
|
|
84
|
+
### Resource
|
|
91
85
|
|
|
92
|
-
|
|
93
|
-
const arl = arp.parse("arp:binary:file://./data.bin");
|
|
86
|
+
The result of `arl.resolve()`:
|
|
94
87
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
88
|
+
```typescript
|
|
89
|
+
interface Resource<T = unknown> {
|
|
90
|
+
type: string; // Semantic type ("text", "binary")
|
|
91
|
+
content: T; // Content (string for text, Buffer for binary)
|
|
92
|
+
meta: ResourceMeta; // Metadata
|
|
93
|
+
}
|
|
98
94
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
interface ResourceMeta {
|
|
96
|
+
url: string; // Original ARP URL
|
|
97
|
+
semantic: string;
|
|
98
|
+
transport: string;
|
|
99
|
+
location: string;
|
|
100
|
+
size: number;
|
|
101
|
+
encoding?: string; // e.g., "utf-8" for text
|
|
102
|
+
mimeType?: string;
|
|
103
|
+
resolvedAt: string; // ISO timestamp
|
|
104
|
+
type?: "file" | "directory";
|
|
105
|
+
}
|
|
102
106
|
```
|
|
103
107
|
|
|
104
|
-
##
|
|
108
|
+
## Built-in Handlers
|
|
105
109
|
|
|
106
|
-
|
|
110
|
+
`createARP()` automatically registers standard handlers:
|
|
107
111
|
|
|
108
|
-
|
|
112
|
+
### Transports
|
|
109
113
|
|
|
110
|
-
|
|
114
|
+
| Name | Description | Read | Write | Exists | Delete | List | Mkdir |
|
|
115
|
+
| ------- | ---------------- | ---- | ----- | ------ | ------ | ---- | ----- |
|
|
116
|
+
| `file` | Local filesystem | Yes | Yes | Yes | Yes | Yes | Yes |
|
|
117
|
+
| `http` | HTTP resources | Yes | No | Yes | No | No | No |
|
|
118
|
+
| `https` | HTTPS resources | Yes | No | Yes | No | No | No |
|
|
111
119
|
|
|
112
|
-
|
|
120
|
+
### Semantics
|
|
113
121
|
|
|
114
|
-
|
|
122
|
+
| Name | Input Type | Output Type | Description |
|
|
123
|
+
| -------- | ------------------------------------------------- | ----------- | ------------------ |
|
|
124
|
+
| `text` | `string` | `string` | UTF-8 text content |
|
|
125
|
+
| `binary` | `Buffer`, `Uint8Array`, `ArrayBuffer`, `number[]` | `Buffer` | Raw binary data |
|
|
115
126
|
|
|
116
|
-
|
|
117
|
-
const arp = createARP();
|
|
118
|
-
```
|
|
127
|
+
## API Reference
|
|
119
128
|
|
|
120
|
-
### `
|
|
129
|
+
### `createARP(config?): ARP`
|
|
121
130
|
|
|
122
|
-
|
|
131
|
+
Create an ARP instance.
|
|
123
132
|
|
|
124
|
-
|
|
133
|
+
```typescript
|
|
134
|
+
interface ARPConfig {
|
|
135
|
+
transports?: TransportHandler[]; // Custom transports
|
|
136
|
+
semantics?: SemanticHandler[]; // Custom semantics
|
|
137
|
+
}
|
|
125
138
|
|
|
126
|
-
|
|
139
|
+
const arp = createARP();
|
|
127
140
|
|
|
128
|
-
|
|
141
|
+
// With custom handlers
|
|
142
|
+
const arp = createARP({
|
|
143
|
+
transports: [myTransport],
|
|
144
|
+
semantics: [mySemantic],
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### `arp.parse(url): ARL`
|
|
129
149
|
|
|
130
|
-
|
|
150
|
+
Parse an ARP URL string into an ARL object.
|
|
131
151
|
|
|
132
152
|
```typescript
|
|
133
153
|
const arl = arp.parse("arp:text:file://./data.txt");
|
|
154
|
+
|
|
155
|
+
console.log(arl.semantic); // "text"
|
|
156
|
+
console.log(arl.transport); // "file"
|
|
157
|
+
console.log(arl.location); // "./data.txt"
|
|
158
|
+
console.log(arl.toString()); // "arp:text:file://./data.txt"
|
|
134
159
|
```
|
|
135
160
|
|
|
136
|
-
|
|
161
|
+
**Throws**: `ParseError` if URL format is invalid
|
|
162
|
+
|
|
163
|
+
### `arp.registerTransport(handler): void`
|
|
137
164
|
|
|
138
165
|
Register a custom transport handler.
|
|
139
166
|
|
|
140
167
|
```typescript
|
|
141
|
-
arp.registerTransport(
|
|
168
|
+
arp.registerTransport(myTransportHandler);
|
|
142
169
|
```
|
|
143
170
|
|
|
144
|
-
### `
|
|
171
|
+
### `arp.registerSemantic(handler): void`
|
|
145
172
|
|
|
146
173
|
Register a custom semantic handler.
|
|
147
174
|
|
|
148
175
|
```typescript
|
|
149
|
-
arp.registerSemantic(
|
|
176
|
+
arp.registerSemantic(mySemanticHandler);
|
|
150
177
|
```
|
|
151
178
|
|
|
152
179
|
### ARL Operations
|
|
153
180
|
|
|
154
|
-
#### `resolve(params?): Promise<Resource>`
|
|
181
|
+
#### `arl.resolve(params?): Promise<Resource>`
|
|
155
182
|
|
|
156
183
|
Read resource from location.
|
|
157
184
|
|
|
158
|
-
|
|
185
|
+
```typescript
|
|
186
|
+
const resource = await arl.resolve();
|
|
187
|
+
console.log(resource.type); // "text"
|
|
188
|
+
console.log(resource.content); // string or Buffer
|
|
189
|
+
console.log(resource.meta); // ResourceMeta
|
|
190
|
+
```
|
|
159
191
|
|
|
160
|
-
|
|
192
|
+
**Params**: `TransportParams` - Key-value pairs passed to transport
|
|
161
193
|
|
|
162
|
-
|
|
194
|
+
```typescript
|
|
195
|
+
// Pass parameters to transport
|
|
196
|
+
const resource = await arl.resolve({
|
|
197
|
+
recursive: "true",
|
|
198
|
+
pattern: "*.json",
|
|
199
|
+
});
|
|
200
|
+
```
|
|
163
201
|
|
|
164
|
-
|
|
165
|
-
- `{ content: Buffer }` for binary semantic
|
|
202
|
+
#### `arl.deposit(data, params?): Promise<void>`
|
|
166
203
|
|
|
167
|
-
|
|
204
|
+
Write data to location.
|
|
168
205
|
|
|
169
206
|
```typescript
|
|
170
|
-
|
|
171
|
-
|
|
207
|
+
// Text semantic
|
|
208
|
+
await arl.deposit("Hello, World!");
|
|
209
|
+
|
|
210
|
+
// Binary semantic
|
|
211
|
+
await arl.deposit(Buffer.from([0x48, 0x69]));
|
|
212
|
+
await arl.deposit(new Uint8Array([1, 2, 3]));
|
|
213
|
+
await arl.deposit([1, 2, 3, 4]); // number array
|
|
172
214
|
```
|
|
173
215
|
|
|
174
|
-
|
|
216
|
+
**Throws**: `SemanticError` if semantic doesn't support deposit
|
|
175
217
|
|
|
176
|
-
|
|
218
|
+
#### `arl.exists(): Promise<boolean>`
|
|
177
219
|
|
|
178
|
-
|
|
220
|
+
Check if resource exists.
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
if (await arl.exists()) {
|
|
224
|
+
console.log("Resource exists");
|
|
225
|
+
}
|
|
226
|
+
```
|
|
179
227
|
|
|
180
|
-
|
|
181
|
-
- `params?: TransportParams` - Optional parameters passed to transport
|
|
228
|
+
#### `arl.delete(): Promise<void>`
|
|
182
229
|
|
|
183
|
-
|
|
230
|
+
Delete resource at location.
|
|
184
231
|
|
|
185
232
|
```typescript
|
|
186
|
-
await arl.
|
|
187
|
-
await arl.deposit(Buffer.from([1, 2, 3]));
|
|
233
|
+
await arl.delete();
|
|
188
234
|
```
|
|
189
235
|
|
|
190
|
-
#### `
|
|
191
|
-
|
|
192
|
-
Check if resource exists.
|
|
236
|
+
#### `arl.list(options?): Promise<string[]>`
|
|
193
237
|
|
|
194
|
-
|
|
238
|
+
List directory contents (file transport only).
|
|
195
239
|
|
|
196
240
|
```typescript
|
|
197
|
-
|
|
198
|
-
|
|
241
|
+
interface ListOptions {
|
|
242
|
+
recursive?: boolean; // List subdirectories
|
|
243
|
+
pattern?: string; // Glob pattern filter (e.g., "*.json")
|
|
199
244
|
}
|
|
245
|
+
|
|
246
|
+
const arl = arp.parse("arp:text:file://./my-dir");
|
|
247
|
+
const files = await arl.list(); // ["file1.txt", "file2.txt"]
|
|
248
|
+
const all = await arl.list({ recursive: true }); // ["sub/file.txt", ...]
|
|
249
|
+
const json = await arl.list({ pattern: "*.json" }); // ["config.json", ...]
|
|
200
250
|
```
|
|
201
251
|
|
|
202
|
-
|
|
252
|
+
**Throws**: `TransportError` if transport doesn't support list
|
|
203
253
|
|
|
204
|
-
|
|
254
|
+
#### `arl.mkdir(): Promise<void>`
|
|
205
255
|
|
|
206
|
-
|
|
256
|
+
Create directory (file transport only).
|
|
207
257
|
|
|
208
258
|
```typescript
|
|
209
|
-
|
|
259
|
+
const arl = arp.parse("arp:text:file://./new-dir");
|
|
260
|
+
await arl.mkdir();
|
|
210
261
|
```
|
|
211
262
|
|
|
263
|
+
**Throws**: `TransportError` if transport doesn't support mkdir
|
|
264
|
+
|
|
212
265
|
## Transport Handlers
|
|
213
266
|
|
|
214
|
-
|
|
267
|
+
### Interface
|
|
215
268
|
|
|
216
269
|
```typescript
|
|
217
270
|
interface TransportHandler {
|
|
@@ -220,6 +273,8 @@ interface TransportHandler {
|
|
|
220
273
|
set(location: string, content: Buffer, params?: TransportParams): Promise<void>;
|
|
221
274
|
exists(location: string): Promise<boolean>;
|
|
222
275
|
delete(location: string): Promise<void>;
|
|
276
|
+
list?(location: string, options?: ListOptions): Promise<string[]>;
|
|
277
|
+
mkdir?(location: string): Promise<void>;
|
|
223
278
|
}
|
|
224
279
|
|
|
225
280
|
type TransportParams = Record<string, string>;
|
|
@@ -230,82 +285,126 @@ interface TransportResult {
|
|
|
230
285
|
type?: "file" | "directory";
|
|
231
286
|
size?: number;
|
|
232
287
|
modifiedAt?: Date;
|
|
288
|
+
[key: string]: unknown;
|
|
233
289
|
};
|
|
234
290
|
}
|
|
235
291
|
```
|
|
236
292
|
|
|
237
|
-
### File Transport
|
|
293
|
+
### File Transport
|
|
238
294
|
|
|
239
|
-
Local filesystem operations.
|
|
295
|
+
Local filesystem operations with full read-write support.
|
|
240
296
|
|
|
241
297
|
```typescript
|
|
242
|
-
//
|
|
243
|
-
arp.parse("arp:text:file:///absolute/path
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
//
|
|
249
|
-
|
|
298
|
+
// Paths
|
|
299
|
+
arp.parse("arp:text:file:///absolute/path.txt"); // Absolute
|
|
300
|
+
arp.parse("arp:text:file://./relative/path.txt"); // Relative to cwd
|
|
301
|
+
|
|
302
|
+
// Directory operations
|
|
303
|
+
const dir = arp.parse("arp:text:file://./my-dir");
|
|
304
|
+
await dir.mkdir(); // Create directory
|
|
305
|
+
const files = await dir.list({ recursive: true }); // List recursively
|
|
250
306
|
```
|
|
251
307
|
|
|
252
|
-
**Operations:**
|
|
253
|
-
|
|
254
|
-
- get (read file)
|
|
255
|
-
- set (write file)
|
|
256
|
-
- exists (check file)
|
|
257
|
-
- delete (remove file)
|
|
258
|
-
|
|
259
308
|
### HTTP/HTTPS Transport
|
|
260
309
|
|
|
261
|
-
|
|
310
|
+
Read-only network resource access.
|
|
262
311
|
|
|
263
312
|
```typescript
|
|
264
|
-
arp.parse("arp:text:https://example.com/data.txt");
|
|
265
|
-
arp.parse("arp:binary:https://example.com/image.png");
|
|
266
|
-
```
|
|
313
|
+
const arl = arp.parse("arp:text:https://example.com/data.txt");
|
|
267
314
|
|
|
268
|
-
|
|
315
|
+
// Read
|
|
316
|
+
const resource = await arl.resolve();
|
|
269
317
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
318
|
+
// Check existence (HEAD request)
|
|
319
|
+
const exists = await arl.exists();
|
|
320
|
+
|
|
321
|
+
// Query parameters
|
|
322
|
+
const arl2 = arp.parse("arp:text:https://api.example.com/data?format=json");
|
|
323
|
+
const resource2 = await arl2.resolve({ token: "abc123" }); // Merges params
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
**Note**: `set`, `delete`, `list`, `mkdir` throw `TransportError`
|
|
274
327
|
|
|
275
328
|
## Semantic Handlers
|
|
276
329
|
|
|
330
|
+
### Interface
|
|
331
|
+
|
|
277
332
|
```typescript
|
|
278
|
-
interface SemanticHandler {
|
|
333
|
+
interface SemanticHandler<T = unknown> {
|
|
279
334
|
readonly name: string;
|
|
280
|
-
|
|
281
|
-
|
|
335
|
+
resolve(
|
|
336
|
+
transport: TransportHandler,
|
|
337
|
+
location: string,
|
|
338
|
+
context: SemanticContext
|
|
339
|
+
): Promise<Resource<T>>;
|
|
340
|
+
deposit?(
|
|
341
|
+
transport: TransportHandler,
|
|
342
|
+
location: string,
|
|
343
|
+
data: T,
|
|
344
|
+
context: SemanticContext
|
|
345
|
+
): Promise<void>;
|
|
346
|
+
exists?(
|
|
347
|
+
transport: TransportHandler,
|
|
348
|
+
location: string,
|
|
349
|
+
context: SemanticContext
|
|
350
|
+
): Promise<boolean>;
|
|
351
|
+
delete?(transport: TransportHandler, location: string, context: SemanticContext): Promise<void>;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
interface SemanticContext {
|
|
355
|
+
url: string;
|
|
356
|
+
semantic: string;
|
|
357
|
+
transport: string;
|
|
358
|
+
location: string;
|
|
359
|
+
timestamp: Date;
|
|
360
|
+
params?: TransportParams;
|
|
282
361
|
}
|
|
283
362
|
```
|
|
284
363
|
|
|
285
|
-
### Text Semantic
|
|
364
|
+
### Text Semantic
|
|
365
|
+
|
|
366
|
+
UTF-8 text handling.
|
|
367
|
+
|
|
368
|
+
```typescript
|
|
369
|
+
const arl = arp.parse("arp:text:file://./hello.txt");
|
|
370
|
+
|
|
371
|
+
await arl.deposit("Hello, World!");
|
|
372
|
+
|
|
373
|
+
const resource = await arl.resolve();
|
|
374
|
+
// resource.type = "text"
|
|
375
|
+
// resource.content = "Hello, World!" (string)
|
|
376
|
+
// resource.meta.encoding = "utf-8"
|
|
377
|
+
// resource.meta.mimeType = "text/plain"
|
|
378
|
+
```
|
|
286
379
|
|
|
287
|
-
|
|
380
|
+
### Binary Semantic
|
|
288
381
|
|
|
289
|
-
|
|
290
|
-
- **Output**: `string`
|
|
382
|
+
Raw binary data handling.
|
|
291
383
|
|
|
292
|
-
|
|
384
|
+
```typescript
|
|
385
|
+
const arl = arp.parse("arp:binary:file://./data.bin");
|
|
293
386
|
|
|
294
|
-
|
|
387
|
+
// Multiple input types supported
|
|
388
|
+
await arl.deposit(Buffer.from([1, 2, 3, 4]));
|
|
389
|
+
await arl.deposit(new Uint8Array([1, 2, 3, 4]));
|
|
390
|
+
await arl.deposit(new ArrayBuffer(4));
|
|
391
|
+
await arl.deposit([1, 2, 3, 4]); // number[]
|
|
295
392
|
|
|
296
|
-
|
|
297
|
-
|
|
393
|
+
const resource = await arl.resolve();
|
|
394
|
+
// resource.type = "binary"
|
|
395
|
+
// resource.content = Buffer
|
|
396
|
+
```
|
|
298
397
|
|
|
299
398
|
## Error Handling
|
|
300
399
|
|
|
301
400
|
```typescript
|
|
302
|
-
import { ParseError, TransportError, SemanticError } from "@resourcexjs/arp";
|
|
401
|
+
import { ARPError, ParseError, TransportError, SemanticError } from "@resourcexjs/arp";
|
|
303
402
|
|
|
304
403
|
try {
|
|
305
|
-
const arl = arp.parse("
|
|
404
|
+
const arl = arp.parse("invalid-url");
|
|
306
405
|
} catch (error) {
|
|
307
406
|
if (error instanceof ParseError) {
|
|
308
|
-
console.error("Invalid ARP URL");
|
|
407
|
+
console.error("Invalid ARP URL:", error.url);
|
|
309
408
|
}
|
|
310
409
|
}
|
|
311
410
|
|
|
@@ -313,17 +412,22 @@ try {
|
|
|
313
412
|
await arl.resolve();
|
|
314
413
|
} catch (error) {
|
|
315
414
|
if (error instanceof TransportError) {
|
|
316
|
-
console.error("Transport
|
|
415
|
+
console.error("Transport failed:", error.transport);
|
|
416
|
+
}
|
|
417
|
+
if (error instanceof SemanticError) {
|
|
418
|
+
console.error("Semantic failed:", error.semantic);
|
|
317
419
|
}
|
|
318
420
|
}
|
|
319
421
|
```
|
|
320
422
|
|
|
321
|
-
### Error
|
|
423
|
+
### Error Hierarchy
|
|
322
424
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
-
|
|
326
|
-
-
|
|
425
|
+
```
|
|
426
|
+
ARPError (base)
|
|
427
|
+
├── ParseError - Invalid ARP URL format
|
|
428
|
+
├── TransportError - Transport operation failed
|
|
429
|
+
└── SemanticError - Semantic operation failed
|
|
430
|
+
```
|
|
327
431
|
|
|
328
432
|
## Examples
|
|
329
433
|
|
|
@@ -333,32 +437,42 @@ try {
|
|
|
333
437
|
const source = arp.parse("arp:binary:file://./source.bin");
|
|
334
438
|
const dest = arp.parse("arp:binary:file://./dest.bin");
|
|
335
439
|
|
|
336
|
-
// Read from source
|
|
337
440
|
const { content } = await source.resolve();
|
|
338
|
-
|
|
339
|
-
// Write to destination
|
|
340
441
|
await dest.deposit(content);
|
|
341
442
|
```
|
|
342
443
|
|
|
343
444
|
### Download and Save
|
|
344
445
|
|
|
345
446
|
```typescript
|
|
346
|
-
// Download from URL
|
|
347
447
|
const remote = arp.parse("arp:text:https://example.com/data.txt");
|
|
348
|
-
const { content } = await remote.resolve();
|
|
349
|
-
|
|
350
|
-
// Save locally
|
|
351
448
|
const local = arp.parse("arp:text:file://./downloaded.txt");
|
|
449
|
+
|
|
450
|
+
const { content } = await remote.resolve();
|
|
352
451
|
await local.deposit(content);
|
|
353
452
|
```
|
|
354
453
|
|
|
355
454
|
### Conditional Write
|
|
356
455
|
|
|
357
456
|
```typescript
|
|
358
|
-
const arl = arp.parse("arp:text:file://./
|
|
457
|
+
const arl = arp.parse("arp:text:file://./config.txt");
|
|
359
458
|
|
|
360
459
|
if (!(await arl.exists())) {
|
|
361
|
-
await arl.deposit("
|
|
460
|
+
await arl.deposit("default config");
|
|
461
|
+
}
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
### Process Directory
|
|
465
|
+
|
|
466
|
+
```typescript
|
|
467
|
+
const dir = arp.parse("arp:text:file://./data");
|
|
468
|
+
|
|
469
|
+
// List all JSON files recursively
|
|
470
|
+
const files = await dir.list({ recursive: true, pattern: "*.json" });
|
|
471
|
+
|
|
472
|
+
for (const file of files) {
|
|
473
|
+
const fileArl = arp.parse(`arp:text:file://./data/${file}`);
|
|
474
|
+
const { content } = await fileArl.resolve();
|
|
475
|
+
console.log(`${file}: ${content.length} chars`);
|
|
362
476
|
}
|
|
363
477
|
```
|
|
364
478
|
|
|
@@ -367,26 +481,32 @@ if (!(await arl.exists())) {
|
|
|
367
481
|
### Custom Transport
|
|
368
482
|
|
|
369
483
|
```typescript
|
|
370
|
-
import type { TransportHandler,
|
|
484
|
+
import type { TransportHandler, TransportResult, TransportParams } from "@resourcexjs/arp";
|
|
371
485
|
|
|
372
486
|
class S3Transport implements TransportHandler {
|
|
373
487
|
readonly name = "s3";
|
|
374
488
|
|
|
375
489
|
async get(location: string, params?: TransportParams): Promise<TransportResult> {
|
|
376
|
-
|
|
490
|
+
// location format: "bucket-name/key/path"
|
|
491
|
+
const [bucket, ...keyParts] = location.split("/");
|
|
492
|
+
const key = keyParts.join("/");
|
|
493
|
+
|
|
494
|
+
const data = await s3.getObject({ Bucket: bucket, Key: key });
|
|
377
495
|
return {
|
|
378
|
-
content: data.Body
|
|
496
|
+
content: Buffer.from(await data.Body!.transformToByteArray()),
|
|
379
497
|
metadata: { type: "file", size: data.ContentLength },
|
|
380
498
|
};
|
|
381
499
|
}
|
|
382
500
|
|
|
383
501
|
async set(location: string, content: Buffer, params?: TransportParams): Promise<void> {
|
|
384
|
-
|
|
502
|
+
const [bucket, ...keyParts] = location.split("/");
|
|
503
|
+
await s3.putObject({ Bucket: bucket, Key: keyParts.join("/"), Body: content });
|
|
385
504
|
}
|
|
386
505
|
|
|
387
506
|
async exists(location: string): Promise<boolean> {
|
|
388
507
|
try {
|
|
389
|
-
|
|
508
|
+
const [bucket, ...keyParts] = location.split("/");
|
|
509
|
+
await s3.headObject({ Bucket: bucket, Key: keyParts.join("/") });
|
|
390
510
|
return true;
|
|
391
511
|
} catch {
|
|
392
512
|
return false;
|
|
@@ -394,44 +514,74 @@ class S3Transport implements TransportHandler {
|
|
|
394
514
|
}
|
|
395
515
|
|
|
396
516
|
async delete(location: string): Promise<void> {
|
|
397
|
-
|
|
517
|
+
const [bucket, ...keyParts] = location.split("/");
|
|
518
|
+
await s3.deleteObject({ Bucket: bucket, Key: keyParts.join("/") });
|
|
398
519
|
}
|
|
399
520
|
}
|
|
400
521
|
|
|
401
|
-
// Register
|
|
522
|
+
// Register and use
|
|
402
523
|
const arp = createARP();
|
|
403
524
|
arp.registerTransport(new S3Transport());
|
|
404
525
|
|
|
405
|
-
|
|
406
|
-
const arl = arp.parse("arp:binary:s3://my-bucket/file.bin");
|
|
526
|
+
const arl = arp.parse("arp:binary:s3://my-bucket/path/file.bin");
|
|
407
527
|
```
|
|
408
528
|
|
|
409
529
|
### Custom Semantic
|
|
410
530
|
|
|
411
531
|
```typescript
|
|
412
|
-
import type { SemanticHandler } from "@resourcexjs/arp";
|
|
532
|
+
import type { SemanticHandler, Resource, SemanticContext, ResourceMeta } from "@resourcexjs/arp";
|
|
533
|
+
import type { TransportHandler } from "@resourcexjs/arp";
|
|
534
|
+
|
|
535
|
+
interface JsonResource extends Resource<unknown> {
|
|
536
|
+
type: "json";
|
|
537
|
+
content: unknown;
|
|
538
|
+
}
|
|
413
539
|
|
|
414
|
-
class JsonSemantic implements SemanticHandler {
|
|
540
|
+
class JsonSemantic implements SemanticHandler<unknown> {
|
|
415
541
|
readonly name = "json";
|
|
416
542
|
|
|
417
|
-
async
|
|
418
|
-
|
|
419
|
-
|
|
543
|
+
async resolve(
|
|
544
|
+
transport: TransportHandler,
|
|
545
|
+
location: string,
|
|
546
|
+
context: SemanticContext
|
|
547
|
+
): Promise<JsonResource> {
|
|
548
|
+
const result = await transport.get(location, context.params);
|
|
549
|
+
const text = result.content.toString("utf-8");
|
|
550
|
+
const content = JSON.parse(text);
|
|
551
|
+
|
|
552
|
+
const meta: ResourceMeta = {
|
|
553
|
+
url: context.url,
|
|
554
|
+
semantic: context.semantic,
|
|
555
|
+
transport: context.transport,
|
|
556
|
+
location: context.location,
|
|
557
|
+
size: result.content.length,
|
|
558
|
+
encoding: "utf-8",
|
|
559
|
+
mimeType: "application/json",
|
|
560
|
+
resolvedAt: context.timestamp.toISOString(),
|
|
561
|
+
type: "file",
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
return { type: "json", content, meta };
|
|
420
565
|
}
|
|
421
566
|
|
|
422
|
-
async
|
|
423
|
-
|
|
424
|
-
|
|
567
|
+
async deposit(
|
|
568
|
+
transport: TransportHandler,
|
|
569
|
+
location: string,
|
|
570
|
+
data: unknown,
|
|
571
|
+
context: SemanticContext
|
|
572
|
+
): Promise<void> {
|
|
573
|
+
const json = JSON.stringify(data, null, 2);
|
|
574
|
+
const buffer = Buffer.from(json, "utf-8");
|
|
575
|
+
await transport.set(location, buffer, context.params);
|
|
425
576
|
}
|
|
426
577
|
}
|
|
427
578
|
|
|
428
|
-
// Register
|
|
579
|
+
// Register and use
|
|
429
580
|
arp.registerSemantic(new JsonSemantic());
|
|
430
581
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
await arl.
|
|
434
|
-
const { content } = await arl.resolve(); // parsed JSON
|
|
582
|
+
const arl = arp.parse("arp:json:file://./config.json");
|
|
583
|
+
await arl.deposit({ key: "value", nested: { foo: "bar" } });
|
|
584
|
+
const { content } = await arl.resolve(); // parsed object
|
|
435
585
|
```
|
|
436
586
|
|
|
437
587
|
## Exports
|
|
@@ -445,12 +595,12 @@ export const VERSION: string;
|
|
|
445
595
|
// Errors
|
|
446
596
|
export { ARPError, ParseError, TransportError, SemanticError };
|
|
447
597
|
|
|
448
|
-
//
|
|
598
|
+
// Transport
|
|
449
599
|
export type { TransportHandler, TransportResult, TransportParams, ListOptions };
|
|
450
600
|
export { FileTransportHandler, fileTransport };
|
|
451
601
|
export { HttpTransportHandler, httpTransport, httpsTransport };
|
|
452
602
|
|
|
453
|
-
//
|
|
603
|
+
// Semantic
|
|
454
604
|
export type { Resource, SemanticHandler, ResourceMeta, SemanticContext };
|
|
455
605
|
export type { TextResource, BinaryResource, BinaryInput };
|
|
456
606
|
export { TextSemanticHandler, textSemantic };
|
|
@@ -459,4 +609,4 @@ export { BinarySemanticHandler, binarySemantic };
|
|
|
459
609
|
|
|
460
610
|
## License
|
|
461
611
|
|
|
462
|
-
|
|
612
|
+
Apache-2.0
|
package/dist/index.js
CHANGED
|
@@ -518,7 +518,7 @@ function createARP(config) {
|
|
|
518
518
|
}
|
|
519
519
|
|
|
520
520
|
// src/index.ts
|
|
521
|
-
var VERSION = "2.
|
|
521
|
+
var VERSION = "2.5.1";
|
|
522
522
|
export {
|
|
523
523
|
textSemantic,
|
|
524
524
|
httpsTransport,
|
|
@@ -538,4 +538,4 @@ export {
|
|
|
538
538
|
ARP
|
|
539
539
|
};
|
|
540
540
|
|
|
541
|
-
//# debugId=
|
|
541
|
+
//# debugId=0ADFAF622CDEDD0E64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -12,6 +12,6 @@
|
|
|
12
12
|
"/**\n * arpjs - Agent Resource Protocol\n *\n * A URL protocol for AI agents to access resources\n * Format: arp:{semantic}:{transport}://{location}\n */\n\ndeclare const __VERSION__: string | undefined;\nexport const VERSION: string = typeof __VERSION__ !== \"undefined\" ? __VERSION__ : \"0.0.0-dev\";\n\n// Core types\nexport type { ARI, ARL } from \"./types.js\";\n\n// ARP factory and class\nexport { ARP, createARP, type ARPConfig } from \"./ARP.js\";\n\n// Errors\nexport { ARPError, ParseError, TransportError, SemanticError } from \"./errors.js\";\n\n// Transport (standard protocols only; for RXR transport use resourcexjs)\nexport {\n type TransportHandler,\n type TransportResult,\n type TransportParams,\n type ListOptions,\n FileTransportHandler,\n fileTransport,\n HttpTransportHandler,\n httpsTransport,\n httpTransport,\n} from \"./transport/index.js\";\n\n// Semantic\nexport {\n type Resource,\n type SemanticHandler,\n type ResourceMeta,\n type SemanticContext,\n type TextResource,\n type BinaryResource,\n type BinaryInput,\n TextSemanticHandler,\n textSemantic,\n BinarySemanticHandler,\n binarySemantic,\n} from \"./semantic/index.js\";\n"
|
|
13
13
|
],
|
|
14
14
|
"mappings": ";AAOO,MAAM,iBAAiB,MAAM;AAAA,EAClC,WAAW,CAAC,SAAiB,SAAwB;AAAA,IACnD,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAKO,MAAM,mBAAmB,SAAS;AAAA,EAGrB;AAAA,EAFlB,WAAW,CACT,SACgB,KAChB;AAAA,IACA,MAAM,OAAO;AAAA,IAFG;AAAA,IAGhB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAKO,MAAM,uBAAuB,SAAS;AAAA,EAGzB;AAAA,EAFlB,WAAW,CACT,SACgB,WAChB,SACA;AAAA,IACA,MAAM,SAAS,OAAO;AAAA,IAHN;AAAA,IAIhB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAKO,MAAM,sBAAsB,SAAS;AAAA,EAGxB;AAAA,EAFlB,WAAW,CACT,SACgB,UAChB,SACA;AAAA,IACA,MAAM,SAAS,OAAO;AAAA,IAHN;AAAA,IAIhB,KAAK,OAAO;AAAA;AAEhB;;;ACjCO,MAAM,IAAoB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EAEQ;AAAA,EAEjB,WAAW,CAAC,UAAkB,WAAmB,UAAkB,UAA2B;AAAA,IAC5F,KAAK,WAAW;AAAA,IAChB,KAAK,YAAY;AAAA,IACjB,KAAK,WAAW;AAAA,IAChB,KAAK,WAAW;AAAA;AAAA,EAMV,aAAa,CAAC,QAA2C;AAAA,IAC/D,OAAO;AAAA,MACL,KAAK,KAAK,SAAS;AAAA,MACnB,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,UAAU,KAAK;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,IACF;AAAA;AAAA,OAMI,QAAO,CAAC,QAA6C;AAAA,IACzD,MAAM,YAAY,KAAK,SAAS,oBAAoB,KAAK,SAAS;AAAA,IAClE,MAAM,WAAW,KAAK,SAAS,mBAAmB,KAAK,QAAQ;AAAA,IAC/D,MAAM,UAAU,KAAK,cAAc,MAAM;AAAA,IAEzC,OAAO,SAAS,QAAQ,WAAW,KAAK,UAAU,OAAO;AAAA;AAAA,OAMrD,QAAO,CAAC,MAAe,QAAyC;AAAA,IACpE,MAAM,YAAY,KAAK,SAAS,oBAAoB,KAAK,SAAS;AAAA,IAClE,MAAM,WAAW,KAAK,SAAS,mBAAmB,KAAK,QAAQ;AAAA,IAC/D,MAAM,UAAU,KAAK,cAAc,MAAM;AAAA,IAEzC,IAAI,CAAC,SAAS,SAAS;AAAA,MACrB,MAAM,IAAI,cACR,aAAa,SAAS,4CACtB,KAAK,QACP;AAAA,IACF;AAAA,IAEA,MAAM,SAAS,QAAQ,WAAW,KAAK,UAAU,MAAM,OAAO;AAAA;AAAA,OAM1D,OAAM,GAAqB;AAAA,IAC/B,MAAM,YAAY,KAAK,SAAS,oBAAoB,KAAK,SAAS;AAAA,IAClE,MAAM,WAAW,KAAK,SAAS,mBAAmB,KAAK,QAAQ;AAAA,IAC/D,MAAM,UAAU,KAAK,cAAc;AAAA,IAEnC,IAAI,SAAS,QAAQ;AAAA,MACnB,OAAO,SAAS,OAAO,WAAW,KAAK,UAAU,OAAO;AAAA,IAC1D;AAAA,IAGA,OAAO,UAAU,OAAO,KAAK,QAAQ;AAAA;AAAA,OAMjC,OAAM,GAAkB;AAAA,IAC5B,MAAM,YAAY,KAAK,SAAS,oBAAoB,KAAK,SAAS;AAAA,IAClE,MAAM,WAAW,KAAK,SAAS,mBAAmB,KAAK,QAAQ;AAAA,IAC/D,MAAM,UAAU,KAAK,cAAc;AAAA,IAEnC,IAAI,SAAS,QAAQ;AAAA,MACnB,OAAO,SAAS,OAAO,WAAW,KAAK,UAAU,OAAO;AAAA,IAC1D;AAAA,IAGA,MAAM,UAAU,OAAO,KAAK,QAAQ;AAAA;AAAA,OAMhC,KAAI,CAAC,SAA0C;AAAA,IACnD,MAAM,YAAY,KAAK,SAAS,oBAAoB,KAAK,SAAS;AAAA,IAElE,IAAI,CAAC,UAAU,MAAM;AAAA,MACnB,MAAM,IAAI,eACR,cAAc,UAAU,yCACxB,KAAK,SACP;AAAA,IACF;AAAA,IAEA,OAAO,UAAU,KAAK,KAAK,UAAU,OAAO;AAAA;AAAA,OAMxC,MAAK,GAAkB;AAAA,IAC3B,MAAM,YAAY,KAAK,SAAS,oBAAoB,KAAK,SAAS;AAAA,IAElE,IAAI,CAAC,UAAU,OAAO;AAAA,MACpB,MAAM,IAAI,eACR,cAAc,UAAU,0CACxB,KAAK,SACP;AAAA,IACF;AAAA,IAEA,MAAM,UAAU,MAAM,KAAK,QAAQ;AAAA;AAAA,EAMrC,QAAQ,GAAW;AAAA,IACjB,OAAO,OAAO,KAAK,YAAY,KAAK,eAAe,KAAK;AAAA;AAE5D;;;AC1IA;AACA;AAIO,MAAM,qBAAiD;AAAA,EACnD,OAAO;AAAA,EAER,WAAW,CAAC,UAA0B;AAAA,IAC5C,OAAO,QAAQ,QAAQ,IAAI,GAAG,QAAQ;AAAA;AAAA,OAMlC,IAAG,CAAC,UAAkB,QAAoD;AAAA,IAC9E,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAE1C,IAAI;AAAA,MACF,MAAM,QAAQ,MAAM,KAAK,QAAQ;AAAA,MAEjC,IAAI,MAAM,YAAY,GAAG;AAAA,QACvB,OAAO,KAAK,aAAa,UAAU,OAAO,MAAM;AAAA,MAClD,EAAO;AAAA,QACL,OAAO,KAAK,QAAQ,UAAU,KAAK;AAAA;AAAA,MAErC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,mBAAmB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QAC/E,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAOS,QAAO,CACnB,UACA,OAC0B;AAAA,IAC1B,MAAM,UAAU,MAAM,SAAS,QAAQ;AAAA,IACvC,OAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,MAAM,OAAO,MAAM,IAAI;AAAA,QACvB,YAAY,MAAM;AAAA,MACpB;AAAA,IACF;AAAA;AAAA,OAMY,aAAY,CACxB,SACA,OACA,QAC0B;AAAA,IAC1B,MAAM,YAAY,QAAQ,cAAc;AAAA,IACxC,MAAM,UAAU,QAAQ;AAAA,IAExB,IAAI;AAAA,IAEJ,IAAI,WAAW;AAAA,MACb,UAAU,MAAM,KAAK,cAAc,SAAS,OAAO;AAAA,IACrD,EAAO;AAAA,MACL,UAAU,MAAM,QAAQ,OAAO;AAAA;AAAA,IAIjC,IAAI,SAAS;AAAA,MACX,UAAU,KAAK,gBAAgB,SAAS,OAAO;AAAA,IACjD;AAAA,IAGA,MAAM,UAAU,OAAO,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,IACnD,OAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,YAAY,MAAM;AAAA,MACpB;AAAA,IACF;AAAA;AAAA,OAMY,cAAa,CAAC,UAAkB,aAAwC;AAAA,IACpF,MAAM,UAAU,MAAM,QAAQ,aAAa,EAAE,eAAe,KAAK,CAAC;AAAA,IAClE,MAAM,UAAoB,CAAC;AAAA,IAE3B,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,WAAW,KAAK,aAAa,MAAM,IAAI;AAAA,MAC7C,MAAM,eAAe,SAAS,UAAU,SAAS,SAAS,CAAC;AAAA,MAE3D,IAAI,MAAM,YAAY,GAAG;AAAA,QACvB,MAAM,aAAa,MAAM,KAAK,cAAc,UAAU,QAAQ;AAAA,QAC9D,QAAQ,KAAK,GAAG,UAAU;AAAA,MAC5B,EAAO;AAAA,QACL,QAAQ,KAAK,YAAY;AAAA;AAAA,IAE7B;AAAA,IAEA,OAAO;AAAA;AAAA,EAOD,eAAe,CAAC,SAAmB,SAA2B;AAAA,IAEpE,MAAM,eAAe,QAAQ,QAAQ,OAAO,KAAK,EAAE,QAAQ,OAAO,IAAI,EAAE,QAAQ,OAAO,GAAG;AAAA,IAC1F,MAAM,QAAQ,IAAI,OAAO,IAAI,eAAe;AAAA,IAE5C,OAAO,QAAQ,OAAO,CAAC,UAAU;AAAA,MAE/B,MAAM,WAAW,MAAM,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,MAC3C,OAAO,MAAM,KAAK,QAAQ;AAAA,KAC3B;AAAA;AAAA,OAMG,IAAG,CAAC,UAAkB,SAAiB,SAA0C;AAAA,IACrF,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAE1C,IAAI;AAAA,MAEF,MAAM,MAAM,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,MAClD,MAAM,UAAU,UAAU,OAAO;AAAA,MACjC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,mBAAmB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QAC/E,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAOC,OAAM,CAAC,UAAoC;AAAA,IAC/C,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAE1C,IAAI;AAAA,MACF,MAAM,OAAO,QAAQ;AAAA,MACrB,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA;AAAA;AAAA,OAOL,OAAM,CAAC,UAAiC;AAAA,IAC5C,MAAM,WAAW,KAAK,YAAY,QAAQ;AAAA,IAE1C,IAAI;AAAA,MACF,MAAM,GAAG,UAAU,EAAE,WAAW,KAAK,CAAC;AAAA,MACtC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MAEZ,IAAI,IAAI,SAAS,UAAU;AAAA,QACzB;AAAA,MACF;AAAA,MACA,MAAM,IAAI,eAAe,sBAAsB,IAAI,UAAU,YAAY,KAAK,MAAM;AAAA,QAClF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAOC,KAAI,CAAC,UAAkB,SAA0C;AAAA,IACrE,MAAM,UAAU,KAAK,YAAY,QAAQ;AAAA,IAEzC,IAAI;AAAA,MACF,IAAI;AAAA,MAEJ,IAAI,SAAS,WAAW;AAAA,QACtB,UAAU,MAAM,KAAK,cAAc,SAAS,OAAO;AAAA,MACrD,EAAO;AAAA,QACL,UAAU,MAAM,QAAQ,OAAO;AAAA;AAAA,MAIjC,IAAI,SAAS,SAAS;AAAA,QACpB,UAAU,KAAK,gBAAgB,SAAS,QAAQ,OAAO;AAAA,MACzD;AAAA,MAEA,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,oBAAoB,IAAI,UAAU,WAAW,KAAK,MAAM;AAAA,QAC/E,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,OAOC,MAAK,CAAC,UAAiC;AAAA,IAC3C,MAAM,UAAU,KAAK,YAAY,QAAQ;AAAA,IAEzC,IAAI;AAAA,MACF,MAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,MACxC,OAAO,OAAO;AAAA,MACd,MAAM,MAAM;AAAA,MACZ,MAAM,IAAI,eAAe,qBAAqB,IAAI,UAAU,WAAW,KAAK,MAAM;AAAA,QAChF,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAGP;AAEO,IAAM,gBAAsC,IAAI;;AC7NhD,MAAM,qBAAiD;AAAA,EACnD;AAAA,EACQ;AAAA,EAEjB,WAAW,CAAC,WAA6B,SAAS;AAAA,IAChD,KAAK,WAAW;AAAA,IAChB,KAAK,OAAO;AAAA;AAAA,OAOR,IAAG,CAAC,UAAkB,QAAoD;AAAA,IAC9E,MAAM,MAAM,KAAK,SAAS,UAAU,MAAM;AAAA,IAE1C,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,MAAM,GAAG;AAAA,MAEhC,IAAI,CAAC,SAAS,IAAI;AAAA,QAChB,MAAM,IAAI,eACR,QAAQ,SAAS,WAAW,SAAS,gBAAgB,OACrD,KAAK,IACP;AAAA,MACF;AAAA,MAEA,MAAM,cAAc,MAAM,SAAS,YAAY;AAAA,MAC/C,MAAM,UAAU,OAAO,KAAK,WAAW;AAAA,MAGvC,MAAM,cAAc,SAAS,QAAQ,IAAI,cAAc;AAAA,MACvD,MAAM,gBAAgB,SAAS,QAAQ,IAAI,gBAAgB;AAAA,MAC3D,MAAM,eAAe,SAAS,QAAQ,IAAI,eAAe;AAAA,MAEzD,OAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,gBAAgB,SAAS,eAAe,EAAE,IAAI,QAAQ;AAAA,UAC5D,YAAY,eAAe,IAAI,KAAK,YAAY,IAAI;AAAA,UACpD;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,gBAAgB;AAAA,QACnC,MAAM;AAAA,MACR;AAAA,MACA,MAAM,IAAI,eAAe,kBAAkB,OAAO,KAAK,MAAM;AAAA,QAC3D,OAAO;AAAA,MACT,CAAC;AAAA;AAAA;AAAA,EAOG,QAAQ,CAAC,UAAkB,QAAkC;AAAA,IACnE,MAAM,MAAM,IAAI,IAAI,GAAG,KAAK,cAAc,UAAU;AAAA,IAGpD,IAAI,QAAQ;AAAA,MACV,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,QACjD,IAAI,aAAa,IAAI,KAAK,KAAK;AAAA,MACjC;AAAA,IACF;AAAA,IAEA,OAAO,IAAI,SAAS;AAAA;AAAA,OAMhB,IAAG,CAAC,WAAmB,UAAkB,SAA0C;AAAA,IACvF,MAAM,IAAI,eAAe,kDAAkD,KAAK,IAAI;AAAA;AAAA,OAMhF,OAAM,CAAC,UAAoC;AAAA,IAC/C,MAAM,MAAM,GAAG,KAAK,cAAc;AAAA,IAElC,IAAI;AAAA,MACF,MAAM,WAAW,MAAM,MAAM,KAAK,EAAE,QAAQ,OAAO,CAAC;AAAA,MACpD,OAAO,SAAS;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA;AAAA;AAAA,OAOL,OAAM,CAAC,WAAkC;AAAA,IAC7C,MAAM,IAAI,eAAe,qDAAqD,KAAK,IAAI;AAAA;AAE3F;AAEO,IAAM,iBAAuC,IAAI,qBAAqB,OAAO;AAC7E,IAAM,gBAAsC,IAAI,qBAAqB,MAAM;;AChG3E,MAAM,oBAAuD;AAAA,EACzD,OAAO;AAAA,OAEV,QAAO,CACX,WACA,UACA,SACuB;AAAA,IACvB,MAAM,SAAS,MAAM,UAAU,IAAI,UAAU,QAAQ,MAAM;AAAA,IAG3D,IAAI,OAAO,UAAU,SAAS,aAAa;AAAA,MAEzC,MAAM,QAAqB;AAAA,QACzB,KAAK,QAAQ;AAAA,QACb,UAAU,QAAQ;AAAA,QAClB,WAAW,QAAQ;AAAA,QACnB,UAAU,QAAQ;AAAA,QAClB,MAAM,OAAO,QAAQ;AAAA,QACrB,UAAU;AAAA,QACV,UAAU;AAAA,QACV,YAAY,QAAQ,UAAU,YAAY;AAAA,QAC1C,MAAM;AAAA,MACR;AAAA,MAEA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,OAAO,QAAQ,SAAS,OAAO;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,IAGA,MAAM,OAAO,OAAO,QAAQ,SAAS,OAAO;AAAA,IAC5C,MAAM,OAAqB;AAAA,MACzB,KAAK,QAAQ;AAAA,MACb,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,UAAU,QAAQ;AAAA,MAClB,MAAM,OAAO,UAAU,QAAQ,OAAO,QAAQ;AAAA,MAC9C,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY,QAAQ,UAAU,YAAY;AAAA,MAC1C,MAAM;AAAA,IACR;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,IACF;AAAA;AAAA,OAGI,QAAO,CACX,WACA,UACA,MACA,SACe;AAAA,IACf,MAAM,SAAS,OAAO,KAAK,MAAM,OAAO;AAAA,IAExC,IAAI;AAAA,MACF,MAAM,UAAU,IAAI,UAAU,QAAQ,QAAQ,MAAM;AAAA,MACpD,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,cACR,8BAA8B,cAAe,MAAgB,WAC7D,KAAK,MACL,EAAE,OAAO,MAAe,CAC1B;AAAA;AAAA;AAAA,OAIE,OAAM,CACV,WACA,UACA,UACkB;AAAA,IAClB,OAAO,UAAU,OAAO,QAAQ;AAAA;AAAA,OAG5B,OAAM,CACV,WACA,UACA,UACe;AAAA,IACf,IAAI;AAAA,MACF,MAAM,UAAU,OAAO,QAAQ;AAAA,MAC/B,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,cACR,qBAAqB,cAAe,MAAgB,WACpD,KAAK,MACL,EAAE,OAAO,MAAe,CAC1B;AAAA;AAAA;AAGN;AAEO,IAAM,eAAoC,IAAI;;ACzFrD,SAAS,QAAQ,CAAC,MAA2B;AAAA,EAC3C,IAAI,OAAO,SAAS,IAAI,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,gBAAgB,YAAY;AAAA,IAC9B,OAAO,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EACA,IAAI,gBAAgB,aAAa;AAAA,IAC/B,OAAO,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EACA,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,IACvB,OAAO,OAAO,KAAK,IAAI;AAAA,EACzB;AAAA,EACA,MAAM,IAAI,cAAc,iCAAiC,QAAQ;AAAA;AAAA;AAG5D,MAAM,sBAAyD;AAAA,EAC3D,OAAO;AAAA,OAEV,QAAO,CACX,WACA,UACA,SACyB;AAAA,IACzB,MAAM,SAAS,MAAM,UAAU,IAAI,UAAU,QAAQ,MAAM;AAAA,IAE3D,MAAM,OAAqB;AAAA,MACzB,KAAK,QAAQ;AAAA,MACb,UAAU,QAAQ;AAAA,MAClB,WAAW,QAAQ;AAAA,MACnB,UAAU,QAAQ;AAAA,MAClB,MAAM,OAAO,UAAU,QAAQ,OAAO,QAAQ;AAAA,MAC9C,YAAY,QAAQ,UAAU,YAAY;AAAA,MAC1C,MAAM,OAAO,UAAU;AAAA,IACzB;AAAA,IAEA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO;AAAA,MAChB;AAAA,IACF;AAAA;AAAA,OAGI,QAAO,CACX,WACA,UACA,MACA,SACe;AAAA,IACf,MAAM,SAAS,SAAS,IAAI;AAAA,IAE5B,IAAI;AAAA,MACF,MAAM,UAAU,IAAI,UAAU,QAAQ,QAAQ,MAAM;AAAA,MACpD,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,cACR,gCAAgC,cAAe,MAAgB,WAC/D,KAAK,MACL,EAAE,OAAO,MAAe,CAC1B;AAAA;AAAA;AAAA,OAIE,OAAM,CACV,WACA,UACA,UACkB;AAAA,IAClB,OAAO,UAAU,OAAO,QAAQ;AAAA;AAAA,OAG5B,OAAM,CACV,WACA,UACA,UACe;AAAA,IACf,IAAI;AAAA,MACF,MAAM,UAAU,OAAO,QAAQ;AAAA,MAC/B,OAAO,OAAO;AAAA,MACd,MAAM,IAAI,cACR,qBAAqB,cAAe,MAAgB,WACpD,KAAK,MACL,EAAE,OAAO,MAAe,CAC1B;AAAA;AAAA;AAGN;AAEO,IAAM,iBAAwC,IAAI;;AC/ElD,MAAM,IAA+B;AAAA,EACzB;AAAA,EACA;AAAA,EAEjB,WAAW,CAAC,SAAoB,CAAC,GAAG;AAAA,IAClC,KAAK,aAAa,IAAI;AAAA,IACtB,KAAK,YAAY,IAAI;AAAA,IAGrB,MAAM,oBAAoB,CAAC,eAAe,eAAe,cAAc;AAAA,IACvE,MAAM,mBAAmB,CAAC,cAAc,cAAc;AAAA,IAEtD,WAAW,WAAW,mBAAmB;AAAA,MACvC,KAAK,WAAW,IAAI,QAAQ,MAAM,OAAO;AAAA,IAC3C;AAAA,IACA,WAAW,WAAW,kBAAkB;AAAA,MACtC,KAAK,UAAU,IAAI,QAAQ,MAAM,OAAO;AAAA,IAC1C;AAAA,IAGA,IAAI,OAAO,YAAY;AAAA,MACrB,WAAW,WAAW,OAAO,YAAY;AAAA,QACvC,KAAK,WAAW,IAAI,QAAQ,MAAM,OAAO;AAAA,MAC3C;AAAA,IACF;AAAA,IAEA,IAAI,OAAO,WAAW;AAAA,MACpB,WAAW,WAAW,OAAO,WAAW;AAAA,QACtC,KAAK,UAAU,IAAI,QAAQ,MAAM,OAAO;AAAA,MAC1C;AAAA,IACF;AAAA;AAAA,EAMF,iBAAiB,CAAC,SAAiC;AAAA,IACjD,KAAK,WAAW,IAAI,QAAQ,MAAM,OAAO;AAAA;AAAA,EAM3C,gBAAgB,CAAC,SAAgC;AAAA,IAC/C,KAAK,UAAU,IAAI,QAAQ,MAAM,OAAO;AAAA;AAAA,EAM1C,mBAAmB,CAAC,MAAgC;AAAA,IAClD,MAAM,UAAU,KAAK,WAAW,IAAI,IAAI;AAAA,IACxC,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,eAAe,+BAA+B,QAAQ,IAAI;AAAA,IACtE;AAAA,IACA,OAAO;AAAA;AAAA,EAMT,kBAAkB,CAAC,MAA+B;AAAA,IAChD,MAAM,UAAU,KAAK,UAAU,IAAI,IAAI;AAAA,IACvC,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,cAAc,8BAA8B,QAAQ,IAAI;AAAA,IACpE;AAAA,IACA,OAAO;AAAA;AAAA,EAYT,KAAK,CAAC,KAAkB;AAAA,IAEtB,IAAI,CAAC,IAAI,WAAW,MAAM,GAAG;AAAA,MAC3B,MAAM,IAAI,WAAW,2CAA2C,GAAG;AAAA,IACrE;AAAA,IAEA,MAAM,UAAU,IAAI,UAAU,CAAC;AAAA,IAG/B,MAAM,iBAAiB,QAAQ,QAAQ,KAAK;AAAA,IAC5C,IAAI,mBAAmB,IAAI;AAAA,MACzB,MAAM,IAAI,WAAW,kCAAkC,GAAG;AAAA,IAC5D;AAAA,IAEA,MAAM,WAAW,QAAQ,UAAU,GAAG,cAAc;AAAA,IACpD,MAAM,WAAW,QAAQ,UAAU,iBAAiB,CAAC;AAAA,IAGrD,MAAM,aAAa,SAAS,QAAQ,GAAG;AAAA,IACvC,IAAI,eAAe,IAAI;AAAA,MACrB,MAAM,IAAI,WAAW,mEAAmE,GAAG;AAAA,IAC7F;AAAA,IAEA,MAAM,WAAW,SAAS,UAAU,GAAG,UAAU;AAAA,IACjD,MAAM,YAAY,SAAS,UAAU,aAAa,CAAC;AAAA,IAGnD,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,IAAI,WAAW,kDAAkD,GAAG;AAAA,IAC5E;AAAA,IACA,IAAI,CAAC,WAAW;AAAA,MACd,MAAM,IAAI,WAAW,mDAAmD,GAAG;AAAA,IAC7E;AAAA,IACA,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,IAAI,WAAW,6CAA6C,GAAG;AAAA,IACvE;AAAA,IAGA,KAAK,oBAAoB,SAAS;AAAA,IAClC,KAAK,mBAAmB,QAAQ;AAAA,IAEhC,OAAO,IAAI,IAAI,UAAU,WAAW,UAAU,IAAI;AAAA;AAEtD;AAgBO,SAAS,SAAS,CAAC,QAAyB;AAAA,EACjD,OAAO,IAAI,IAAI,MAAM;AAAA;;;AChKhB,IAAM,UAAuD;",
|
|
15
|
-
"debugId": "
|
|
15
|
+
"debugId": "0ADFAF622CDEDD0E64756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@resourcexjs/arp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.1",
|
|
4
4
|
"description": "ARP (Agent Resource Protocol) - A URL protocol for AI agents to access resources",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"arp",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"url": "git+https://github.com/Deepractice/ResourceX.git",
|
|
15
15
|
"directory": "packages/arp"
|
|
16
16
|
},
|
|
17
|
-
"license": "
|
|
17
|
+
"license": "Apache-2.0",
|
|
18
18
|
"engines": {
|
|
19
19
|
"node": ">=22.0.0"
|
|
20
20
|
},
|