@rivus/agent 0.16.1 → 0.16.6

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.
@@ -1,344 +0,0 @@
1
- //#region src/adapters/cli/model/rivus-model-cli-protocol.ts
2
- const RIVUS_MODEL_CLI_USAGE = `Usage:
3
- rivus model status --json [--request <id>] [--verbose]
4
- rivus model set --model <provider/model> --expected-revision <n> --request <id> --json [--verbose]
5
- rivus model rollback --expected-revision <n> --request <id> --json [--verbose]
6
-
7
- Commands:
8
- status Read the effective and persistent model selection
9
- set Submit one authorized model change
10
- rollback Submit one authorized change to the previous model
11
-
12
- All command results are JSON. A successful set or rollback call means the request
13
- was accepted; query status by request id for the final outcome.
14
- `;
15
- function parseRivusModelCliArguments(argv) {
16
- if (argv.includes("--help") || argv.includes("-h")) return { help: true };
17
- const operation = argv[0];
18
- if (operation !== "status" && operation !== "set" && operation !== "rollback") return { error: "model requires one of status, set, rollback" };
19
- let expectedRevision;
20
- let json = false;
21
- let model;
22
- let requestId;
23
- let verbose = false;
24
- for (let index = 1; index < argv.length; index += 1) {
25
- const argument = argv[index];
26
- if (argument === "--json") {
27
- if (json) return { error: "--json may only be provided once" };
28
- json = true;
29
- continue;
30
- }
31
- if (argument === "--verbose") {
32
- if (verbose) return { error: "--verbose may only be provided once" };
33
- verbose = true;
34
- continue;
35
- }
36
- if (argument === "--request") {
37
- if (requestId !== void 0) return { error: "--request may only be provided once" };
38
- const value = argv[index + 1];
39
- if (!value || value.startsWith("-")) return { error: "--request requires an id" };
40
- requestId = value;
41
- index += 1;
42
- continue;
43
- }
44
- if (argument.startsWith("--request=")) {
45
- if (requestId !== void 0) return { error: "--request may only be provided once" };
46
- requestId = argument.slice(10);
47
- if (!requestId) return { error: "--request requires an id" };
48
- continue;
49
- }
50
- if (argument === "--expected-revision") {
51
- if (expectedRevision !== void 0) return { error: "--expected-revision may only be provided once" };
52
- const value = argv[index + 1];
53
- if (!value || value.startsWith("-")) return { error: "--expected-revision requires a non-negative integer" };
54
- const parsed = parseRevision(value);
55
- if (parsed === void 0) return { error: "--expected-revision requires a non-negative integer" };
56
- expectedRevision = parsed;
57
- index += 1;
58
- continue;
59
- }
60
- if (argument.startsWith("--expected-revision=")) {
61
- if (expectedRevision !== void 0) return { error: "--expected-revision may only be provided once" };
62
- const parsed = parseRevision(argument.slice(20));
63
- if (parsed === void 0) return { error: "--expected-revision requires a non-negative integer" };
64
- expectedRevision = parsed;
65
- continue;
66
- }
67
- if (argument === "--model") {
68
- if (model !== void 0) return { error: "--model may only be provided once" };
69
- const value = argv[index + 1];
70
- if (!value || value.startsWith("-")) return { error: "--model requires provider/model" };
71
- if (!isModelReference(value)) return { error: "--model must be provider/model" };
72
- model = value;
73
- index += 1;
74
- continue;
75
- }
76
- if (argument.startsWith("--model=")) {
77
- if (model !== void 0) return { error: "--model may only be provided once" };
78
- const value = argument.slice(8);
79
- if (!isModelReference(value)) return { error: "--model must be provider/model" };
80
- model = value;
81
- continue;
82
- }
83
- return { error: `Unknown model option: ${argument}` };
84
- }
85
- if (!json) return { error: "model commands require --json" };
86
- if (operation === "status") {
87
- if (model !== void 0) return { error: "status does not accept --model" };
88
- if (expectedRevision !== void 0) return { error: "status does not accept --expected-revision" };
89
- return {
90
- json: true,
91
- operation,
92
- ...requestId !== void 0 ? { requestId } : {},
93
- ...verbose ? { verbose: true } : {}
94
- };
95
- }
96
- if (requestId === void 0) return { error: "--request is required for model changes" };
97
- if (expectedRevision === void 0) return { error: "--expected-revision is required for model changes" };
98
- if (operation === "set" && model === void 0) return { error: "--model is required for model set" };
99
- if (operation === "rollback" && model !== void 0) return { error: "rollback does not accept --model" };
100
- return operation === "set" ? {
101
- expectedRevision,
102
- json: true,
103
- model,
104
- operation,
105
- requestId,
106
- ...verbose ? { verbose: true } : {}
107
- } : {
108
- expectedRevision,
109
- json: true,
110
- operation,
111
- requestId,
112
- ...verbose ? { verbose: true } : {}
113
- };
114
- }
115
- function renderRivusModelCliHelp() {
116
- return RIVUS_MODEL_CLI_USAGE;
117
- }
118
- function renderRivusModelCliArgumentError(error) {
119
- return `${error}\n\n${RIVUS_MODEL_CLI_USAGE}`;
120
- }
121
- function isModelReference(value) {
122
- return /^[^/\s]+\/[^/\s]+$/.test(value);
123
- }
124
- function parseRevision(value) {
125
- if (!/^\d+$/.test(value)) return void 0;
126
- const revision = Number(value);
127
- return Number.isSafeInteger(revision) ? revision : void 0;
128
- }
129
- //#endregion
130
- //#region src/adapters/cli/model/rivus-model-management-wire.ts
131
- function createRivusModelManagementWireRequest(command, env) {
132
- const context = optionalString(env.RIVUS_MODEL_CONTEXT);
133
- return {
134
- ...command,
135
- ...context ? { context } : {}
136
- };
137
- }
138
- function parseRivusModelManagementWireRequest(value) {
139
- if (!isRecord(value)) throw new Error("model request must be a JSON object");
140
- const operation = value.operation;
141
- if (operation !== "status" && operation !== "set" && operation !== "rollback") throw new Error("model request operation is invalid");
142
- const context = optionalString(value.context);
143
- const requestId = optionalString(value.requestId);
144
- const verbose = value.verbose === true ? true : void 0;
145
- if (operation === "status") {
146
- if (value.json !== true) throw new Error("model request must require JSON output");
147
- return {
148
- json: true,
149
- operation,
150
- ...context ? { context } : {},
151
- ...requestId ? { requestId } : {},
152
- ...verbose ? { verbose: true } : {}
153
- };
154
- }
155
- const expectedRevision = value.expectedRevision;
156
- if (value.json !== true || typeof expectedRevision !== "number" || !Number.isSafeInteger(expectedRevision) || expectedRevision < 0) throw new Error("model request has an invalid expected revision or output mode");
157
- if (!requestId) throw new Error("model request requires a request id");
158
- if (operation === "set") {
159
- const model = optionalString(value.model);
160
- if (!model || !/^[^/\s]+\/[^/\s]+$/.test(model)) throw new Error("model request target is invalid");
161
- return {
162
- expectedRevision,
163
- json: true,
164
- model,
165
- operation,
166
- requestId,
167
- ...context ? { context } : {},
168
- ...verbose ? { verbose: true } : {}
169
- };
170
- }
171
- return {
172
- expectedRevision,
173
- json: true,
174
- operation,
175
- requestId,
176
- ...context ? { context } : {},
177
- ...verbose ? { verbose: true } : {}
178
- };
179
- }
180
- function toRivusModelManagementSubmission(request) {
181
- const target = request.operation === "set" ? parseTarget(request.model) : void 0;
182
- return {
183
- expectedRevision: request.expectedRevision,
184
- operation: request.operation,
185
- requestId: request.requestId,
186
- ...target ? { target } : {},
187
- ...request.verbose ? { verbose: true } : {}
188
- };
189
- }
190
- function projectRivusModelCliResponse(value, operation) {
191
- if (!isRecord(value)) throw new Error("model handler must return a JSON object");
192
- const response = { schemaVersion: 1 };
193
- copyScalar(response, value, "requestId");
194
- copyScalar(response, value, "revision");
195
- copyScalar(response, value, "source");
196
- copyScalar(response, value, "protocolVersion");
197
- copyScalar(response, value, "runtimeVersion");
198
- copyScalar(response, value, "operation");
199
- copyScalar(response, value, "expectedRevision");
200
- copyScalar(response, value, "phase");
201
- copyScalar(response, value, "reason");
202
- for (const key of [
203
- "actual",
204
- "current",
205
- "persisted",
206
- "previous",
207
- "target"
208
- ]) {
209
- const model = projectModelReference(value[key]);
210
- if (model) response[key] = model;
211
- }
212
- const budget = projectBudget(value.budget);
213
- if (budget) response.budget = budget;
214
- const pending = projectPending(value.pending);
215
- if (pending) response.pending = pending;
216
- const request = projectReceipt(value.request);
217
- if (request) response.request = request;
218
- const error = projectError(value.error);
219
- if (error) response.error = error;
220
- const recoveryRequired = projectError(value.recoveryRequired);
221
- if (recoveryRequired) response.recoveryRequired = recoveryRequired;
222
- const notification = projectNotification(value.notification);
223
- if (notification) response.notification = notification;
224
- const status = value.status;
225
- response.status = isPublicStatus(status) ? status : value.recoveryRequired !== void 0 ? "recovery-required" : operation === "status" && value.pending !== void 0 ? "pending" : operation === "status" ? "applied" : "failed";
226
- return response;
227
- }
228
- function createRivusModelManagementFailure(code, message) {
229
- return {
230
- error: {
231
- code,
232
- message
233
- },
234
- schemaVersion: 1,
235
- status: "failed"
236
- };
237
- }
238
- function projectModelReference(value) {
239
- if (!isRecord(value) || typeof value.provider !== "string" || typeof value.model !== "string") return void 0;
240
- const result = {
241
- model: value.model,
242
- provider: value.provider
243
- };
244
- if (typeof value.label === "string") return {
245
- ...result,
246
- label: value.label
247
- };
248
- if (typeof value.bindingRevision === "string") return {
249
- ...result,
250
- bindingRevision: value.bindingRevision
251
- };
252
- return result;
253
- }
254
- function projectPending(value) {
255
- if (!isRecord(value)) return void 0;
256
- const result = {};
257
- copyScalar(result, value, "phase");
258
- copyScalar(result, value, "reason");
259
- if (result.reason === void 0 && typeof result.phase === "string") result.reason = result.phase;
260
- copyScalar(result, value, "requestId");
261
- copyScalar(result, value, "updatedAt");
262
- const request = projectReceipt(value.request);
263
- if (request) result.request = request;
264
- const target = projectModelReference(value.target);
265
- if (target) result.target = target;
266
- return Object.keys(result).length > 0 ? result : void 0;
267
- }
268
- function projectReceipt(value) {
269
- if (!isRecord(value)) return void 0;
270
- const result = {};
271
- for (const key of [
272
- "requestId",
273
- "revision",
274
- "status",
275
- "phase",
276
- "operation",
277
- "expectedRevision",
278
- "acceptedAt",
279
- "updatedAt"
280
- ]) copyScalar(result, value, key);
281
- const current = projectModelReference(value.current);
282
- if (current) result.current = current;
283
- const previous = projectModelReference(value.previous);
284
- if (previous) result.previous = previous;
285
- const target = projectModelReference(value.target);
286
- if (target) result.target = target;
287
- const budget = projectBudget(value.budget);
288
- if (budget) result.budget = budget;
289
- const error = projectError(value.error);
290
- if (error) result.error = error;
291
- const notification = projectNotification(value.notification);
292
- if (notification) result.notification = notification;
293
- return Object.keys(result).length > 0 ? result : void 0;
294
- }
295
- function projectBudget(value) {
296
- if (!isRecord(value)) return void 0;
297
- const result = {};
298
- for (const key of [
299
- "deadlineAt",
300
- "maxOutputTokens",
301
- "maxPaidRequests",
302
- "outputTokens",
303
- "paidRequests"
304
- ]) copyScalar(result, value, key);
305
- return Object.keys(result).length > 0 ? result : void 0;
306
- }
307
- function projectError(value) {
308
- if (!isRecord(value) || typeof value.code !== "string" || typeof value.message !== "string") return void 0;
309
- return {
310
- code: value.code,
311
- message: value.message
312
- };
313
- }
314
- function projectNotification(value) {
315
- if (!isRecord(value)) return void 0;
316
- const result = {};
317
- copyScalar(result, value, "attempts");
318
- copyScalar(result, value, "lastAttemptAt");
319
- copyScalar(result, value, "status");
320
- return Object.keys(result).length > 0 ? result : void 0;
321
- }
322
- function copyScalar(target, source, key) {
323
- const value = source[key];
324
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") target[key] = value;
325
- }
326
- function parseTarget(value) {
327
- if (!value) throw new Error("model request target is missing");
328
- const separator = value.indexOf("/");
329
- return {
330
- model: value.slice(separator + 1),
331
- provider: value.slice(0, separator)
332
- };
333
- }
334
- function isPublicStatus(value) {
335
- return value === "applied" || value === "failed" || value === "pending" || value === "recovery-required" || value === "restored";
336
- }
337
- function optionalString(value) {
338
- return typeof value === "string" && value.trim() ? value.trim() : void 0;
339
- }
340
- function isRecord(value) {
341
- return typeof value === "object" && value !== null && !Array.isArray(value);
342
- }
343
- //#endregion
344
- export { toRivusModelManagementSubmission as a, renderRivusModelCliHelp as c, projectRivusModelCliResponse as i, createRivusModelManagementWireRequest as n, parseRivusModelCliArguments as o, parseRivusModelManagementWireRequest as r, renderRivusModelCliArgumentError as s, createRivusModelManagementFailure as t };
@@ -1,95 +0,0 @@
1
- //#region src/core/application/agent-catalog/contracts/rivus-tool.d.ts
2
- type RivusMemoryScope = "conversation" | "agent-private" | "project" | "shared-user-profile";
3
- type RivusToolRisk = "observe" | "mutate" | "irreversible" | "host-control";
4
- type RivusToolIdempotency = "none" | "supported" | "required";
5
- declare class RivusToolInputRejected extends Error {
6
- readonly name: string;
7
- }
8
- interface RivusToolExecutor {
9
- execute(input: unknown, context: RivusToolExecutionContext): unknown;
10
- }
11
- interface RivusToolExecutionOrigin {
12
- readonly endpointId: string;
13
- readonly tenantKey: string;
14
- readonly conversationId?: string;
15
- readonly allowedActorOpenIds: ReadonlyArray<string>;
16
- }
17
- interface RivusToolExecutionContext {
18
- readonly agentId: string;
19
- readonly instanceId: string;
20
- readonly memory?: RivusMemoryAuthority;
21
- readonly runId: string;
22
- readonly callId: string;
23
- readonly operationId?: string;
24
- readonly policyEpoch: number;
25
- readonly toolId: string;
26
- readonly toolVersion: string;
27
- readonly sessionKey: string;
28
- readonly origin?: RivusToolExecutionOrigin;
29
- readonly sourceMessageId?: string;
30
- }
31
- interface RivusMemoryAuthority {
32
- readonly audience: "group" | "private";
33
- readonly conversationId?: string;
34
- readonly projectId?: string;
35
- readonly scopes: ReadonlyArray<RivusMemoryScope>;
36
- readonly subjectId: string;
37
- readonly tenantId: string;
38
- }
39
- interface RivusToolFactoryContext {
40
- readonly toolId: string;
41
- readonly toolVersion: string;
42
- }
43
- interface RivusToolDescriptor {
44
- readonly id: string;
45
- readonly version: string;
46
- readonly digest: string;
47
- readonly description: string;
48
- readonly inputSchema: unknown;
49
- readonly risk: RivusToolRisk;
50
- readonly idempotency: RivusToolIdempotency;
51
- readonly createExecutor: (context: RivusToolFactoryContext) => RivusToolExecutor;
52
- }
53
- interface RivusHostToolDescriptor extends RivusToolDescriptor {
54
- readonly replayCompleted?: (input: unknown, completedResult: unknown, context: RivusToolExecutionContext) => unknown;
55
- }
56
- interface RegisteredRivusTool extends RivusToolDescriptor {
57
- readonly pluginId: string;
58
- }
59
- interface RivusResolvedToolDescriptor {
60
- readonly id: string;
61
- readonly version: string;
62
- readonly digest: string;
63
- readonly description: string;
64
- readonly inputSchema: unknown;
65
- readonly risk: RivusToolRisk;
66
- readonly idempotency: RivusToolIdempotency;
67
- readonly pluginId: string;
68
- }
69
- interface RivusToolGrantSet {
70
- readonly toolIds: ReadonlyArray<string>;
71
- readonly revision: string;
72
- }
73
- //#endregion
74
- //#region src/core/application/agent-catalog/contracts/rivus-runtime-tool.d.ts
75
- declare const RIVUS_RUNTIME_TOOL_IDS: readonly ["read", "bash", "edit", "write", "grep", "find", "ls"];
76
- type RivusRuntimeToolId = (typeof RIVUS_RUNTIME_TOOL_IDS)[number];
77
- declare function isRivusRuntimeToolId(value: string): value is RivusRuntimeToolId;
78
- //#endregion
79
- //#region src/core/application/agent-catalog/contracts/rivus-skill.d.ts
80
- interface RivusSkillDescriptor {
81
- readonly id: string;
82
- readonly version: string;
83
- readonly digest: string;
84
- readonly title: string;
85
- readonly content: string;
86
- }
87
- interface RegisteredRivusSkill extends RivusSkillDescriptor {
88
- readonly pluginId: string;
89
- }
90
- interface RivusSkillGrantSet {
91
- readonly skillIds: ReadonlyArray<string>;
92
- readonly revision: string;
93
- }
94
- //#endregion
95
- export { RivusToolIdempotency as _, RivusRuntimeToolId as a, RivusHostToolDescriptor as c, RivusResolvedToolDescriptor as d, RivusToolDescriptor as f, RivusToolGrantSet as g, RivusToolFactoryContext as h, RIVUS_RUNTIME_TOOL_IDS as i, RivusMemoryAuthority as l, RivusToolExecutor as m, RivusSkillDescriptor as n, isRivusRuntimeToolId as o, RivusToolExecutionContext as p, RivusSkillGrantSet as r, RegisteredRivusTool as s, RegisteredRivusSkill as t, RivusMemoryScope as u, RivusToolInputRejected as v, RivusToolRisk as y };
@@ -1,158 +0,0 @@
1
- import { Unsafe } from "typebox";
2
- //#region src/core/application/tool-execution/authority/invocation-authority-registry.ts
3
- const authorities = /* @__PURE__ */ new WeakMap();
4
- let localAuthoritySequence = 0;
5
- var InvalidInvocationAuthority = class extends Error {
6
- name = "InvalidInvocationAuthority";
7
- };
8
- function createInvocationAuthority(authority, identity = { next: () => String(++localAuthoritySequence) }) {
9
- const reference = Object.freeze({ id: `authority:${identity.next()}` });
10
- authorities.set(reference, normalizeInvocationAuthority(authority));
11
- return reference;
12
- }
13
- function resolveInvocationAuthority(reference) {
14
- const authority = authorities.get(reference);
15
- if (!authority) throw new InvalidInvocationAuthority("invocation authority was not issued by this host");
16
- return authority;
17
- }
18
- function normalizeInvocationAuthority(authority) {
19
- if (!isRecord(authority) || typeof authority.sourceMessageId !== "string" || !authority.sourceMessageId.trim()) throw new InvalidInvocationAuthority("invocation authority requires a trusted source message id");
20
- if (authority.endpointId !== void 0 && (!authority.endpointId || !authority.endpointId.trim())) throw new InvalidInvocationAuthority("invocation authority requires a trusted endpoint id");
21
- return Object.freeze({
22
- ...authority,
23
- ...authority.allowedActorOpenIds === void 0 ? {} : { allowedActorOpenIds: Object.freeze([...authority.allowedActorOpenIds]) },
24
- ...authority.memory === void 0 ? {} : { memory: freezeMemoryAuthority(authority.memory) },
25
- toolGrantSet: freezeGrantSet(authority.toolGrantSet)
26
- });
27
- }
28
- function freezeMemoryAuthority(value) {
29
- const scopes = value.audience === "group" ? value.scopes.filter(isGroupMemoryScope) : [...value.scopes];
30
- return Object.freeze({
31
- ...value,
32
- scopes: Object.freeze(scopes)
33
- });
34
- }
35
- function freezeGrantSet(value) {
36
- return Object.freeze({
37
- revision: value.revision,
38
- toolIds: Object.freeze([...value.toolIds])
39
- });
40
- }
41
- function isGroupMemoryScope(value) {
42
- return value === "conversation" || value === "project";
43
- }
44
- function isRecord(value) {
45
- return value !== null && typeof value === "object" && !Array.isArray(value);
46
- }
47
- //#endregion
48
- //#region src/core/application/tool-execution/brokerage/tool-input-digest.ts
49
- var InvalidStableJson = class extends Error {
50
- name = "InvalidStableJson";
51
- };
52
- var InvalidToolInput = class extends InvalidStableJson {
53
- name = "InvalidToolInput";
54
- };
55
- function createToolInputDigest(input, digest) {
56
- try {
57
- return digest(serializeStableJson(input, /* @__PURE__ */ new Set()));
58
- } catch (error) {
59
- if (error instanceof InvalidStableJson) throw new InvalidToolInput(error.message);
60
- throw error;
61
- }
62
- }
63
- function normalizeStableJson(value) {
64
- return JSON.parse(serializeStableJson(value, /* @__PURE__ */ new Set()));
65
- }
66
- function serializeStableJson(value, ancestors) {
67
- if (value === null) return "null";
68
- if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
69
- if (typeof value === "number") {
70
- if (!Number.isFinite(value)) throw new InvalidStableJson("stable JSON numbers must be finite");
71
- return JSON.stringify(value);
72
- }
73
- if (typeof value !== "object" || value === null) throw new InvalidStableJson("value must contain only stable JSON values");
74
- if (ancestors.has(value)) throw new InvalidStableJson("stable JSON must not contain cycles");
75
- ancestors.add(value);
76
- try {
77
- if (Array.isArray(value)) {
78
- const output = [];
79
- for (let index = 0; index < value.length; index += 1) {
80
- if (!Object.hasOwn(value, index)) throw new InvalidStableJson("stable JSON arrays must not contain holes");
81
- output.push(serializeStableJson(value[index], ancestors));
82
- }
83
- return `[${output.join(",")}]`;
84
- }
85
- if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) throw new InvalidStableJson("stable JSON objects must be plain objects");
86
- return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${serializeStableJson(value[key], ancestors)}`).join(",")}}`;
87
- } finally {
88
- ancestors.delete(value);
89
- }
90
- }
91
- //#endregion
92
- //#region src/core/application/tool-execution/authority/tool-risk-policy.ts
93
- function requiresToolApproval(risk) {
94
- return risk === "irreversible" || risk === "host-control";
95
- }
96
- //#endregion
97
- //#region src/adapters/pi/skills/pi-skill-tool.ts
98
- const PI_SKILL_READER_TOOL_NAME = "rivus_read_skill";
99
- function createPiSkillRuntime(skills) {
100
- if (skills.length === 0) return Object.freeze({ prompt: "" });
101
- const skillsById = new Map(skills.map((skill) => [skill.id, skill]));
102
- const prompt = [
103
- "Granted Skills are versioned instructions loaded on demand.",
104
- `Before following a Skill, call ${PI_SKILL_READER_TOOL_NAME} with its exact ID and follow the returned content.`,
105
- "Granted Skill catalog:",
106
- ...skills.map((skill) => `- ${skill.id} | ${skill.title} | v${skill.version} | ${skill.digest}`)
107
- ].join("\n");
108
- const tool = {
109
- description: "Read the full versioned instructions for one Skill granted to this Agent Runtime.",
110
- execute: async (_callId, input) => {
111
- const skillId = readSkillId(input);
112
- const skill = skillsById.get(skillId);
113
- if (!skill) throw new Error(`Skill is not granted: ${skillId}`);
114
- const details = {
115
- contentLength: skill.content.length,
116
- digest: skill.digest,
117
- skillId: skill.id,
118
- title: skill.title,
119
- version: skill.version
120
- };
121
- return {
122
- content: [{
123
- text: skill.content,
124
- type: "text"
125
- }],
126
- details
127
- };
128
- },
129
- executionMode: "sequential",
130
- label: "Read granted Skill",
131
- name: PI_SKILL_READER_TOOL_NAME,
132
- parameters: Unsafe({
133
- additionalProperties: false,
134
- properties: { skillId: {
135
- description: "Exact Skill ID from the granted Skill catalog.",
136
- type: "string"
137
- } },
138
- required: ["skillId"],
139
- type: "object"
140
- }),
141
- promptSnippet: `${PI_SKILL_READER_TOOL_NAME}: read one granted Skill by exact ID`
142
- };
143
- return Object.freeze({
144
- prompt,
145
- tool
146
- });
147
- }
148
- function readSkillId(input) {
149
- if (input === null || typeof input !== "object" || Array.isArray(input) || typeof input.skillId !== "string") throw new Error("Skill reader input requires a string skillId");
150
- return input.skillId;
151
- }
152
- //#endregion
153
- //#region src/core/application/agent-catalog/contracts/rivus-tool.ts
154
- var RivusToolInputRejected = class extends Error {
155
- name = "RivusToolInputRejected";
156
- };
157
- //#endregion
158
- export { InvalidStableJson as a, normalizeStableJson as c, resolveInvocationAuthority as d, requiresToolApproval as i, InvalidInvocationAuthority as l, PI_SKILL_READER_TOOL_NAME as n, InvalidToolInput as o, createPiSkillRuntime as r, createToolInputDigest as s, RivusToolInputRejected as t, createInvocationAuthority as u };
@@ -1,7 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- //#region src/platform/identity/sha256-digest.ts
3
- function createSha256Digest(value) {
4
- return `sha256:${createHash("sha256").update(value).digest("hex")}`;
5
- }
6
- //#endregion
7
- export { createSha256Digest as t };