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.
Files changed (126) hide show
  1. package/esm/deno.js +1 -1
  2. package/esm/src/agent/conversation/delegation-policy.d.ts +1 -3
  3. package/esm/src/agent/conversation/delegation-policy.d.ts.map +1 -1
  4. package/esm/src/agent/conversation/delegation-policy.js +1 -3
  5. package/esm/src/agent/index.d.ts +1 -1
  6. package/esm/src/agent/index.d.ts.map +1 -1
  7. package/esm/src/agent/index.js +1 -1
  8. package/esm/src/agent/runtime/agent-loop-skill-state.d.ts +10 -12
  9. package/esm/src/agent/runtime/agent-loop-skill-state.d.ts.map +1 -1
  10. package/esm/src/agent/runtime/agent-loop-skill-state.js +11 -17
  11. package/esm/src/agent/runtime/agent-runtime-step.d.ts +0 -1
  12. package/esm/src/agent/runtime/agent-runtime-step.d.ts.map +1 -1
  13. package/esm/src/agent/runtime/agent-runtime-step.js +2 -2
  14. package/esm/src/agent/runtime/index.d.ts +1 -1
  15. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  16. package/esm/src/agent/runtime/index.js +7 -13
  17. package/esm/src/agent/runtime/load-skill-tool.d.ts +2 -2
  18. package/esm/src/agent/runtime/load-skill-tool.d.ts.map +1 -1
  19. package/esm/src/agent/runtime/load-skill-tool.js +12 -68
  20. package/esm/src/agent/runtime/project-skill-catalog.d.ts.map +1 -1
  21. package/esm/src/agent/runtime/project-skill-catalog.js +1 -6
  22. package/esm/src/agent/runtime/skill-metadata.d.ts +4 -18
  23. package/esm/src/agent/runtime/skill-metadata.d.ts.map +1 -1
  24. package/esm/src/agent/runtime/skill-metadata.js +17 -78
  25. package/esm/src/agent/runtime/skill-policy-enforcement.d.ts +1 -5
  26. package/esm/src/agent/runtime/skill-policy-enforcement.d.ts.map +1 -1
  27. package/esm/src/agent/runtime/skill-policy-enforcement.js +12 -55
  28. package/esm/src/agent/runtime/skill-prompt.d.ts +2 -2
  29. package/esm/src/agent/runtime/skill-prompt.d.ts.map +1 -1
  30. package/esm/src/agent/runtime/skill-prompt.js +8 -44
  31. package/esm/src/html/hydration-script-builder/hydration-runtime.generated.js +1 -1
  32. package/esm/src/platform/adapters/index.d.ts +25 -0
  33. package/esm/src/platform/adapters/index.d.ts.map +1 -0
  34. package/esm/src/platform/adapters/index.js +23 -0
  35. package/esm/src/platform/adapters/security/index.d.ts +8 -0
  36. package/esm/src/platform/adapters/security/index.d.ts.map +1 -0
  37. package/esm/src/platform/adapters/security/index.js +7 -0
  38. package/esm/src/platform/adapters/token/factory.d.ts +10 -0
  39. package/esm/src/platform/adapters/token/factory.d.ts.map +1 -0
  40. package/esm/src/platform/adapters/token/factory.js +79 -0
  41. package/esm/src/platform/adapters/token/index.d.ts +9 -0
  42. package/esm/src/platform/adapters/token/index.d.ts.map +1 -0
  43. package/esm/src/platform/adapters/token/index.js +8 -0
  44. package/esm/src/platform/adapters/token/integration.d.ts +6 -0
  45. package/esm/src/platform/adapters/token/integration.d.ts.map +1 -0
  46. package/esm/src/platform/adapters/token/integration.js +61 -0
  47. package/esm/src/platform/adapters/token/veryfront/adapter.d.ts +22 -0
  48. package/esm/src/platform/adapters/token/veryfront/adapter.d.ts.map +1 -0
  49. package/esm/src/platform/adapters/token/veryfront/adapter.js +88 -0
  50. package/esm/src/platform/adapters/token/veryfront/api-client.d.ts +15 -0
  51. package/esm/src/platform/adapters/token/veryfront/api-client.d.ts.map +1 -0
  52. package/esm/src/platform/adapters/token/veryfront/api-client.js +212 -0
  53. package/esm/src/platform/adapters/token/veryfront/index.d.ts +10 -0
  54. package/esm/src/platform/adapters/token/veryfront/index.d.ts.map +1 -0
  55. package/esm/src/platform/adapters/token/veryfront/index.js +9 -0
  56. package/esm/src/platform/adapters/token/veryfront/memory-adapter.d.ts +20 -0
  57. package/esm/src/platform/adapters/token/veryfront/memory-adapter.d.ts.map +1 -0
  58. package/esm/src/platform/adapters/token/veryfront/memory-adapter.js +52 -0
  59. package/esm/src/platform/adapters/token/veryfront/types.d.ts +86 -0
  60. package/esm/src/platform/adapters/token/veryfront/types.d.ts.map +1 -0
  61. package/esm/src/platform/adapters/token/veryfront/types.js +81 -0
  62. package/esm/src/platform/compat/http/pinned-fetch.d.ts +1 -1
  63. package/esm/src/proxy/handler.d.ts.map +1 -1
  64. package/esm/src/proxy/handler.js +17 -1
  65. package/esm/src/security/http/auth.d.ts.map +1 -1
  66. package/esm/src/security/http/auth.js +7 -0
  67. package/esm/src/security/http/config.d.ts +5 -0
  68. package/esm/src/security/http/config.d.ts.map +1 -1
  69. package/esm/src/security/http/config.js +16 -1
  70. package/esm/src/security/http/csp-report-endpoint.d.ts +29 -0
  71. package/esm/src/security/http/csp-report-endpoint.d.ts.map +1 -0
  72. package/esm/src/security/http/csp-report-endpoint.js +30 -0
  73. package/esm/src/security/http/csrf/csrf-handler.d.ts.map +1 -1
  74. package/esm/src/security/http/csrf/csrf-handler.js +6 -0
  75. package/esm/src/security/http/derived-csp-cache.d.ts +33 -0
  76. package/esm/src/security/http/derived-csp-cache.d.ts.map +1 -0
  77. package/esm/src/security/http/derived-csp-cache.js +101 -0
  78. package/esm/src/security/http/derived-csp-origins.d.ts +54 -0
  79. package/esm/src/security/http/derived-csp-origins.d.ts.map +1 -0
  80. package/esm/src/security/http/derived-csp-origins.js +156 -0
  81. package/esm/src/security/http/response/security-handler.d.ts +1 -2
  82. package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
  83. package/esm/src/security/http/response/security-handler.js +25 -9
  84. package/esm/src/security/sandbox/constants.d.ts +3 -0
  85. package/esm/src/security/sandbox/constants.d.ts.map +1 -0
  86. package/esm/src/security/sandbox/constants.js +2 -0
  87. package/esm/src/security/sandbox/deno-sandbox.d.ts +71 -0
  88. package/esm/src/security/sandbox/deno-sandbox.d.ts.map +1 -0
  89. package/esm/src/security/sandbox/deno-sandbox.js +184 -0
  90. package/esm/src/security/sandbox/permission-system.d.ts +11 -0
  91. package/esm/src/security/sandbox/permission-system.d.ts.map +1 -0
  92. package/esm/src/security/sandbox/permission-system.js +85 -0
  93. package/esm/src/server/handlers/request/csp-report.handler.d.ts +56 -0
  94. package/esm/src/server/handlers/request/csp-report.handler.d.ts.map +1 -0
  95. package/esm/src/server/handlers/request/csp-report.handler.js +189 -0
  96. package/esm/src/server/runtime-handler/index.d.ts +1 -1
  97. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  98. package/esm/src/server/runtime-handler/index.js +3 -0
  99. package/esm/src/server/runtime-handler/project-runtime-context.d.ts.map +1 -1
  100. package/esm/src/server/runtime-handler/project-runtime-context.js +97 -1
  101. package/esm/src/server/utils/domain-parser.d.ts +9 -0
  102. package/esm/src/server/utils/domain-parser.d.ts.map +1 -1
  103. package/esm/src/server/utils/domain-parser.js +11 -0
  104. package/esm/src/skill/allowed-tools.d.ts +18 -42
  105. package/esm/src/skill/allowed-tools.d.ts.map +1 -1
  106. package/esm/src/skill/allowed-tools.js +31 -182
  107. package/esm/src/skill/index.d.ts +1 -1
  108. package/esm/src/skill/index.d.ts.map +1 -1
  109. package/esm/src/skill/index.js +2 -2
  110. package/esm/src/skill/parser.d.ts.map +1 -1
  111. package/esm/src/skill/parser.js +6 -37
  112. package/esm/src/skill/tools.d.ts.map +1 -1
  113. package/esm/src/skill/tools.js +2 -3
  114. package/esm/src/skill/types.d.ts +1 -3
  115. package/esm/src/skill/types.d.ts.map +1 -1
  116. package/esm/src/skill/validation.d.ts.map +1 -1
  117. package/esm/src/skill/validation.js +31 -3
  118. package/esm/src/types/server.d.ts +10 -0
  119. package/esm/src/types/server.d.ts.map +1 -1
  120. package/esm/src/utils/cors-policy-limits.d.ts +9 -2
  121. package/esm/src/utils/cors-policy-limits.d.ts.map +1 -1
  122. package/esm/src/utils/cors-policy-limits.js +8 -1
  123. package/esm/src/utils/version-constant.d.ts +1 -1
  124. package/esm/src/utils/version-constant.js +1 -1
  125. package/esm/src/workflow/api.d.ts +2 -2
  126. package/package.json +8 -8
@@ -1,37 +1,23 @@
1
1
  /**
2
- * Allowed-Tools Enforcement
2
+ * Skill Tool Availability
3
3
  *
4
- * Dual-layer enforcement for skill tool access restrictions.
5
- * Layer 1: Filter tool definitions before sending to model (planning-time)
6
- * Layer 2: Check individual tool calls at execution time
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, isValidSkillAllowedToolPattern } from "./types.js";
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
- * Layer 1: Filter tool definitions before sending to model.
37
+ * Filter tool definitions before sending them to the model.
88
38
  *
89
- * Removes tools not in the allowed list. `load_skill` remains available for
90
- * skill navigation. File-backed skill tools also require an advertised file.
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 allowedTools - Allowed tool patterns, or undefined for no restrictions
43
+ * @param skillToolAvailability - Files the active skill advertises
94
44
  * @returns Filtered tool definitions
95
45
  */
96
- export function filterToolsForSkill(tools, allowedTools, skillToolAvailability) {
97
- if (allowedTools === undefined) {
98
- if (!skillToolAvailability) {
99
- return tools;
100
- }
101
- return apply(arrayFilter, tools, [(tool) => {
102
- const skillToolAllowed = isSkillInfrastructureToolAllowed(tool.name, skillToolAvailability);
103
- return skillToolAllowed ?? true;
104
- }]);
105
- }
106
- const capturedAllowedTools = captureProgrammaticAllowedToolPatterns(allowedTools);
107
- return apply(arrayFilter, tools, [(tool) => isToolAllowedByCapturedPolicy(tool.name, capturedAllowedTools, skillToolAvailability)]);
108
- }
109
- /**
110
- * Layer 2: Check if a specific tool call is allowed at execution time.
111
- *
112
- * @param toolName - Name of the tool being called
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
  }
@@ -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, isToolAllowedBySkill, snapshotAllowedToolPatterns, validateAllowedToolPatterns, validateStrictAllowedToolPatterns, } from "./allowed-tools.js";
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,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,iCAAiC,GAClC,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
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"}
@@ -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
- // Allowed-Tools
32
- export { filterToolNamesForSkill, filterToolsForSkill, isToolAllowedBySkill, snapshotAllowedToolPatterns, validateAllowedToolPatterns, validateStrictAllowedToolPatterns, } from "./allowed-tools.js";
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;AAaH,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;AA4D/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"}
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"}
@@ -6,8 +6,7 @@
6
6
  * @module
7
7
  */
8
8
  import { createError, toError } from "../errors/index.js";
9
- import { isNativeErrorWithoutHooks, isProxyWithoutHooks, } from "../platform/compat/error-introspection.js";
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
- try {
406
- return validateAllowedToolPatterns(patterns);
407
- }
408
- catch (error) {
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
- try {
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,CAiEhF;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"}
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"}
@@ -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
- "allowed tools policy, and lists of available reference files and scripts.",
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
  };
@@ -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 policy tracking */
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":"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"}
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,qCAAqC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kCAAkC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,gCAAgC;AAChC,MAAM,WAAW,KAAK;IACpB,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACpD;AAED,oCAAoC;AACpC,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtE;AAED,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/src/skill/validation.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,KAAK,EAQX,MAAM,YAAY,CAAC;AAmNpB;;;;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
+ {"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 { snapshotAllowedToolPatterns } from "./allowed-tools.js";
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
- : snapshotAllowedToolPatterns(rawAllowedTools);
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
- /** Whether a response header is reserved for the dedicated CORS policy layer. */
22
- export declare function isCorsPolicyResponseHeaderName(value: unknown): value is string;
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,iFAAiF;AACjF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAI9E"}
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
- /** Whether a response header is reserved for the dedicated CORS policy layer. */
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() ===
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.1213";
2
+ export declare const VERSION = "0.1.1215";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.1213";
4
+ export const VERSION = "0.1.1215";
@@ -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/veryfront-api-client/operations.js").FileListResult>;
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/veryfront-api-client/operations.js").FileDetail>;
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.1213",
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.1213",
425
- "@veryfront/ext-content-mdx": "0.1.1213",
426
- "@veryfront/ext-css-tailwind": "0.1.1213",
427
- "@veryfront/ext-dev-ui-react": "0.1.1213",
428
- "@veryfront/ext-node-websocket-ws": "0.1.1213",
429
- "@veryfront/ext-parser-babel": "0.1.1213",
430
- "@veryfront/ext-yaml": "0.1.1213"
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"