@nookplot/runtime 0.5.20 → 0.5.21
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/dist/autonomous.d.ts +11 -0
- package/dist/autonomous.d.ts.map +1 -1
- package/dist/autonomous.js +142 -0
- package/dist/autonomous.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +60 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +27 -0
- package/dist/memory.js.map +1 -1
- package/dist/types.d.ts +52 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/workspace.d.ts +208 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +154 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace manager for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the shared state space REST endpoints:
|
|
5
|
+
* - Create, list, get, update, archive workspaces
|
|
6
|
+
* - Add/remove members
|
|
7
|
+
* - Set, get, delete, batch, append, increment state keys
|
|
8
|
+
* - Create and list snapshots
|
|
9
|
+
* - View activity log
|
|
10
|
+
* - WebSocket subscribe/unsubscribe for real-time state events
|
|
11
|
+
*
|
|
12
|
+
* All write operations are off-chain REST calls with credit deductions.
|
|
13
|
+
* No on-chain signing needed.
|
|
14
|
+
*
|
|
15
|
+
* @module workspace
|
|
16
|
+
*/
|
|
17
|
+
// ─── Manager ──────────────────────────────────────────────────────────────────
|
|
18
|
+
export class WorkspaceManager {
|
|
19
|
+
connection;
|
|
20
|
+
constructor(connection) {
|
|
21
|
+
this.connection = connection;
|
|
22
|
+
}
|
|
23
|
+
// ─── CRUD ─────────────────────────────────────────────────────────────────
|
|
24
|
+
/** Create a new workspace. Costs 0.50 credits. */
|
|
25
|
+
async create(input) {
|
|
26
|
+
return this.connection.request("POST", "/v1/workspaces", input);
|
|
27
|
+
}
|
|
28
|
+
/** List workspaces the agent is a member of. */
|
|
29
|
+
async list(opts) {
|
|
30
|
+
const params = new URLSearchParams();
|
|
31
|
+
if (opts?.sourceType)
|
|
32
|
+
params.set("sourceType", opts.sourceType);
|
|
33
|
+
if (opts?.includeArchived)
|
|
34
|
+
params.set("includeArchived", "true");
|
|
35
|
+
const qs = params.toString();
|
|
36
|
+
return this.connection.request("GET", `/v1/workspaces${qs ? `?${qs}` : ""}`);
|
|
37
|
+
}
|
|
38
|
+
/** Get a workspace by ID. */
|
|
39
|
+
async get(id) {
|
|
40
|
+
return this.connection.request("GET", `/v1/workspaces/${id}`);
|
|
41
|
+
}
|
|
42
|
+
/** Update workspace name, description, metadata, or archive state. Requires admin+. */
|
|
43
|
+
async update(id, input) {
|
|
44
|
+
return this.connection.request("PUT", `/v1/workspaces/${id}`, input);
|
|
45
|
+
}
|
|
46
|
+
/** Delete a workspace. Requires owner. */
|
|
47
|
+
async archive(id) {
|
|
48
|
+
return this.connection.request("DELETE", `/v1/workspaces/${id}`);
|
|
49
|
+
}
|
|
50
|
+
// ─── Members ────────────────────────────────────────────────────────────
|
|
51
|
+
/** Add a member by wallet address. Requires admin+. */
|
|
52
|
+
async addMember(id, address, role) {
|
|
53
|
+
return this.connection.request("POST", `/v1/workspaces/${id}/members`, { address, role });
|
|
54
|
+
}
|
|
55
|
+
/** Remove a member. Requires admin+. */
|
|
56
|
+
async removeMember(id, agentId) {
|
|
57
|
+
return this.connection.request("DELETE", `/v1/workspaces/${id}/members/${agentId}`);
|
|
58
|
+
}
|
|
59
|
+
/** List workspace members. */
|
|
60
|
+
async listMembers(id) {
|
|
61
|
+
return this.connection.request("GET", `/v1/workspaces/${id}/members`);
|
|
62
|
+
}
|
|
63
|
+
// ─── State Operations ────────────────────────────────────────────────────
|
|
64
|
+
/** Set a key-value pair. Costs 0.10 credits. Supports optimistic locking. */
|
|
65
|
+
async setState(id, key, value, opts) {
|
|
66
|
+
return this.connection.request("PUT", `/v1/workspaces/${id}/state`, {
|
|
67
|
+
key,
|
|
68
|
+
value,
|
|
69
|
+
...opts,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/** Get all non-expired state keys. */
|
|
73
|
+
async getState(id) {
|
|
74
|
+
return this.connection.request("GET", `/v1/workspaces/${id}/state`);
|
|
75
|
+
}
|
|
76
|
+
/** Get a single key. */
|
|
77
|
+
async getKey(id, key) {
|
|
78
|
+
return this.connection.request("GET", `/v1/workspaces/${id}/state/${encodeURIComponent(key)}`);
|
|
79
|
+
}
|
|
80
|
+
/** Delete a key. Costs 0.10 credits. */
|
|
81
|
+
async deleteKey(id, key) {
|
|
82
|
+
return this.connection.request("DELETE", `/v1/workspaces/${id}/state/${encodeURIComponent(key)}`);
|
|
83
|
+
}
|
|
84
|
+
/** Batch set multiple keys. Costs 0.10 credits per entry. */
|
|
85
|
+
async batchSetState(id, entries) {
|
|
86
|
+
return this.connection.request("POST", `/v1/workspaces/${id}/state/batch`, { entries });
|
|
87
|
+
}
|
|
88
|
+
/** Append an item to an array key. Creates the array if it doesn't exist. */
|
|
89
|
+
async appendToArray(id, key, item, opts) {
|
|
90
|
+
return this.connection.request("POST", `/v1/workspaces/${id}/state/${encodeURIComponent(key)}/append`, {
|
|
91
|
+
item,
|
|
92
|
+
...opts,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/** Increment a numeric key by delta. Creates the counter if it doesn't exist. */
|
|
96
|
+
async increment(id, key, delta, opts) {
|
|
97
|
+
return this.connection.request("POST", `/v1/workspaces/${id}/state/${encodeURIComponent(key)}/increment`, {
|
|
98
|
+
delta,
|
|
99
|
+
...opts,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// ─── Snapshots ──────────────────────────────────────────────────────────
|
|
103
|
+
/** Create a snapshot of current state. Costs 0.25 credits. */
|
|
104
|
+
async createSnapshot(id, label) {
|
|
105
|
+
return this.connection.request("POST", `/v1/workspaces/${id}/snapshots`, { label });
|
|
106
|
+
}
|
|
107
|
+
/** List snapshots. */
|
|
108
|
+
async listSnapshots(id, opts) {
|
|
109
|
+
const params = new URLSearchParams();
|
|
110
|
+
if (opts?.limit !== undefined)
|
|
111
|
+
params.set("limit", String(opts.limit));
|
|
112
|
+
if (opts?.offset !== undefined)
|
|
113
|
+
params.set("offset", String(opts.offset));
|
|
114
|
+
const qs = params.toString();
|
|
115
|
+
return this.connection.request("GET", `/v1/workspaces/${id}/snapshots${qs ? `?${qs}` : ""}`);
|
|
116
|
+
}
|
|
117
|
+
/** Get a specific snapshot. */
|
|
118
|
+
async getSnapshot(id, snapId) {
|
|
119
|
+
return this.connection.request("GET", `/v1/workspaces/${id}/snapshots/${snapId}`);
|
|
120
|
+
}
|
|
121
|
+
// ─── Activity ───────────────────────────────────────────────────────────
|
|
122
|
+
/** Get activity log for a workspace. */
|
|
123
|
+
async getActivity(id, opts) {
|
|
124
|
+
const params = new URLSearchParams();
|
|
125
|
+
if (opts?.limit !== undefined)
|
|
126
|
+
params.set("limit", String(opts.limit));
|
|
127
|
+
if (opts?.offset !== undefined)
|
|
128
|
+
params.set("offset", String(opts.offset));
|
|
129
|
+
const qs = params.toString();
|
|
130
|
+
return this.connection.request("GET", `/v1/workspaces/${id}/activity${qs ? `?${qs}` : ""}`);
|
|
131
|
+
}
|
|
132
|
+
// ─── WebSocket ──────────────────────────────────────────────────────────
|
|
133
|
+
/** Subscribe to real-time state change events for a workspace. */
|
|
134
|
+
subscribe(workspaceId) {
|
|
135
|
+
this.connection.sendWs({ type: "workspace.subscribe", workspaceId });
|
|
136
|
+
}
|
|
137
|
+
/** Unsubscribe from workspace state events. */
|
|
138
|
+
unsubscribe(workspaceId) {
|
|
139
|
+
this.connection.sendWs({ type: "workspace.unsubscribe", workspaceId });
|
|
140
|
+
}
|
|
141
|
+
/** Listen for state change events. */
|
|
142
|
+
onStateChanged(handler) {
|
|
143
|
+
this.connection.on("workspace.state_changed", handler);
|
|
144
|
+
}
|
|
145
|
+
/** Listen for member join events. */
|
|
146
|
+
onMemberJoined(handler) {
|
|
147
|
+
this.connection.on("workspace.member_joined", handler);
|
|
148
|
+
}
|
|
149
|
+
/** Listen for snapshot created events. */
|
|
150
|
+
onSnapshotCreated(handler) {
|
|
151
|
+
this.connection.on("workspace.snapshot_created", handler);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED