@cotal-ai/core 0.86.0 → 0.87.0
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/browser-control.d.ts +53 -1
- package/dist/browser-control.d.ts.map +1 -1
- package/dist/browser-control.js +102 -1
- package/dist/browser-control.js.map +1 -1
- package/dist/channels.d.ts +4 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +6 -2
- package/dist/channels.js.map +1 -1
- package/dist/endpoint-action.d.ts +2 -2
- package/dist/endpoint-action.d.ts.map +1 -1
- package/dist/endpoint-action.js +4 -28
- package/dist/endpoint-action.js.map +1 -1
- package/dist/endpoint-goal-follow.d.ts +37 -0
- package/dist/endpoint-goal-follow.d.ts.map +1 -0
- package/dist/endpoint-goal-follow.js +328 -0
- package/dist/endpoint-goal-follow.js.map +1 -0
- package/dist/endpoint-grants.d.ts +0 -4
- package/dist/endpoint-grants.d.ts.map +1 -1
- package/dist/endpoint-grants.js +1 -7
- package/dist/endpoint-grants.js.map +1 -1
- package/dist/endpoint-invoke.d.ts +4 -27
- package/dist/endpoint-invoke.d.ts.map +1 -1
- package/dist/endpoint-invoke.js +6 -307
- package/dist/endpoint-invoke.js.map +1 -1
- package/dist/endpoint-signing.d.ts +1 -1
- package/dist/endpoint-signing.d.ts.map +1 -1
- package/dist/endpoint-signing.js +1 -1
- package/dist/endpoint-signing.js.map +1 -1
- package/dist/endpoint-subjects.d.ts +4 -0
- package/dist/endpoint-subjects.d.ts.map +1 -1
- package/dist/endpoint-subjects.js +6 -0
- package/dist/endpoint-subjects.js.map +1 -1
- package/dist/endpoint.d.ts +78 -13
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +247 -43
- package/dist/endpoint.js.map +1 -1
- package/dist/goal-result-fact.d.ts +13 -0
- package/dist/goal-result-fact.d.ts.map +1 -0
- package/dist/goal-result-fact.js +40 -0
- package/dist/goal-result-fact.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jetstream-missing.d.ts +4 -0
- package/dist/jetstream-missing.d.ts.map +1 -1
- package/dist/jetstream-missing.js +6 -0
- package/dist/jetstream-missing.js.map +1 -1
- package/dist/kv-scan.d.ts +15 -0
- package/dist/kv-scan.d.ts.map +1 -1
- package/dist/kv-scan.js +32 -0
- package/dist/kv-scan.js.map +1 -1
- package/dist/launch-material.d.ts.map +1 -1
- package/dist/launch-material.js +6 -2
- package/dist/launch-material.js.map +1 -1
- package/dist/lease.d.ts +50 -0
- package/dist/lease.d.ts.map +1 -1
- package/dist/lease.js +71 -0
- package/dist/lease.js.map +1 -1
- package/dist/private-tool-results.d.ts +253 -0
- package/dist/private-tool-results.d.ts.map +1 -0
- package/dist/private-tool-results.js +141 -0
- package/dist/private-tool-results.js.map +1 -0
- package/dist/provision.d.ts +5 -0
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +32 -14
- package/dist/provision.js.map +1 -1
- package/dist/remote-manager-authority.d.ts +17 -0
- package/dist/remote-manager-authority.d.ts.map +1 -1
- package/dist/remote-manager-authority.js +40 -1
- package/dist/remote-manager-authority.js.map +1 -1
- package/dist/run-journal.d.ts.map +1 -1
- package/dist/run-journal.js +1 -6
- package/dist/run-journal.js.map +1 -1
- package/dist/subjects.d.ts +17 -0
- package/dist/subjects.d.ts.map +1 -1
- package/dist/subjects.js +29 -0
- package/dist/subjects.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { type AnchorResolver, type SignerAnchor } from "./endpoint-signing.js";
|
|
2
|
+
/** Declaration-only contracts for SPEC §13.19. Parsing is not signature verification,
|
|
3
|
+
* current-state authorization, issuance, registration or permission to serve. */
|
|
4
|
+
export declare const TOOL_RESULTS_ENDPOINT = "tool-results";
|
|
5
|
+
export declare const TOOL_RESULT_MAX_CONTENT_BYTES: number;
|
|
6
|
+
export declare const TOOL_RESULT_MAX_ENTRIES = 256;
|
|
7
|
+
export declare const TOOL_RESULT_MAX_RETENTION_MS: number;
|
|
8
|
+
export declare const TOOL_RESULT_CONSENT_MAX_TTL_MS: number;
|
|
9
|
+
export interface ToolResultTarget {
|
|
10
|
+
owner: string;
|
|
11
|
+
actor: string;
|
|
12
|
+
lifecycleUid: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ToolResultConsent {
|
|
15
|
+
v: 1;
|
|
16
|
+
kind: "tool-result-consent";
|
|
17
|
+
id: string;
|
|
18
|
+
space: string;
|
|
19
|
+
target: ToolResultTarget;
|
|
20
|
+
holder: {
|
|
21
|
+
owner: string;
|
|
22
|
+
actor: string;
|
|
23
|
+
};
|
|
24
|
+
/** Milliseconds since the Unix epoch, as for other §13.10 timed artifacts. */
|
|
25
|
+
iat: number;
|
|
26
|
+
exp: number;
|
|
27
|
+
issuer: {
|
|
28
|
+
keyId: string;
|
|
29
|
+
};
|
|
30
|
+
sig: string;
|
|
31
|
+
}
|
|
32
|
+
/** A create-only marker's value. Retention and monotonic writes belong to the auth store. */
|
|
33
|
+
export interface ToolResultRevocation {
|
|
34
|
+
v: 1;
|
|
35
|
+
kind: "tool-result-revocation";
|
|
36
|
+
space: string;
|
|
37
|
+
consentId: string;
|
|
38
|
+
target: ToolResultTarget;
|
|
39
|
+
revokedAt: number;
|
|
40
|
+
}
|
|
41
|
+
/** Wire coordinates, not a branded EpServeGrant. No consuming authority accepts this shape
|
|
42
|
+
* alone. The host must register and authorize the real grant before material can be installed. */
|
|
43
|
+
export interface ToolResultServingMaterial {
|
|
44
|
+
v: 1;
|
|
45
|
+
kind: "tool-result-serving-material";
|
|
46
|
+
space: string;
|
|
47
|
+
accountPublicKey: string;
|
|
48
|
+
target: ToolResultTarget;
|
|
49
|
+
grant: {
|
|
50
|
+
endpoint: "tool-results";
|
|
51
|
+
instanceId: string;
|
|
52
|
+
epoch: number;
|
|
53
|
+
registrationRevision: number;
|
|
54
|
+
};
|
|
55
|
+
credential: string;
|
|
56
|
+
snapshot: {
|
|
57
|
+
t0: number;
|
|
58
|
+
watermark: number;
|
|
59
|
+
watermarkTakenAt: number;
|
|
60
|
+
revokedConsentIds: string[];
|
|
61
|
+
};
|
|
62
|
+
/** Unix seconds; fixed from snapshot.t0, not from delivery or installation. */
|
|
63
|
+
expiresAt: number;
|
|
64
|
+
}
|
|
65
|
+
export type ToolResultAnswer = {
|
|
66
|
+
state: "available";
|
|
67
|
+
threadId: string;
|
|
68
|
+
toolCallId: string;
|
|
69
|
+
content: string;
|
|
70
|
+
truncated: boolean;
|
|
71
|
+
byteCount: number;
|
|
72
|
+
error: boolean;
|
|
73
|
+
capturedAt: number;
|
|
74
|
+
} | {
|
|
75
|
+
state: "pending";
|
|
76
|
+
threadId: string;
|
|
77
|
+
toolCallId: string;
|
|
78
|
+
} | {
|
|
79
|
+
state: "not-shared" | "missing" | "expired";
|
|
80
|
+
};
|
|
81
|
+
export type ToolResultRevocationOutcome = {
|
|
82
|
+
state: "known" | "refused" | "unknown";
|
|
83
|
+
consentId: string;
|
|
84
|
+
};
|
|
85
|
+
export declare const TOOL_RESULT_CONSENT_SCHEMA: {
|
|
86
|
+
type: string;
|
|
87
|
+
additionalProperties: boolean;
|
|
88
|
+
required: string[];
|
|
89
|
+
properties: Record<string, unknown>;
|
|
90
|
+
};
|
|
91
|
+
export declare const TOOL_RESULT_REVOCATION_SCHEMA: {
|
|
92
|
+
type: string;
|
|
93
|
+
additionalProperties: boolean;
|
|
94
|
+
required: string[];
|
|
95
|
+
properties: Record<string, unknown>;
|
|
96
|
+
};
|
|
97
|
+
export declare const TOOL_RESULT_SERVING_MATERIAL_SCHEMA: {
|
|
98
|
+
type: string;
|
|
99
|
+
additionalProperties: boolean;
|
|
100
|
+
required: string[];
|
|
101
|
+
properties: Record<string, unknown>;
|
|
102
|
+
};
|
|
103
|
+
export declare const TOOL_RESULT_INPUT_SCHEMA: {
|
|
104
|
+
type: string;
|
|
105
|
+
additionalProperties: boolean;
|
|
106
|
+
required: string[];
|
|
107
|
+
properties: Record<string, unknown>;
|
|
108
|
+
};
|
|
109
|
+
export declare const TOOL_RESULT_ANSWER_SCHEMAS: {
|
|
110
|
+
available: {
|
|
111
|
+
type: string;
|
|
112
|
+
additionalProperties: boolean;
|
|
113
|
+
required: string[];
|
|
114
|
+
properties: Record<string, unknown>;
|
|
115
|
+
};
|
|
116
|
+
pending: {
|
|
117
|
+
type: string;
|
|
118
|
+
additionalProperties: boolean;
|
|
119
|
+
required: string[];
|
|
120
|
+
properties: Record<string, unknown>;
|
|
121
|
+
};
|
|
122
|
+
"not-shared": {
|
|
123
|
+
type: string;
|
|
124
|
+
additionalProperties: boolean;
|
|
125
|
+
required: string[];
|
|
126
|
+
properties: Record<string, unknown>;
|
|
127
|
+
};
|
|
128
|
+
missing: {
|
|
129
|
+
type: string;
|
|
130
|
+
additionalProperties: boolean;
|
|
131
|
+
required: string[];
|
|
132
|
+
properties: Record<string, unknown>;
|
|
133
|
+
};
|
|
134
|
+
expired: {
|
|
135
|
+
type: string;
|
|
136
|
+
additionalProperties: boolean;
|
|
137
|
+
required: string[];
|
|
138
|
+
properties: Record<string, unknown>;
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
export declare const TOOL_RESULT_OUTPUT_SCHEMA: {
|
|
142
|
+
oneOf: {
|
|
143
|
+
type: string;
|
|
144
|
+
additionalProperties: boolean;
|
|
145
|
+
required: string[];
|
|
146
|
+
properties: Record<string, unknown>;
|
|
147
|
+
}[];
|
|
148
|
+
};
|
|
149
|
+
export declare const TOOL_RESULT_CONSENT_INPUT_SCHEMA: {
|
|
150
|
+
type: string;
|
|
151
|
+
additionalProperties: boolean;
|
|
152
|
+
required: string[];
|
|
153
|
+
properties: Record<string, unknown>;
|
|
154
|
+
};
|
|
155
|
+
export declare const TOOL_RESULT_CONSENT_OUTPUT_SCHEMA: {
|
|
156
|
+
type: string;
|
|
157
|
+
additionalProperties: boolean;
|
|
158
|
+
required: string[];
|
|
159
|
+
properties: Record<string, unknown>;
|
|
160
|
+
};
|
|
161
|
+
export declare const TOOL_RESULT_REVOKE_INPUT_SCHEMA: {
|
|
162
|
+
type: string;
|
|
163
|
+
additionalProperties: boolean;
|
|
164
|
+
required: string[];
|
|
165
|
+
properties: Record<string, unknown>;
|
|
166
|
+
};
|
|
167
|
+
export declare const TOOL_RESULT_REVOKE_ANSWER_SCHEMAS: {
|
|
168
|
+
known: {
|
|
169
|
+
type: string;
|
|
170
|
+
additionalProperties: boolean;
|
|
171
|
+
required: string[];
|
|
172
|
+
properties: Record<string, unknown>;
|
|
173
|
+
};
|
|
174
|
+
refused: {
|
|
175
|
+
type: string;
|
|
176
|
+
additionalProperties: boolean;
|
|
177
|
+
required: string[];
|
|
178
|
+
properties: Record<string, unknown>;
|
|
179
|
+
};
|
|
180
|
+
unknown: {
|
|
181
|
+
type: string;
|
|
182
|
+
additionalProperties: boolean;
|
|
183
|
+
required: string[];
|
|
184
|
+
properties: Record<string, unknown>;
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
export declare const TOOL_RESULT_REVOKE_OUTPUT_SCHEMA: {
|
|
188
|
+
oneOf: {
|
|
189
|
+
type: string;
|
|
190
|
+
additionalProperties: boolean;
|
|
191
|
+
required: string[];
|
|
192
|
+
properties: Record<string, unknown>;
|
|
193
|
+
}[];
|
|
194
|
+
};
|
|
195
|
+
/** Frozen declarations only. No service registration, handler, grant or profile is installed. */
|
|
196
|
+
export declare const TOOL_RESULTS_COMMANDS: ({
|
|
197
|
+
name: string;
|
|
198
|
+
capability: string;
|
|
199
|
+
input: {
|
|
200
|
+
type: string;
|
|
201
|
+
additionalProperties: boolean;
|
|
202
|
+
required: string[];
|
|
203
|
+
properties: Record<string, unknown>;
|
|
204
|
+
};
|
|
205
|
+
output: {
|
|
206
|
+
oneOf: {
|
|
207
|
+
type: string;
|
|
208
|
+
additionalProperties: boolean;
|
|
209
|
+
required: string[];
|
|
210
|
+
properties: Record<string, unknown>;
|
|
211
|
+
}[];
|
|
212
|
+
};
|
|
213
|
+
} | {
|
|
214
|
+
name: string;
|
|
215
|
+
capability: string;
|
|
216
|
+
input: {
|
|
217
|
+
type: string;
|
|
218
|
+
additionalProperties: boolean;
|
|
219
|
+
required: string[];
|
|
220
|
+
properties: Record<string, unknown>;
|
|
221
|
+
};
|
|
222
|
+
output: {
|
|
223
|
+
type: string;
|
|
224
|
+
additionalProperties: boolean;
|
|
225
|
+
required: string[];
|
|
226
|
+
properties: Record<string, unknown>;
|
|
227
|
+
};
|
|
228
|
+
})[];
|
|
229
|
+
export declare const TOOL_RESULTS_CLUSTER: {
|
|
230
|
+
urn: string;
|
|
231
|
+
revision: number;
|
|
232
|
+
attributes: never[];
|
|
233
|
+
events: never[];
|
|
234
|
+
commands: {
|
|
235
|
+
name: string;
|
|
236
|
+
class: string;
|
|
237
|
+
targeted: boolean;
|
|
238
|
+
modes: string[];
|
|
239
|
+
capability: string;
|
|
240
|
+
inputDigest: string;
|
|
241
|
+
outputDigest: string;
|
|
242
|
+
}[];
|
|
243
|
+
};
|
|
244
|
+
/** Parse shape and static bindings only; verify signatures and current authority separately. */
|
|
245
|
+
export declare function parseToolResultConsent(raw: unknown): ToolResultConsent;
|
|
246
|
+
export declare function parseToolResultRevocation(raw: unknown): ToolResultRevocation;
|
|
247
|
+
export declare function parseToolResultServingMaterial(raw: unknown): ToolResultServingMaterial;
|
|
248
|
+
export declare function parseToolResultAnswer(raw: unknown): ToolResultAnswer;
|
|
249
|
+
export declare function parseToolResultRevocationOutcome(raw: unknown): ToolResultRevocationOutcome;
|
|
250
|
+
/** Resolve only the accepted anchor family/scope. This does not verify a consent signature,
|
|
251
|
+
* establish human proof or authorize redemption; no signer is exposed. */
|
|
252
|
+
export declare function resolveToolResultConsentAnchor(resolve: AnchorResolver, keyId: string, at: number): Promise<SignerAnchor>;
|
|
253
|
+
//# sourceMappingURL=private-tool-results.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-tool-results.d.ts","sourceRoot":"","sources":["../src/private-tool-results.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { fromPublic } from "@nats-io/nkeys";
|
|
2
|
+
import { canonicalJson } from "./canonical.js";
|
|
3
|
+
import { EpEnvelopeError } from "./endpoint-envelope.js";
|
|
4
|
+
import { isAccountNkey } from "./identity.js";
|
|
5
|
+
import { compileContractSchema, singleDocumentClosure } from "./schema-profile.js";
|
|
6
|
+
import { resolveAnchorForUse, assertAnchorScopeCovers } from "./endpoint-signing.js";
|
|
7
|
+
/** Declaration-only contracts for SPEC §13.19. Parsing is not signature verification,
|
|
8
|
+
* current-state authorization, issuance, registration or permission to serve. */
|
|
9
|
+
export const TOOL_RESULTS_ENDPOINT = "tool-results";
|
|
10
|
+
export const TOOL_RESULT_MAX_CONTENT_BYTES = 64 * 1024;
|
|
11
|
+
export const TOOL_RESULT_MAX_ENTRIES = 256;
|
|
12
|
+
export const TOOL_RESULT_MAX_RETENTION_MS = 60 * 60 * 1000;
|
|
13
|
+
export const TOOL_RESULT_CONSENT_MAX_TTL_MS = 24 * 60 * 60 * 1000;
|
|
14
|
+
function deepFreeze(value) {
|
|
15
|
+
if (value !== null && typeof value === "object") {
|
|
16
|
+
for (const child of Object.values(value))
|
|
17
|
+
deepFreeze(child);
|
|
18
|
+
Object.freeze(value);
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
const text = { type: "string", minLength: 1 };
|
|
23
|
+
const id = { type: "string", minLength: 1, maxLength: 200, pattern: "^[A-Za-z0-9_-]+$" };
|
|
24
|
+
const actor = { type: "string", minLength: 1, pattern: "^[A-Za-z0-9_]+$" };
|
|
25
|
+
const owner = { type: "string", pattern: "^u_[a-z2-7]{26}$" };
|
|
26
|
+
const uid = { type: "string", pattern: "^[a-z0-9]{26,32}$" };
|
|
27
|
+
const space = { type: "string", minLength: 1, pattern: "^[A-Za-z0-9_-]+$" };
|
|
28
|
+
const uint = { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER };
|
|
29
|
+
const bool = { type: "boolean" };
|
|
30
|
+
const closed = (properties) => ({ type: "object", additionalProperties: false, required: Object.keys(properties), properties });
|
|
31
|
+
const target = closed({ owner, actor, lifecycleUid: uid });
|
|
32
|
+
const pair = { threadId: text, toolCallId: text };
|
|
33
|
+
const status = (state, fields = {}) => closed({ state: { const: state }, ...fields });
|
|
34
|
+
export const TOOL_RESULT_CONSENT_SCHEMA = deepFreeze(closed({
|
|
35
|
+
v: { const: 1 }, kind: { const: "tool-result-consent" }, id, space, target,
|
|
36
|
+
holder: closed({ owner, actor }), iat: uint, exp: uint,
|
|
37
|
+
issuer: closed({ keyId: id }), sig: { type: "string", pattern: "^[A-Za-z0-9_-]{86}$" },
|
|
38
|
+
}));
|
|
39
|
+
export const TOOL_RESULT_REVOCATION_SCHEMA = deepFreeze(closed({
|
|
40
|
+
v: { const: 1 }, kind: { const: "tool-result-revocation" }, space, consentId: id, target, revokedAt: uint,
|
|
41
|
+
}));
|
|
42
|
+
export const TOOL_RESULT_SERVING_MATERIAL_SCHEMA = deepFreeze(closed({
|
|
43
|
+
v: { const: 1 }, kind: { const: "tool-result-serving-material" }, space,
|
|
44
|
+
accountPublicKey: { type: "string", pattern: "^A[A-Z2-7]{55}$" }, target,
|
|
45
|
+
grant: closed({ endpoint: { const: TOOL_RESULTS_ENDPOINT }, instanceId: uid, epoch: uint, registrationRevision: { ...uint, minimum: 1 } }),
|
|
46
|
+
credential: { type: "string", minLength: 1, maxLength: 16384 },
|
|
47
|
+
snapshot: closed({ t0: uint, watermark: uint, watermarkTakenAt: uint, revokedConsentIds: { type: "array", uniqueItems: true, items: id } }),
|
|
48
|
+
expiresAt: uint,
|
|
49
|
+
}));
|
|
50
|
+
export const TOOL_RESULT_INPUT_SCHEMA = deepFreeze(closed(pair));
|
|
51
|
+
export const TOOL_RESULT_ANSWER_SCHEMAS = deepFreeze({
|
|
52
|
+
available: status("available", { ...pair, content: { type: "string", maxLength: TOOL_RESULT_MAX_CONTENT_BYTES }, truncated: bool, byteCount: { ...uint, maximum: TOOL_RESULT_MAX_CONTENT_BYTES }, error: bool, capturedAt: uint }),
|
|
53
|
+
pending: status("pending", pair),
|
|
54
|
+
"not-shared": status("not-shared"),
|
|
55
|
+
missing: status("missing"),
|
|
56
|
+
expired: status("expired"),
|
|
57
|
+
});
|
|
58
|
+
export const TOOL_RESULT_OUTPUT_SCHEMA = deepFreeze({ oneOf: Object.values(TOOL_RESULT_ANSWER_SCHEMAS) });
|
|
59
|
+
export const TOOL_RESULT_CONSENT_INPUT_SCHEMA = deepFreeze(closed({ consent: TOOL_RESULT_CONSENT_SCHEMA }));
|
|
60
|
+
export const TOOL_RESULT_CONSENT_OUTPUT_SCHEMA = deepFreeze(status("active", { consentId: id }));
|
|
61
|
+
export const TOOL_RESULT_REVOKE_INPUT_SCHEMA = deepFreeze(closed({ consentId: id }));
|
|
62
|
+
export const TOOL_RESULT_REVOKE_ANSWER_SCHEMAS = deepFreeze({
|
|
63
|
+
known: status("known", { consentId: id }),
|
|
64
|
+
refused: status("refused", { consentId: id }),
|
|
65
|
+
unknown: status("unknown", { consentId: id }),
|
|
66
|
+
});
|
|
67
|
+
export const TOOL_RESULT_REVOKE_OUTPUT_SCHEMA = deepFreeze({ oneOf: Object.values(TOOL_RESULT_REVOKE_ANSWER_SCHEMAS) });
|
|
68
|
+
/** Frozen declarations only. No service registration, handler, grant or profile is installed. */
|
|
69
|
+
export const TOOL_RESULTS_COMMANDS = deepFreeze([
|
|
70
|
+
{ name: "tool-result", capability: "tool-results.read", input: TOOL_RESULT_INPUT_SCHEMA, output: TOOL_RESULT_OUTPUT_SCHEMA },
|
|
71
|
+
{ name: "tool-result-consent", capability: "tool-results.consent", input: TOOL_RESULT_CONSENT_INPUT_SCHEMA, output: TOOL_RESULT_CONSENT_OUTPUT_SCHEMA },
|
|
72
|
+
{ name: "tool-result-revoke", capability: "tool-results.revoke", input: TOOL_RESULT_REVOKE_INPUT_SCHEMA, output: TOOL_RESULT_REVOKE_OUTPUT_SCHEMA },
|
|
73
|
+
]);
|
|
74
|
+
export const TOOL_RESULTS_CLUSTER = deepFreeze({
|
|
75
|
+
urn: "ai.cotal.tool-results", revision: 1, attributes: [], events: [],
|
|
76
|
+
commands: TOOL_RESULTS_COMMANDS.map(row => ({
|
|
77
|
+
name: row.name, class: "ephemeral", targeted: true, modes: ["handle"], capability: row.capability,
|
|
78
|
+
inputDigest: singleDocumentClosure(row.input).closureDigest,
|
|
79
|
+
outputDigest: singleDocumentClosure(row.output).closureDigest,
|
|
80
|
+
})),
|
|
81
|
+
});
|
|
82
|
+
const validators = new WeakMap();
|
|
83
|
+
function bad(what) {
|
|
84
|
+
throw new EpEnvelopeError("bad-request", `private tool-result ${what} does not match its closed contract`, undefined, "not-executed");
|
|
85
|
+
}
|
|
86
|
+
function parse(schema, raw, what) {
|
|
87
|
+
let copy;
|
|
88
|
+
try {
|
|
89
|
+
copy = JSON.parse(canonicalJson(raw));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
bad(what);
|
|
93
|
+
}
|
|
94
|
+
let validate = validators.get(schema);
|
|
95
|
+
if (!validate) {
|
|
96
|
+
validate = compileContractSchema({ root: schema });
|
|
97
|
+
validators.set(schema, validate);
|
|
98
|
+
}
|
|
99
|
+
if (!validate(copy))
|
|
100
|
+
bad(what);
|
|
101
|
+
return deepFreeze(copy);
|
|
102
|
+
}
|
|
103
|
+
/** Parse shape and static bindings only; verify signatures and current authority separately. */
|
|
104
|
+
export function parseToolResultConsent(raw) {
|
|
105
|
+
const c = parse(TOOL_RESULT_CONSENT_SCHEMA, raw, "consent");
|
|
106
|
+
if (c.holder.owner !== c.target.owner || c.holder.actor === c.target.actor || c.exp <= c.iat || c.exp - c.iat > TOOL_RESULT_CONSENT_MAX_TTL_MS)
|
|
107
|
+
bad("consent binding or window");
|
|
108
|
+
return c;
|
|
109
|
+
}
|
|
110
|
+
export function parseToolResultRevocation(raw) {
|
|
111
|
+
return parse(TOOL_RESULT_REVOCATION_SCHEMA, raw, "revocation");
|
|
112
|
+
}
|
|
113
|
+
export function parseToolResultServingMaterial(raw) {
|
|
114
|
+
const m = parse(TOOL_RESULT_SERVING_MATERIAL_SCHEMA, raw, "serving material");
|
|
115
|
+
if (!isAccountNkey(m.accountPublicKey) || m.snapshot.watermarkTakenAt < m.snapshot.t0 || m.expiresAt !== Math.floor(m.snapshot.t0 / 1000) + 600)
|
|
116
|
+
bad("serving material binding or expiry");
|
|
117
|
+
try {
|
|
118
|
+
fromPublic(m.accountPublicKey);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
bad("serving material account key");
|
|
122
|
+
}
|
|
123
|
+
return m;
|
|
124
|
+
}
|
|
125
|
+
export function parseToolResultAnswer(raw) {
|
|
126
|
+
const a = parse(TOOL_RESULT_OUTPUT_SCHEMA, raw, "answer");
|
|
127
|
+
if (a.state === "available" && new TextEncoder().encode(a.content).length !== a.byteCount)
|
|
128
|
+
bad("answer byte count");
|
|
129
|
+
return a;
|
|
130
|
+
}
|
|
131
|
+
export function parseToolResultRevocationOutcome(raw) {
|
|
132
|
+
return parse(TOOL_RESULT_REVOKE_OUTPUT_SCHEMA, raw, "revocation outcome");
|
|
133
|
+
}
|
|
134
|
+
/** Resolve only the accepted anchor family/scope. This does not verify a consent signature,
|
|
135
|
+
* establish human proof or authorize redemption; no signer is exposed. */
|
|
136
|
+
export async function resolveToolResultConsentAnchor(resolve, keyId, at) {
|
|
137
|
+
const anchor = await resolveAnchorForUse(resolve, { keyId, role: "consents", at });
|
|
138
|
+
assertAnchorScopeCovers(anchor, "consents", TOOL_RESULTS_ENDPOINT, "private tool-result consent");
|
|
139
|
+
return anchor;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=private-tool-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-tool-results.js","sourceRoot":"","sources":["../src/private-tool-results.ts"],"names":[],"mappings":"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"}
|
package/dist/provision.d.ts
CHANGED
|
@@ -441,6 +441,11 @@ export interface MintPrincipal {
|
|
|
441
441
|
* dm/dlv/chathist grants are lifecycle-keyed EXACT names, so a credential cannot name another
|
|
442
442
|
* incarnation's resources. Other profiles ignore it. */
|
|
443
443
|
lifecycleUid?: string;
|
|
444
|
+
/** The connection's history-reader id, the key of the observer and admin profiles' reader deletes
|
|
445
|
+
* ({@link historyReaderConsumer}). A static mint leaves it unset, because there `connId` is the
|
|
446
|
+
* credential's own nkey, which its holder proves by signing. The auth callout sets it to
|
|
447
|
+
* {@link calloutReaderId}, because there `connId` is the inbox nonce the client chose. */
|
|
448
|
+
readerId?: string;
|
|
444
449
|
}
|
|
445
450
|
/** Onboard an agent for launch (auth mode): pre-create its bind-only DM (+ Plane-3 DELIVER + role
|
|
446
451
|
* TASK) durables, RECORD its read ACL in the durable registry (unless `durableMembership:false`), and
|
package/dist/provision.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
|
package/dist/provision.js
CHANGED
|
@@ -19,7 +19,7 @@ import { randomBytes } from "node:crypto";
|
|
|
19
19
|
import { join } from "node:path";
|
|
20
20
|
import { decode, encodeOperator, encodeAccount, encodeUser, fmtCreds, } from "@nats-io/jwt";
|
|
21
21
|
import { createOperator, createAccount, fromPublic, fromSeed } from "@nats-io/nkeys";
|
|
22
|
-
import { token, spacePrefix, chatSubject, assertValidChannel, resolveReadAcl, principalKey, parsePrincipalKey, deprovisionTargetPrincipal, principalTags, assertInboxConnId, DEV_OWNER, unicastSubject, anycastSubject, controlServiceSubject, CONTROL_DELIVERY, CONTROL_DELIVERY_ADMIN, artifactBucket, objectStoreStream, chatStream, dmStream, taskStream, dlvStream, inboxStream, chatHistDurable, dmDurable, taskDurable, dlvDurable, presenceBucket, channelBucket, membersBucket, aclBucket, aclKey, memberKey, assertLifecycleToken, membershipBucket, deliveryBucket, managerBucket, MANAGER_LEASE_KEY, MANAGER_RENEWAL_LEASE_KEY, connzRequestSubject, accountConnectSubject, accountDisconnectSubject, MEMBERSHIP_INBOX_PREFIX, FANOUT_DURABLE, INBOX_READER_DURABLE, livenessSubject, livenessServeFilter, livenessReplyGrant, isTransferStream, } from "./subjects.js";
|
|
22
|
+
import { token, spacePrefix, chatSubject, assertValidChannel, resolveReadAcl, principalKey, parsePrincipalKey, deprovisionTargetPrincipal, principalTags, assertInboxConnId, DEV_OWNER, unicastSubject, anycastSubject, controlServiceSubject, CONTROL_DELIVERY, CONTROL_DELIVERY_ADMIN, artifactBucket, objectStoreStream, chatStream, dmStream, taskStream, dlvStream, inboxStream, chatHistDurable, historyReaderConsumer, HISTORY_READERS, dmDurable, taskDurable, dlvDurable, presenceBucket, channelBucket, membersBucket, aclBucket, aclKey, memberKey, assertLifecycleToken, membershipBucket, deliveryBucket, managerBucket, MANAGER_LEASE_KEY, MANAGER_RENEWAL_LEASE_KEY, connzRequestSubject, accountConnectSubject, accountDisconnectSubject, MEMBERSHIP_INBOX_PREFIX, FANOUT_DURABLE, INBOX_READER_DURABLE, livenessSubject, livenessServeFilter, livenessReplyGrant, isTransferStream, } from "./subjects.js";
|
|
23
23
|
import { LIVENESS_PLANES } from "./liveness.js";
|
|
24
24
|
import { epCallerGrantRows, epServeGrantRows, epBaselineGrantRows, baselineCallerCapabilities, spawnCallerCapabilities, runCallerCapabilities, epRequestGrantRows, operatorInstrumentCapabilities, instanceOnlyManagerCapabilities, epDescribeAllGrantRow, BASELINE_LIFECYCLE_ENDPOINT, } from "./endpoint-grants.js";
|
|
25
25
|
import { assertServeGrantMintable, finalizeServeIssuance } from "./endpoint-service.js";
|
|
@@ -789,23 +789,30 @@ export function permissionsFor(profile, space, pr, opts) {
|
|
|
789
789
|
const sub = profile === "admin"
|
|
790
790
|
? [`${spacePrefix(space)}.chat.>`, `${spacePrefix(space)}.inst.>`, `${spacePrefix(space)}.svc.>`, inbox]
|
|
791
791
|
: [`${spacePrefix(space)}.chat.>`, inbox];
|
|
792
|
+
// History readers (channelHistory, multiChannelHistory, dmHistory) are named consumers keyed on
|
|
793
|
+
// this connection's reader id (see MintPrincipal.readerId). The profile may delete exactly those
|
|
794
|
+
// names and no other consumer (#4123): each read deletes its readers when it ends, so polling no
|
|
795
|
+
// longer fills the stream's consumer limit.
|
|
796
|
+
const readerId = pr.readerId ?? pr.connId;
|
|
797
|
+
const readerDeletes = (stream) => Array.from({ length: HISTORY_READERS }, (_, i) => `$JS.API.CONSUMER.DELETE.${stream}.${historyReaderConsumer(readerId, i)}`);
|
|
792
798
|
const allow = [
|
|
793
799
|
"$JS.API.INFO",
|
|
794
800
|
`$JS.API.STREAM.INFO.${CHAT}`,
|
|
795
801
|
`$JS.API.STREAM.INFO.${KV}`,
|
|
796
|
-
// NO CONSUMER.DELETE on any stream this profile reads (#691). Its consumers
|
|
797
|
-
// ordered consumers (`oc_<nuid>_<serial>`, the serial bumped on every
|
|
798
|
-
// expressible grant is stream-wide, and stream-wide let one
|
|
799
|
-
// principal's live watch cursors and the delivery daemon's fan-out
|
|
800
|
-
//
|
|
801
|
-
// delete of its own
|
|
802
|
+
// NO stream-wide CONSUMER.DELETE on any stream this profile reads (#691). Its watch consumers
|
|
803
|
+
// are client-named ordered consumers (`oc_<nuid>_<serial>`, the serial bumped on every
|
|
804
|
+
// rebuild), so the only expressible grant for them is stream-wide, and stream-wide let one
|
|
805
|
+
// observer delete another principal's live watch cursors and the delivery daemon's fan-out
|
|
806
|
+
// durable. The broker reaps those consumers at their inactive threshold instead, and the
|
|
807
|
+
// client treats a refused delete of its own watch consumer as that designed outcome.
|
|
802
808
|
//
|
|
803
|
-
//
|
|
804
|
-
//
|
|
809
|
+
// history reader consumer: a multi-filter create can't encode its filter in the subject → bare
|
|
810
|
+
// form; the .> form covers the single-filter named create.
|
|
805
811
|
`$JS.API.CONSUMER.CREATE.${CHAT}`,
|
|
806
812
|
`$JS.API.CONSUMER.CREATE.${CHAT}.>`,
|
|
807
813
|
`$JS.API.CONSUMER.INFO.${CHAT}.>`,
|
|
808
814
|
`$JS.API.CONSUMER.MSG.NEXT.${CHAT}.>`,
|
|
815
|
+
...readerDeletes(CHAT),
|
|
809
816
|
`$JS.ACK.${CHAT}.>`,
|
|
810
817
|
`$JS.API.CONSUMER.CREATE.${KV}.>`, // kv.watch ordered consumer (roster is public)
|
|
811
818
|
`$JS.API.CONSUMER.INFO.${KV}.>`,
|
|
@@ -835,7 +842,7 @@ export function permissionsFor(profile, space, pr, opts) {
|
|
|
835
842
|
if (profile === "admin") {
|
|
836
843
|
// DM history backfill (dmHistory): same bare-form gotcha as CHAT — filter_subjects is
|
|
837
844
|
// plural so the create lands on the bare subject; the .> form covers named consumers.
|
|
838
|
-
allow.push(`$JS.API.STREAM.INFO.${DM}`, `$JS.API.CONSUMER.CREATE.${DM}`, `$JS.API.CONSUMER.CREATE.${DM}.>`, `$JS.API.CONSUMER.INFO.${DM}.>`, `$JS.API.CONSUMER.MSG.NEXT.${DM}.>`, `$JS.ACK.${DM}.>`);
|
|
845
|
+
allow.push(`$JS.API.STREAM.INFO.${DM}`, `$JS.API.CONSUMER.CREATE.${DM}`, `$JS.API.CONSUMER.CREATE.${DM}.>`, `$JS.API.CONSUMER.INFO.${DM}.>`, `$JS.API.CONSUMER.MSG.NEXT.${DM}.>`, ...readerDeletes(DM), `$JS.ACK.${DM}.>`);
|
|
839
846
|
}
|
|
840
847
|
return { sub: { allow: sub }, pub: { allow } };
|
|
841
848
|
}
|
|
@@ -1063,6 +1070,12 @@ export function permissionsFor(profile, space, pr, opts) {
|
|
|
1063
1070
|
// the `ctl.<tier>.<id>.reply.>` subtrees are gone with the ctl rail.
|
|
1064
1071
|
return { pub: { allow: pubAllow, deny: pubDeny }, sub: { allow: [inbox, deliveryReplies, ...livenessReplies, ...subChat, ...epSub] } };
|
|
1065
1072
|
}
|
|
1073
|
+
/** The reads a launch on one Manager needs: `status` (its execution mode and which connectors it
|
|
1074
|
+
* can launch), `models` (their catalogs) and `resolve-cwd` (a directory's canonical form on its
|
|
1075
|
+
* host). A spawn holder learns each by launching there, so a spawn-scoped manager-caller view
|
|
1076
|
+
* carries them on its one pinned instance. The standing spawn set does not: it reaches every
|
|
1077
|
+
* manager in the space through the class rail. */
|
|
1078
|
+
const LAUNCH_READ_COMMANDS = Object.freeze(["status", "models", "resolve-cwd"]);
|
|
1066
1079
|
/** One seat's manager control view. It carries no agent messaging or delivery surface, and every
|
|
1067
1080
|
* manager request, including describe, is pinned to one exact registered instance. */
|
|
1068
1081
|
function managerCallerPermissions(space, pr, opts) {
|
|
@@ -1076,6 +1089,7 @@ function managerCallerPermissions(space, pr, opts) {
|
|
|
1076
1089
|
{ endpoint: BASELINE_LIFECYCLE_ENDPOINT, command: "describe" },
|
|
1077
1090
|
...baselineCallerCapabilities().filter((cap) => cap.endpoint === BASELINE_LIFECYCLE_ENDPOINT),
|
|
1078
1091
|
...(caps.includes("spawn") ? spawnCallerCapabilities(pr.owner) : []),
|
|
1092
|
+
...(caps.includes("spawn") ? LAUNCH_READ_COMMANDS.map((command) => ({ endpoint: BASELINE_LIFECYCLE_ENDPOINT, command })) : []),
|
|
1079
1093
|
...(caps.includes("run") ? runCallerCapabilities(pr.owner) : []),
|
|
1080
1094
|
...(caps.includes("admin") ? operatorInstrumentCapabilities("admin", pr.owner) : []),
|
|
1081
1095
|
];
|
|
@@ -1294,14 +1308,18 @@ function operatorPermissions(space, pr) {
|
|
|
1294
1308
|
anycastSubject(space, "*", pr.owner, pr.actor), // svc.*.<o>.<a> — anycast any role as me
|
|
1295
1309
|
`$KV.${presenceBucket(space)}.${principalKey(pr.owner, pr.actor).key}`, // own presence key only
|
|
1296
1310
|
"$JS.API.INFO",
|
|
1297
|
-
// Presence
|
|
1298
|
-
//
|
|
1311
|
+
// Presence read (name→id resolution + the roster). The transient endpoint reads the bucket once
|
|
1312
|
+
// with a batched Direct Get, whose request subject is the bare stream (#4091); the consumer rows
|
|
1313
|
+
// serve a watch. No STREAM.MSG.GET.
|
|
1299
1314
|
`$JS.API.STREAM.INFO.${PKV}`,
|
|
1315
|
+
`$JS.API.DIRECT.GET.${PKV}`,
|
|
1300
1316
|
`$JS.API.CONSUMER.CREATE.${PKV}.>`,
|
|
1301
1317
|
`$JS.API.CONSUMER.INFO.${PKV}.>`,
|
|
1302
|
-
// Channel registry read — the transient endpoint
|
|
1303
|
-
// channel's delivery class. Read-only (no `$KV.<channel>`
|
|
1318
|
+
// Channel registry read — the transient endpoint reads it once (batched Direct Get), multicast
|
|
1319
|
+
// reads a channel's delivery class, and `channels list` scans it. Read-only (no `$KV.<channel>`
|
|
1320
|
+
// write — that's the provisioner).
|
|
1304
1321
|
`$JS.API.STREAM.INFO.${CHKV}`,
|
|
1322
|
+
`$JS.API.DIRECT.GET.${CHKV}`,
|
|
1305
1323
|
`$JS.API.STREAM.MSG.GET.${CHKV}`,
|
|
1306
1324
|
// Keyed KV get rides `DIRECT.GET.<stream>.$KV.<bucket>.<key>` — the key is in the SUBJECT, so
|
|
1307
1325
|
// the grant needs the trailing `.>` (unlike STREAM.MSG.GET, which carries it in the payload).
|