veryfront 0.1.1213 → 0.1.1215
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/esm/deno.js +1 -1
- package/esm/src/agent/conversation/delegation-policy.d.ts +1 -3
- package/esm/src/agent/conversation/delegation-policy.d.ts.map +1 -1
- package/esm/src/agent/conversation/delegation-policy.js +1 -3
- package/esm/src/agent/index.d.ts +1 -1
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +1 -1
- package/esm/src/agent/runtime/agent-loop-skill-state.d.ts +10 -12
- package/esm/src/agent/runtime/agent-loop-skill-state.d.ts.map +1 -1
- package/esm/src/agent/runtime/agent-loop-skill-state.js +11 -17
- package/esm/src/agent/runtime/agent-runtime-step.d.ts +0 -1
- package/esm/src/agent/runtime/agent-runtime-step.d.ts.map +1 -1
- package/esm/src/agent/runtime/agent-runtime-step.js +2 -2
- package/esm/src/agent/runtime/index.d.ts +1 -1
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +7 -13
- package/esm/src/agent/runtime/load-skill-tool.d.ts +2 -2
- package/esm/src/agent/runtime/load-skill-tool.d.ts.map +1 -1
- package/esm/src/agent/runtime/load-skill-tool.js +12 -68
- package/esm/src/agent/runtime/project-skill-catalog.d.ts.map +1 -1
- package/esm/src/agent/runtime/project-skill-catalog.js +1 -6
- package/esm/src/agent/runtime/skill-metadata.d.ts +4 -18
- package/esm/src/agent/runtime/skill-metadata.d.ts.map +1 -1
- package/esm/src/agent/runtime/skill-metadata.js +17 -78
- package/esm/src/agent/runtime/skill-policy-enforcement.d.ts +1 -5
- package/esm/src/agent/runtime/skill-policy-enforcement.d.ts.map +1 -1
- package/esm/src/agent/runtime/skill-policy-enforcement.js +12 -55
- package/esm/src/agent/runtime/skill-prompt.d.ts +2 -2
- package/esm/src/agent/runtime/skill-prompt.d.ts.map +1 -1
- package/esm/src/agent/runtime/skill-prompt.js +8 -44
- package/esm/src/html/hydration-script-builder/hydration-runtime.generated.js +1 -1
- package/esm/src/platform/adapters/index.d.ts +25 -0
- package/esm/src/platform/adapters/index.d.ts.map +1 -0
- package/esm/src/platform/adapters/index.js +23 -0
- package/esm/src/platform/adapters/security/index.d.ts +8 -0
- package/esm/src/platform/adapters/security/index.d.ts.map +1 -0
- package/esm/src/platform/adapters/security/index.js +7 -0
- package/esm/src/platform/adapters/token/factory.d.ts +10 -0
- package/esm/src/platform/adapters/token/factory.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/factory.js +79 -0
- package/esm/src/platform/adapters/token/index.d.ts +9 -0
- package/esm/src/platform/adapters/token/index.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/index.js +8 -0
- package/esm/src/platform/adapters/token/integration.d.ts +6 -0
- package/esm/src/platform/adapters/token/integration.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/integration.js +61 -0
- package/esm/src/platform/adapters/token/veryfront/adapter.d.ts +22 -0
- package/esm/src/platform/adapters/token/veryfront/adapter.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/veryfront/adapter.js +88 -0
- package/esm/src/platform/adapters/token/veryfront/api-client.d.ts +15 -0
- package/esm/src/platform/adapters/token/veryfront/api-client.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/veryfront/api-client.js +212 -0
- package/esm/src/platform/adapters/token/veryfront/index.d.ts +10 -0
- package/esm/src/platform/adapters/token/veryfront/index.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/veryfront/index.js +9 -0
- package/esm/src/platform/adapters/token/veryfront/memory-adapter.d.ts +20 -0
- package/esm/src/platform/adapters/token/veryfront/memory-adapter.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/veryfront/memory-adapter.js +52 -0
- package/esm/src/platform/adapters/token/veryfront/types.d.ts +86 -0
- package/esm/src/platform/adapters/token/veryfront/types.d.ts.map +1 -0
- package/esm/src/platform/adapters/token/veryfront/types.js +81 -0
- package/esm/src/platform/compat/http/pinned-fetch.d.ts +1 -1
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +17 -1
- package/esm/src/security/http/auth.d.ts.map +1 -1
- package/esm/src/security/http/auth.js +7 -0
- package/esm/src/security/http/config.d.ts +5 -0
- package/esm/src/security/http/config.d.ts.map +1 -1
- package/esm/src/security/http/config.js +16 -1
- package/esm/src/security/http/csp-report-endpoint.d.ts +29 -0
- package/esm/src/security/http/csp-report-endpoint.d.ts.map +1 -0
- package/esm/src/security/http/csp-report-endpoint.js +30 -0
- package/esm/src/security/http/csrf/csrf-handler.d.ts.map +1 -1
- package/esm/src/security/http/csrf/csrf-handler.js +6 -0
- package/esm/src/security/http/derived-csp-cache.d.ts +33 -0
- package/esm/src/security/http/derived-csp-cache.d.ts.map +1 -0
- package/esm/src/security/http/derived-csp-cache.js +101 -0
- package/esm/src/security/http/derived-csp-origins.d.ts +54 -0
- package/esm/src/security/http/derived-csp-origins.d.ts.map +1 -0
- package/esm/src/security/http/derived-csp-origins.js +156 -0
- package/esm/src/security/http/response/security-handler.d.ts +1 -2
- package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
- package/esm/src/security/http/response/security-handler.js +25 -9
- package/esm/src/security/sandbox/constants.d.ts +3 -0
- package/esm/src/security/sandbox/constants.d.ts.map +1 -0
- package/esm/src/security/sandbox/constants.js +2 -0
- package/esm/src/security/sandbox/deno-sandbox.d.ts +71 -0
- package/esm/src/security/sandbox/deno-sandbox.d.ts.map +1 -0
- package/esm/src/security/sandbox/deno-sandbox.js +184 -0
- package/esm/src/security/sandbox/permission-system.d.ts +11 -0
- package/esm/src/security/sandbox/permission-system.d.ts.map +1 -0
- package/esm/src/security/sandbox/permission-system.js +85 -0
- package/esm/src/server/handlers/request/csp-report.handler.d.ts +56 -0
- package/esm/src/server/handlers/request/csp-report.handler.d.ts.map +1 -0
- package/esm/src/server/handlers/request/csp-report.handler.js +189 -0
- package/esm/src/server/runtime-handler/index.d.ts +1 -1
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +3 -0
- package/esm/src/server/runtime-handler/project-runtime-context.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/project-runtime-context.js +97 -1
- package/esm/src/server/utils/domain-parser.d.ts +9 -0
- package/esm/src/server/utils/domain-parser.d.ts.map +1 -1
- package/esm/src/server/utils/domain-parser.js +11 -0
- package/esm/src/skill/allowed-tools.d.ts +18 -42
- package/esm/src/skill/allowed-tools.d.ts.map +1 -1
- package/esm/src/skill/allowed-tools.js +31 -182
- package/esm/src/skill/index.d.ts +1 -1
- package/esm/src/skill/index.d.ts.map +1 -1
- package/esm/src/skill/index.js +2 -2
- package/esm/src/skill/parser.d.ts.map +1 -1
- package/esm/src/skill/parser.js +6 -37
- package/esm/src/skill/tools.d.ts.map +1 -1
- package/esm/src/skill/tools.js +2 -3
- package/esm/src/skill/types.d.ts +1 -3
- package/esm/src/skill/types.d.ts.map +1 -1
- package/esm/src/skill/validation.d.ts.map +1 -1
- package/esm/src/skill/validation.js +31 -3
- package/esm/src/types/server.d.ts +10 -0
- package/esm/src/types/server.d.ts.map +1 -1
- package/esm/src/utils/cors-policy-limits.d.ts +9 -2
- package/esm/src/utils/cors-policy-limits.d.ts.map +1 -1
- package/esm/src/utils/cors-policy-limits.js +8 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/api.d.ts +2 -2
- package/package.json +8 -8
|
@@ -1,37 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Skill Tool Availability
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Gates the skill infrastructure tools by what the active skill actually
|
|
5
|
+
* advertises: `load_skill_reference` needs a reference file, and
|
|
6
|
+
* `execute_skill_script` needs a script. Ordinary tools are never gated here.
|
|
7
|
+
*
|
|
8
|
+
* A skill's `allowed-tools` frontmatter is deliberately *not* enforced. The
|
|
9
|
+
* Agent Skills specification defines that field as pre-approval: tools the
|
|
10
|
+
* agent may run without prompting, not an authorization boundary. See
|
|
11
|
+
* veryfront/veryfront-issue-inbox#406.
|
|
7
12
|
*
|
|
8
13
|
* @module
|
|
9
14
|
*/
|
|
10
|
-
import { isSkillInfrastructureToolId
|
|
11
|
-
import { createError, toError } from "../errors/index.js";
|
|
12
|
-
import { isProxyWithoutHooks } from "../platform/compat/error-introspection.js";
|
|
13
|
-
import { SKILL_ALLOWED_TOOL_MAX_PATTERNS, SKILL_ALLOWED_TOOL_PATTERN_MAX_LENGTH, } from "./limits.js";
|
|
14
|
-
import { hasControlCharacters, isWellFormedUtf16 } from "./string-safety.js";
|
|
15
|
+
import { isSkillInfrastructureToolId } from "./types.js";
|
|
15
16
|
const LOAD_SKILL_TOOL_ID = "load_skill";
|
|
16
17
|
const LOAD_SKILL_REFERENCE_TOOL_ID = "load_skill_reference";
|
|
17
18
|
const EXECUTE_SKILL_SCRIPT_TOOL_ID = "execute_skill_script";
|
|
18
19
|
const apply = Reflect.apply;
|
|
19
20
|
const arrayFilter = Array.prototype.filter;
|
|
20
|
-
const arrayIsArray = Array.isArray;
|
|
21
|
-
const defineProperty = Object.defineProperty;
|
|
22
|
-
const freeze = Object.freeze;
|
|
23
|
-
const getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
24
|
-
const numberIsSafeInteger = Number.isSafeInteger;
|
|
25
|
-
const objectHasOwnProperty = Object.prototype.hasOwnProperty;
|
|
26
|
-
const stringEndsWith = String.prototype.endsWith;
|
|
27
|
-
const stringSlice = String.prototype.slice;
|
|
28
|
-
const stringStartsWith = String.prototype.startsWith;
|
|
29
|
-
function hasOwn(value, key) {
|
|
30
|
-
return apply(objectHasOwnProperty, value, [key]);
|
|
31
|
-
}
|
|
32
|
-
function isValidAllowedToolPattern(pattern) {
|
|
33
|
-
return isValidSkillAllowedToolPattern(pattern);
|
|
34
|
-
}
|
|
35
21
|
function isSkillInfrastructureToolAllowed(toolName, availability = {}) {
|
|
36
22
|
if (!isSkillInfrastructureToolId(toolName)) {
|
|
37
23
|
return undefined;
|
|
@@ -47,168 +33,31 @@ function isSkillInfrastructureToolAllowed(toolName, availability = {}) {
|
|
|
47
33
|
}
|
|
48
34
|
return false;
|
|
49
35
|
}
|
|
50
|
-
function isToolAllowedByCapturedPolicy(toolName, allowedTools, availability) {
|
|
51
|
-
const skillToolAvailable = isSkillInfrastructureToolAllowed(toolName, availability);
|
|
52
|
-
if (skillToolAvailable !== undefined) {
|
|
53
|
-
// Skill navigation stays available independently of the active policy, but
|
|
54
|
-
// file-backed capabilities require both an advertised file and an explicit
|
|
55
|
-
// policy grant whenever a policy exists. Treating availability alone as an
|
|
56
|
-
// authorization grant would widen malformed or explicitly empty policies.
|
|
57
|
-
if (!skillToolAvailable || toolName === LOAD_SKILL_TOOL_ID) {
|
|
58
|
-
return skillToolAvailable;
|
|
59
|
-
}
|
|
60
|
-
return allowedTools === undefined || matchesAnyAllowedTool(toolName, allowedTools);
|
|
61
|
-
}
|
|
62
|
-
if (allowedTools === undefined)
|
|
63
|
-
return true;
|
|
64
|
-
return matchesAnyAllowedTool(toolName, allowedTools);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Check if a tool name matches a single allowed-tools pattern.
|
|
68
|
-
*
|
|
69
|
-
* Supports:
|
|
70
|
-
* - Exact match: "Read" matches "Read"
|
|
71
|
-
* - Prefix wildcard: "api:*" matches "api:list-users"
|
|
72
|
-
*/
|
|
73
|
-
export function matchesAllowedTool(toolName, pattern) {
|
|
74
|
-
// Invalid patterns always fail (fail closed)
|
|
75
|
-
if (!isValidAllowedToolPattern(pattern)) {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
// Prefix wildcard
|
|
79
|
-
if (apply(stringEndsWith, pattern, [":*"])) {
|
|
80
|
-
const prefix = apply(stringSlice, pattern, [0, -1]); // keep the colon: "api:"
|
|
81
|
-
return apply(stringStartsWith, toolName, [prefix]);
|
|
82
|
-
}
|
|
83
|
-
// Exact match
|
|
84
|
-
return toolName === pattern;
|
|
85
|
-
}
|
|
86
36
|
/**
|
|
87
|
-
*
|
|
37
|
+
* Filter tool definitions before sending them to the model.
|
|
88
38
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
39
|
+
* Only skill infrastructure tools are affected; every other tool passes
|
|
40
|
+
* through untouched.
|
|
91
41
|
*
|
|
92
42
|
* @param tools - Full list of tool definitions
|
|
93
|
-
* @param
|
|
43
|
+
* @param skillToolAvailability - Files the active skill advertises
|
|
94
44
|
* @returns Filtered tool definitions
|
|
95
45
|
*/
|
|
96
|
-
export function filterToolsForSkill(tools,
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
* @param allowedTools - Allowed tool patterns, or undefined for no restrictions
|
|
114
|
-
* @returns true if the tool call is allowed
|
|
115
|
-
*/
|
|
116
|
-
export function isToolAllowedBySkill(toolName, allowedTools, skillToolAvailability) {
|
|
117
|
-
return isToolAllowedByCapturedPolicy(toolName, allowedTools === undefined ? undefined : captureProgrammaticAllowedToolPatterns(allowedTools), skillToolAvailability);
|
|
118
|
-
}
|
|
119
|
-
/** Filter provider-native or other name-only tool inventories through the same policy boundary. */
|
|
120
|
-
export function filterToolNamesForSkill(toolNames, allowedTools, skillToolAvailability) {
|
|
121
|
-
const capturedAllowedTools = allowedTools === undefined
|
|
122
|
-
? undefined
|
|
123
|
-
: captureProgrammaticAllowedToolPatterns(allowedTools);
|
|
124
|
-
return apply(arrayFilter, toolNames, [(toolName) => isToolAllowedByCapturedPolicy(toolName, capturedAllowedTools, skillToolAvailability)]);
|
|
125
|
-
}
|
|
126
|
-
function matchesAnyAllowedTool(toolName, patterns) {
|
|
127
|
-
for (let index = 0; index < patterns.length; index += 1) {
|
|
128
|
-
if (matchesAllowedTool(toolName, patterns[index]))
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
return false;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Validate allowed-tool patterns at parse time.
|
|
135
|
-
*
|
|
136
|
-
* Ensures each pattern matches the expected format.
|
|
137
|
-
* Rejects unsupported patterns with a descriptive error (fail closed).
|
|
138
|
-
*
|
|
139
|
-
* @param patterns - Array of tool patterns to validate
|
|
140
|
-
* @returns A detached mutable copy of the validated patterns
|
|
141
|
-
* @throws If any pattern is invalid
|
|
142
|
-
*/
|
|
143
|
-
export function validateAllowedToolPatterns(patterns) {
|
|
144
|
-
return captureProgrammaticAllowedToolPatterns(patterns);
|
|
145
|
-
}
|
|
146
|
-
/** Validate bounded allowed-tool patterns at filesystem and runtime trust boundaries. */
|
|
147
|
-
export function validateStrictAllowedToolPatterns(patterns) {
|
|
148
|
-
return captureStrictAllowedToolPatterns(patterns);
|
|
149
|
-
}
|
|
150
|
-
/** Validate, detach, and freeze an active authorization policy. */
|
|
151
|
-
export function snapshotAllowedToolPatterns(patterns) {
|
|
152
|
-
return freeze(captureStrictAllowedToolPatterns(patterns));
|
|
153
|
-
}
|
|
154
|
-
const STRICT_ALLOWED_TOOL_PATTERN_LIMITS = freeze({
|
|
155
|
-
maxPatterns: SKILL_ALLOWED_TOOL_MAX_PATTERNS,
|
|
156
|
-
maxPatternLength: SKILL_ALLOWED_TOOL_PATTERN_MAX_LENGTH,
|
|
157
|
-
});
|
|
158
|
-
function captureProgrammaticAllowedToolPatterns(patterns) {
|
|
159
|
-
return captureAllowedToolPatterns(patterns, undefined);
|
|
160
|
-
}
|
|
161
|
-
function captureStrictAllowedToolPatterns(patterns) {
|
|
162
|
-
return captureAllowedToolPatterns(patterns, STRICT_ALLOWED_TOOL_PATTERN_LIMITS);
|
|
163
|
-
}
|
|
164
|
-
function captureAllowedToolPatterns(patterns, limits) {
|
|
165
|
-
if ((typeof patterns !== "object" && typeof patterns !== "function") ||
|
|
166
|
-
patterns === null ||
|
|
167
|
-
!arrayIsArray(patterns)) {
|
|
168
|
-
throw new TypeError("Allowed-tools patterns must be an array");
|
|
169
|
-
}
|
|
170
|
-
if (isProxyWithoutHooks(patterns)) {
|
|
171
|
-
throw new TypeError("Allowed-tools patterns must not be a proxy");
|
|
172
|
-
}
|
|
173
|
-
const lengthDescriptor = getOwnPropertyDescriptor(patterns, "length");
|
|
174
|
-
const length = lengthDescriptor && hasOwn(lengthDescriptor, "value")
|
|
175
|
-
? lengthDescriptor.value
|
|
176
|
-
: undefined;
|
|
177
|
-
if (!numberIsSafeInteger(length) || length < 0) {
|
|
178
|
-
throw new TypeError("Allowed-tools length must be a data property");
|
|
179
|
-
}
|
|
180
|
-
if (limits && length > limits.maxPatterns) {
|
|
181
|
-
throw new RangeError(`Allowed-tools accepts at most ${limits.maxPatterns} patterns`);
|
|
182
|
-
}
|
|
183
|
-
const snapshot = [];
|
|
184
|
-
for (let index = 0; index < length; index += 1) {
|
|
185
|
-
const descriptor = getOwnPropertyDescriptor(patterns, index);
|
|
186
|
-
if (!descriptor || !hasOwn(descriptor, "value")) {
|
|
187
|
-
throw new TypeError(`Allowed-tools pattern ${index} must be a data property`);
|
|
188
|
-
}
|
|
189
|
-
const pattern = descriptor.value;
|
|
190
|
-
if (typeof pattern !== "string") {
|
|
191
|
-
throw new TypeError("Allowed-tools patterns must be strings");
|
|
192
|
-
}
|
|
193
|
-
if (limits && pattern.length > limits.maxPatternLength) {
|
|
194
|
-
throw new RangeError(`Allowed-tools patterns must be at most ${limits.maxPatternLength} characters`);
|
|
195
|
-
}
|
|
196
|
-
if (!isWellFormedUtf16(pattern) || hasControlCharacters(pattern)) {
|
|
197
|
-
throw new TypeError("Allowed-tools patterns must contain well-formed UTF-16 without control characters");
|
|
198
|
-
}
|
|
199
|
-
if (!isValidAllowedToolPattern(pattern)) {
|
|
200
|
-
throw toError(createError({
|
|
201
|
-
type: "agent",
|
|
202
|
-
message: "Invalid allowed-tools pattern. " +
|
|
203
|
-
`Only exact tool IDs (e.g. "Read") and prefix wildcards (e.g. "api:*") are supported.`,
|
|
204
|
-
}));
|
|
205
|
-
}
|
|
206
|
-
defineProperty(snapshot, snapshot.length, {
|
|
207
|
-
configurable: true,
|
|
208
|
-
enumerable: true,
|
|
209
|
-
value: pattern,
|
|
210
|
-
writable: true,
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
return snapshot;
|
|
46
|
+
export function filterToolsForSkill(tools, skillToolAvailability) {
|
|
47
|
+
if (!skillToolAvailability) {
|
|
48
|
+
return tools;
|
|
49
|
+
}
|
|
50
|
+
return apply(arrayFilter, tools, [
|
|
51
|
+
(tool) => isSkillInfrastructureToolAllowed(tool.name, skillToolAvailability) ?? true,
|
|
52
|
+
]);
|
|
53
|
+
}
|
|
54
|
+
/** Check whether a specific tool call is available at execution time. */
|
|
55
|
+
export function isSkillToolAvailable(toolName, skillToolAvailability) {
|
|
56
|
+
return isSkillInfrastructureToolAllowed(toolName, skillToolAvailability) ?? true;
|
|
57
|
+
}
|
|
58
|
+
/** Filter provider-native or other name-only tool inventories through the same boundary. */
|
|
59
|
+
export function filterToolNamesForSkill(toolNames, skillToolAvailability) {
|
|
60
|
+
return apply(arrayFilter, toolNames, [
|
|
61
|
+
(toolName) => isSkillInfrastructureToolAllowed(toolName, skillToolAvailability) ?? true,
|
|
62
|
+
]);
|
|
214
63
|
}
|
package/esm/src/skill/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { parseSkillFileFrontmatter, parseSkillFrontmatter, validateSkillFileMeta
|
|
|
23
23
|
export { listSkillSubdir, validateSkillPath } from "./path-safety.js";
|
|
24
24
|
export { createExecuteSkillScriptTool, createLoadSkillReferenceTool, createLoadSkillTool, } from "./tools.js";
|
|
25
25
|
export { getSkillScriptExecutor } from "./executor.js";
|
|
26
|
-
export { filterToolNamesForSkill, filterToolsForSkill,
|
|
26
|
+
export { filterToolNamesForSkill, filterToolsForSkill, isSkillToolAvailable, } from "./allowed-tools.js";
|
|
27
27
|
export type { ParsedSkillContent } from "./document-parser.js";
|
|
28
28
|
export { parseBoundedSkillDocument } from "./document-parser.js";
|
|
29
29
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/skill/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,kBAAkB,EAClB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,EAChB,4BAA4B,EAC5B,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,+BAA+B,EAC/B,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,oBAAoB,EACzB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/skill/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,yBAAyB,CAAC;AAEjC,YAAY,EACV,kBAAkB,EAClB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,gCAAgC,EAChC,gBAAgB,EAChB,4BAA4B,EAC5B,iBAAiB,EACjB,6BAA6B,EAC7B,0BAA0B,EAC1B,+BAA+B,EAC/B,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,oBAAoB,EACzB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/esm/src/skill/index.js
CHANGED
|
@@ -28,6 +28,6 @@ export { listSkillSubdir, validateSkillPath } from "./path-safety.js";
|
|
|
28
28
|
export { createExecuteSkillScriptTool, createLoadSkillReferenceTool, createLoadSkillTool, } from "./tools.js";
|
|
29
29
|
// Executor
|
|
30
30
|
export { getSkillScriptExecutor } from "./executor.js";
|
|
31
|
-
//
|
|
32
|
-
export { filterToolNamesForSkill, filterToolsForSkill,
|
|
31
|
+
// Skill tool availability
|
|
32
|
+
export { filterToolNamesForSkill, filterToolsForSkill, isSkillToolAvailable, } from "./allowed-tools.js";
|
|
33
33
|
export { parseBoundedSkillDocument } from "./document-parser.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/src/skill/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/src/skill/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAEjG,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AA0D/D;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,2BAA2B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAG7B;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,2BAA2B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CAG7B;AA0ED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,aAAa,CAsFf;AAwKD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,aAAa,CAEf"}
|
package/esm/src/skill/parser.js
CHANGED
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* @module
|
|
7
7
|
*/
|
|
8
8
|
import { createError, toError } from "../errors/index.js";
|
|
9
|
-
import {
|
|
10
|
-
import { validateAllowedToolPatterns, validateStrictAllowedToolPatterns } from "./allowed-tools.js";
|
|
9
|
+
import { isProxyWithoutHooks } from "../platform/compat/error-introspection.js";
|
|
11
10
|
import { SKILL_ALLOWED_TOOL_MAX_PATTERNS, SKILL_ALLOWED_TOOL_PATTERN_MAX_LENGTH, SKILL_ID_MAX_LENGTH, } from "./limits.js";
|
|
12
11
|
import { parseBoundedSkillDocument } from "./document-parser.js";
|
|
13
12
|
import { ensureDefaultSkillDocumentParserContract } from "../extensions/parser/skill-defaults.js";
|
|
@@ -23,10 +22,8 @@ const ownKeys = Reflect.ownKeys;
|
|
|
23
22
|
const NativeRegExp = RegExp;
|
|
24
23
|
const NativeString = String;
|
|
25
24
|
const regExpExec = RegExp.prototype.exec;
|
|
26
|
-
const stringCharAt = String.prototype.charAt;
|
|
27
25
|
const stringCharCodeAt = String.prototype.charCodeAt;
|
|
28
26
|
const stringSlice = String.prototype.slice;
|
|
29
|
-
const stringToLowerCase = String.prototype.toLowerCase;
|
|
30
27
|
const stringTrim = String.prototype.trim;
|
|
31
28
|
// Keep authorization regexes private: the exported compatibility regexes are
|
|
32
29
|
// intentionally mutable inspection values and must not control strict parsing.
|
|
@@ -402,12 +399,10 @@ function parseLegacyAllowedTools(value, skillName) {
|
|
|
402
399
|
}
|
|
403
400
|
if (patterns.length === 0)
|
|
404
401
|
return undefined;
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
throwAllowedToolsValidationError(error, skillName);
|
|
410
|
-
}
|
|
402
|
+
// Patterns are recorded verbatim. `allowed-tools` is pre-approval metadata in the
|
|
403
|
+
// Agent Skills spec, not an authorization boundary, so the runtime does not act on
|
|
404
|
+
// it and must not reject spec-conformant values such as `Bash(git:*)`.
|
|
405
|
+
return patterns;
|
|
411
406
|
}
|
|
412
407
|
function parseLegacyAllowedToolString(value) {
|
|
413
408
|
const patterns = [];
|
|
@@ -526,33 +521,7 @@ function parseStrictAllowedTools(value, skillName) {
|
|
|
526
521
|
push(patterns, pattern);
|
|
527
522
|
}
|
|
528
523
|
}
|
|
529
|
-
|
|
530
|
-
return validateStrictAllowedToolPatterns(patterns);
|
|
531
|
-
}
|
|
532
|
-
catch (error) {
|
|
533
|
-
throwAllowedToolsValidationError(error, skillName);
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
function throwAllowedToolsValidationError(error, skillName) {
|
|
537
|
-
const message = readNativeErrorMessage(error) ?? "Invalid allowed-tools declaration";
|
|
538
|
-
const firstCharacter = apply(stringCharAt, message, [0]);
|
|
539
|
-
const normalizedMessage = firstCharacter
|
|
540
|
-
? `${apply(stringToLowerCase, firstCharacter, [])}${apply(stringSlice, message, [
|
|
541
|
-
1,
|
|
542
|
-
])}`
|
|
543
|
-
: message;
|
|
544
|
-
throw toError(createError({
|
|
545
|
-
type: "agent",
|
|
546
|
-
message: `Skill "${skillName}" has ${normalizedMessage}`,
|
|
547
|
-
}));
|
|
548
|
-
}
|
|
549
|
-
function readNativeErrorMessage(error) {
|
|
550
|
-
if (isProxyWithoutHooks(error) || !isNativeErrorWithoutHooks(error))
|
|
551
|
-
return undefined;
|
|
552
|
-
const descriptor = getOwnPropertyDescriptor(error, "message");
|
|
553
|
-
return descriptor && hasOwn(descriptor, "value") && typeof descriptor.value === "string"
|
|
554
|
-
? descriptor.value
|
|
555
|
-
: undefined;
|
|
524
|
+
return patterns;
|
|
556
525
|
}
|
|
557
526
|
function parseStrictAllowedToolString(value) {
|
|
558
527
|
if (value.length > SKILL_ALLOWED_TOOL_DECLARATION_MAX_LENGTH) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/src/skill/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAoCnE,OAAO,KAAK,EAGV,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AAoCpB,KAAK,wBAAwB,GAAG;IAC9B,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,KAAK,SAAS,MAAM,EAAE,CAAC;CAC3F,CAAC;AA+XF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,wBAA6B,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/src/skill/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAoCnE,OAAO,KAAK,EAGV,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AAoCpB,KAAK,wBAAwB,GAAG;IAC9B,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,KAAK,SAAS,MAAM,EAAE,CAAC;CAC3F,CAAC;AA+XF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,wBAA6B,GAAG,IAAI,CAgEhF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,wBAA6B,GAAG,IAAI,CAsCzF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,mBAAmB,CAAA;CAAE,GAAG,wBAA6B,GAC1E,IAAI,CA0DN"}
|
package/esm/src/skill/tools.js
CHANGED
|
@@ -295,8 +295,8 @@ function assertActiveSkillFileAvailable(input, context) {
|
|
|
295
295
|
export function createLoadSkillTool(options = {}) {
|
|
296
296
|
return tool({
|
|
297
297
|
id: "load_skill",
|
|
298
|
-
description: "Load a skill's full instructions. Returns the skill's markdown instructions
|
|
299
|
-
"
|
|
298
|
+
description: "Load a skill's full instructions. Returns the skill's markdown instructions " +
|
|
299
|
+
"and lists of available reference files and scripts.",
|
|
300
300
|
inputSchema: getLoadSkillInputSchema(),
|
|
301
301
|
execute: async (input, context) => {
|
|
302
302
|
const budget = createFileBudget(context);
|
|
@@ -316,7 +316,6 @@ export function createLoadSkillTool(options = {}) {
|
|
|
316
316
|
return {
|
|
317
317
|
skillId: skill.id,
|
|
318
318
|
instructions: parsed.body,
|
|
319
|
-
...(skill.metadata.allowedTools ? { allowedTools: skill.metadata.allowedTools } : {}),
|
|
320
319
|
references: loadableReferences,
|
|
321
320
|
scripts,
|
|
322
321
|
};
|
package/esm/src/skill/types.d.ts
CHANGED
|
@@ -90,7 +90,6 @@ export interface SkillContent {
|
|
|
90
90
|
/** Markdown instructions (body after frontmatter) */
|
|
91
91
|
instructions: string;
|
|
92
92
|
/** Tool access restrictions from frontmatter */
|
|
93
|
-
allowedTools?: string[];
|
|
94
93
|
/** Available reference file paths */
|
|
95
94
|
references: string[];
|
|
96
95
|
/** Available script file paths */
|
|
@@ -197,9 +196,8 @@ export interface SkillScriptExecutorInput {
|
|
|
197
196
|
export interface SkillScriptExecutor {
|
|
198
197
|
execute(input: SkillScriptExecutorInput): Promise<SkillScriptResult>;
|
|
199
198
|
}
|
|
200
|
-
/** Active skill context for runtime
|
|
199
|
+
/** Active skill context for runtime availability and delegation tracking */
|
|
201
200
|
export interface ActiveSkillContext {
|
|
202
201
|
skillId: string;
|
|
203
|
-
allowedTools?: string[];
|
|
204
202
|
}
|
|
205
203
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/skill/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAoBtE;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAA8C,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAEnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAExC,CAAC;AAEF,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAGhE;AAED,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAGtE;AAED,kEAAkE;AAClE,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAG1E;AAED,wEAAwE;AACxE,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAuBnF;AAQD;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAE5C,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAG9E;AAED,+CAA+C;AAC/C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,oFAAoF;AACpF,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,6BAA6B,MAAM,CAAC;AACjD,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AAErD,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAW5C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAAwC,CAAC;AAEpE,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED,sCAAsC;AACtC,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,gBAAgB,WAAW,CAAC;AACzC,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,gDAM/B,CAAC;AAIF,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/skill/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/src/skill/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/src/skill/validation.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,KAAK,EAQX,MAAM,YAAY,CAAC;AAqPpB;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CA0DxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAyBxD;AAED,mFAAmF;AACnF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EACpC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,KAAK,GACd,IAAI,CAcN"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isAbsolute } from "../platform/compat/path/index.js";
|
|
2
2
|
import { isProxyWithoutHooks } from "../platform/compat/error-introspection.js";
|
|
3
|
-
import {
|
|
4
|
-
import { SKILL_ID_MAX_LENGTH, SKILL_ROOT_PATH_MAX_LENGTH } from "./limits.js";
|
|
3
|
+
import { SKILL_ALLOWED_TOOL_MAX_PATTERNS, SKILL_ALLOWED_TOOL_PATTERN_MAX_LENGTH, SKILL_ID_MAX_LENGTH, SKILL_ROOT_PATH_MAX_LENGTH, } from "./limits.js";
|
|
5
4
|
import { isCanonicalAdapterRelativeSkillRoot, isValidProviderSafeSkillId, SKILL_COMPATIBILITY_MAX_LENGTH, SKILL_DESCRIPTION_MAX_LENGTH, SKILL_LICENSE_MAX_LENGTH, SKILL_METADATA_KEY_MAX_LENGTH, SKILL_METADATA_MAX_ENTRIES, SKILL_METADATA_VALUE_MAX_LENGTH, } from "./types.js";
|
|
6
5
|
import { hasControlCharacters, isWellFormedUtf16 } from "./string-safety.js";
|
|
7
6
|
const apply = Reflect.apply;
|
|
@@ -65,6 +64,29 @@ function optionalBoundedIdentity(value, field, maxLength) {
|
|
|
65
64
|
return undefined;
|
|
66
65
|
return requireBoundedIdentity(value, field, maxLength);
|
|
67
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Validate `allowed-tools` entries as bounded strings.
|
|
69
|
+
*
|
|
70
|
+
* Bounds mirror the strict parser's, so a document rejected there is not
|
|
71
|
+
* silently accepted here.
|
|
72
|
+
*/
|
|
73
|
+
function normalizeAllowedToolEntries(raw) {
|
|
74
|
+
if (raw.length > SKILL_ALLOWED_TOOL_MAX_PATTERNS) {
|
|
75
|
+
throw new NativeTypeError(`Skill metadata allowedTools must not exceed ${SKILL_ALLOWED_TOOL_MAX_PATTERNS} entries`);
|
|
76
|
+
}
|
|
77
|
+
return raw.map((entry) => {
|
|
78
|
+
if (typeof entry !== "string") {
|
|
79
|
+
throw new NativeTypeError("Skill metadata allowedTools entries must be strings");
|
|
80
|
+
}
|
|
81
|
+
if (entry.length > SKILL_ALLOWED_TOOL_PATTERN_MAX_LENGTH) {
|
|
82
|
+
throw new NativeTypeError(`Skill metadata allowedTools entries must not exceed ${SKILL_ALLOWED_TOOL_PATTERN_MAX_LENGTH} characters`);
|
|
83
|
+
}
|
|
84
|
+
if (hasControlCharacters(entry) || !isWellFormedUtf16(entry)) {
|
|
85
|
+
throw new NativeTypeError("Skill metadata allowedTools entries must be printable text");
|
|
86
|
+
}
|
|
87
|
+
return entry;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
68
90
|
function optionalBoundedString(value, field, maxLength) {
|
|
69
91
|
if (value === undefined)
|
|
70
92
|
return undefined;
|
|
@@ -141,9 +163,15 @@ function normalizeSkillMetadata(value) {
|
|
|
141
163
|
if (rawAllowedTools !== undefined && !arrayIsArray(rawAllowedTools)) {
|
|
142
164
|
throw new NativeTypeError("Skill metadata allowedTools must be an array");
|
|
143
165
|
}
|
|
166
|
+
// `allowed-tools` is spec pre-approval metadata the runtime does not enforce,
|
|
167
|
+
// so entries are recorded verbatim rather than matched against a pattern
|
|
168
|
+
// grammar. Not enforcing it is not a reason to stop validating its shape:
|
|
169
|
+
// this value is parsed from untrusted skill files, stored, and surfaced, so
|
|
170
|
+
// it still has to be strings within bounds. Dropping the grammar and dropping
|
|
171
|
+
// the type check are separate decisions, and only the first was intended.
|
|
144
172
|
const allowedTools = rawAllowedTools === undefined
|
|
145
173
|
? undefined
|
|
146
|
-
:
|
|
174
|
+
: Object.freeze(normalizeAllowedToolEntries(rawAllowedTools));
|
|
147
175
|
const license = optionalBoundedString(ownDataValue(value, "license"), "Skill metadata license", SKILL_LICENSE_MAX_LENGTH);
|
|
148
176
|
const compatibility = optionalBoundedString(ownDataValue(value, "compatibility"), "Skill metadata compatibility", SKILL_COMPATIBILITY_MAX_LENGTH);
|
|
149
177
|
const metadata = normalizeStringMetadata(ownDataValue(value, "metadata"));
|
|
@@ -31,6 +31,16 @@ export interface SecurityConfig {
|
|
|
31
31
|
* renderer requires.
|
|
32
32
|
*/
|
|
33
33
|
csp?: Partial<Record<string, string | string[] | null>>;
|
|
34
|
+
/**
|
|
35
|
+
* Origins derived from the project's own released source, merged between the
|
|
36
|
+
* platform floor and `csp`.
|
|
37
|
+
*
|
|
38
|
+
* Platform-owned: `deriveSecurityContext` overwrites whatever a project
|
|
39
|
+
* config carries under this key, because `SecurityConfig` has an index
|
|
40
|
+
* signature and would otherwise let a project declare its own derived layer.
|
|
41
|
+
* Projects extend the policy through `csp`, which is merged on top of this.
|
|
42
|
+
*/
|
|
43
|
+
derivedCsp?: import("../security/http/derived-csp-origins.js").DerivedCspOrigins;
|
|
34
44
|
coop?: "same-origin" | "same-origin-allow-popups" | "unsafe-none";
|
|
35
45
|
corp?: "same-origin" | "same-site" | "cross-origin";
|
|
36
46
|
coep?: "require-corp" | "unsafe-none";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/src/types/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/src/types/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,13 @@ export declare function isBoundedCorsOriginList(values: readonly unknown[]): val
|
|
|
18
18
|
export declare function isBoundedCorsToken(value: unknown): value is string;
|
|
19
19
|
export declare function isBoundedCorsTokenList(values: readonly unknown[]): values is readonly string[];
|
|
20
20
|
export declare function isValidCorsMaxAge(value: unknown): value is number;
|
|
21
|
-
/**
|
|
22
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Whether a response header is reserved for the dedicated CORS policy layer.
|
|
23
|
+
*
|
|
24
|
+
* Returns a plain boolean rather than a `value is string` predicate: the
|
|
25
|
+
* narrowing that predicate implied was wrong in the negative branch, where it
|
|
26
|
+
* told the compiler a non-matching value was not a string at all, collapsing
|
|
27
|
+
* an ordinary header name to `never`.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isCorsPolicyResponseHeaderName(value: unknown): boolean;
|
|
23
30
|
//# sourceMappingURL=cors-policy-limits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors-policy-limits.d.ts","sourceRoot":"","sources":["../../../src/src/utils/cors-policy-limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,gBAAgB,QAA0B,CAAC;AAExD,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,QAAmC,CAAC;AAoBnE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAI/F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAKlE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAI9F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAKjE;AAED
|
|
1
|
+
{"version":3,"file":"cors-policy-limits.d.ts","sourceRoot":"","sources":["../../../src/src/utils/cors-policy-limits.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,+BAA+B,OAAO,CAAC;AACpD,eAAO,MAAM,gBAAgB,QAA0B,CAAC;AAExD,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,QAAmC,CAAC;AAoBnE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAMnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAI/F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAKlE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAI9F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAKjE;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAItE"}
|
|
@@ -64,7 +64,14 @@ export function isValidCorsMaxAge(value) {
|
|
|
64
64
|
value >= 0 &&
|
|
65
65
|
value <= MAX_CORS_MAX_AGE;
|
|
66
66
|
}
|
|
67
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Whether a response header is reserved for the dedicated CORS policy layer.
|
|
69
|
+
*
|
|
70
|
+
* Returns a plain boolean rather than a `value is string` predicate: the
|
|
71
|
+
* narrowing that predicate implied was wrong in the negative branch, where it
|
|
72
|
+
* told the compiler a non-matching value was not a string at all, collapsing
|
|
73
|
+
* an ordinary header name to `never`.
|
|
74
|
+
*/
|
|
68
75
|
export function isCorsPolicyResponseHeaderName(value) {
|
|
69
76
|
return typeof value === "string" &&
|
|
70
77
|
value.slice(0, CORS_POLICY_RESPONSE_HEADER_PREFIX.length).toLowerCase() ===
|
|
@@ -52,7 +52,7 @@ export declare const api: {
|
|
|
52
52
|
cursor?: string;
|
|
53
53
|
limit?: number;
|
|
54
54
|
pattern?: string;
|
|
55
|
-
}) => Promise<import("../platform/adapters/
|
|
55
|
+
}) => Promise<import("../platform/adapters/index.js").FileListResult>;
|
|
56
56
|
/**
|
|
57
57
|
* List all files in the project (handles pagination automatically)
|
|
58
58
|
*/
|
|
@@ -72,7 +72,7 @@ export declare const api: {
|
|
|
72
72
|
* Get file details (content + metadata)
|
|
73
73
|
* @param pathOrId - File path or ID
|
|
74
74
|
*/
|
|
75
|
-
get: (pathOrId: string) => Promise<import("../platform/adapters/
|
|
75
|
+
get: (pathOrId: string) => Promise<import("../platform/adapters/index.js").FileDetail>;
|
|
76
76
|
/**
|
|
77
77
|
* Search for files matching a pattern
|
|
78
78
|
* @param pattern - Search pattern (glob-like)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1215",
|
|
4
4
|
"description": "The simplest way to build AI-powered apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -421,13 +421,13 @@
|
|
|
421
421
|
"@deno/shim-crypto": "0.3.1",
|
|
422
422
|
"@types/react": "19.2.14",
|
|
423
423
|
"@types/react-dom": "19.2.3",
|
|
424
|
-
"@veryfront/ext-bundler-esbuild": "0.1.
|
|
425
|
-
"@veryfront/ext-content-mdx": "0.1.
|
|
426
|
-
"@veryfront/ext-css-tailwind": "0.1.
|
|
427
|
-
"@veryfront/ext-dev-ui-react": "0.1.
|
|
428
|
-
"@veryfront/ext-node-websocket-ws": "0.1.
|
|
429
|
-
"@veryfront/ext-parser-babel": "0.1.
|
|
430
|
-
"@veryfront/ext-yaml": "0.1.
|
|
424
|
+
"@veryfront/ext-bundler-esbuild": "0.1.1215",
|
|
425
|
+
"@veryfront/ext-content-mdx": "0.1.1215",
|
|
426
|
+
"@veryfront/ext-css-tailwind": "0.1.1215",
|
|
427
|
+
"@veryfront/ext-dev-ui-react": "0.1.1215",
|
|
428
|
+
"@veryfront/ext-node-websocket-ws": "0.1.1215",
|
|
429
|
+
"@veryfront/ext-parser-babel": "0.1.1215",
|
|
430
|
+
"@veryfront/ext-yaml": "0.1.1215"
|
|
431
431
|
},
|
|
432
432
|
"devDependencies": {
|
|
433
433
|
"@types/node": "20.9.0"
|