veryfront 0.1.773 → 0.1.775
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/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +7 -3
- package/esm/src/agent/runtime/load-skill-tool.d.ts.map +1 -1
- package/esm/src/agent/runtime/load-skill-tool.js +2 -1
- package/esm/src/agent/runtime/skill-policy-enforcement.d.ts +4 -1
- package/esm/src/agent/runtime/skill-policy-enforcement.d.ts.map +1 -1
- package/esm/src/agent/runtime/skill-policy-enforcement.js +29 -2
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +1 -1
package/esm/deno.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,aAAa,EAGlB,KAAK,OAAO,EAGZ,KAAK,QAAQ,EAGd,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAqB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ import { tryGetCacheKeyContext } from "../../cache/cache-key-builder.js";
|
|
|
28
28
|
import { isLocalModelRuntime } from "../../provider/runtime-inspection.js";
|
|
29
29
|
import { generateText, streamText } from "../../runtime/runtime-bridge.js";
|
|
30
30
|
import { captureStreamedToolCallInput, collectFinalStreamToolResults, collectGeneratedToolResults, createToolErrorMessage, createToolResultMessage, getProviderExecutedToolNames, getToolResultError, isRecoverablePlaceholderToolCall, isStreamedToolCallIncomplete, materializeStreamedToolCall, shouldContinueAfterStreamStep, } from "./tool-result-continuation.js";
|
|
31
|
-
import { enforceSkillPolicy, extractSkillPolicy, hydrateActiveSkillStateFromMessages, LOAD_SKILL_TOOL_ID, removeFormInputAfterSubmission, } from "./skill-policy-enforcement.js";
|
|
31
|
+
import { enforceSkillPolicy, extractSkillId, extractSkillPolicy, hydrateActiveSkillStateFromMessages, LOAD_SKILL_TOOL_ID, removeFormInputAfterSubmission, } from "./skill-policy-enforcement.js";
|
|
32
32
|
import { getRuntimeAllowedRemoteTools, getRuntimeForwardedIntegrationToolDefs, getRuntimeProviderTools, } from "./runtime-tool-config.js";
|
|
33
33
|
// Re-export from submodules
|
|
34
34
|
export { closeSSEStream, generateMessageId, sendSSE } from "./sse-utils.js";
|
|
@@ -305,6 +305,7 @@ export class AgentRuntime {
|
|
|
305
305
|
}
|
|
306
306
|
// Request-scoped skill policy (not class-level mutable state)
|
|
307
307
|
const hydratedSkillState = hydrateActiveSkillStateFromMessages(currentMessages);
|
|
308
|
+
let activeSkillId = hydratedSkillState.activeSkillId;
|
|
308
309
|
let activeSkillPolicy = hydratedSkillState.activeSkillPolicy;
|
|
309
310
|
let activeSkillDelegationOverrides = hydratedSkillState.activeSkillDelegationOverrides;
|
|
310
311
|
const allowedRemoteToolNames = getRuntimeAllowedRemoteTools(this.config);
|
|
@@ -476,11 +477,12 @@ export class AgentRuntime {
|
|
|
476
477
|
toolCall.executionTime = Date.now() - startTime;
|
|
477
478
|
// Track skill policy from load_skill results
|
|
478
479
|
if (tc.toolName === LOAD_SKILL_TOOL_ID) {
|
|
480
|
+
activeSkillId = extractSkillId(result);
|
|
479
481
|
activeSkillPolicy = extractSkillPolicy(result);
|
|
480
482
|
activeSkillDelegationOverrides = extractSkillDelegationOverrides(result);
|
|
481
483
|
mustLoadSkillFirst = false;
|
|
482
484
|
}
|
|
483
|
-
activeSkillPolicy = removeFormInputAfterSubmission(tc.toolName, result, activeSkillPolicy);
|
|
485
|
+
activeSkillPolicy = removeFormInputAfterSubmission(tc.toolName, result, activeSkillId, activeSkillPolicy);
|
|
484
486
|
const toolResultMessage = createToolResultMessage(tc.toolCallId, tc.toolName, result);
|
|
485
487
|
currentMessages.push(toolResultMessage);
|
|
486
488
|
await this.memory.add(toolResultMessage);
|
|
@@ -530,6 +532,7 @@ export class AgentRuntime {
|
|
|
530
532
|
}
|
|
531
533
|
// Request-scoped skill policy (not class-level mutable state)
|
|
532
534
|
const hydratedSkillState = hydrateActiveSkillStateFromMessages(currentMessages);
|
|
535
|
+
let activeSkillId = hydratedSkillState.activeSkillId;
|
|
533
536
|
let activeSkillPolicy = hydratedSkillState.activeSkillPolicy;
|
|
534
537
|
let activeSkillDelegationOverrides = hydratedSkillState.activeSkillDelegationOverrides;
|
|
535
538
|
let finalFinishReason;
|
|
@@ -781,11 +784,12 @@ export class AgentRuntime {
|
|
|
781
784
|
toolCalls.push(toolCall);
|
|
782
785
|
// Track skill policy from load_skill results
|
|
783
786
|
if (tc.name === LOAD_SKILL_TOOL_ID) {
|
|
787
|
+
activeSkillId = extractSkillId(result);
|
|
784
788
|
activeSkillPolicy = extractSkillPolicy(result);
|
|
785
789
|
activeSkillDelegationOverrides = extractSkillDelegationOverrides(result);
|
|
786
790
|
mustLoadSkillFirst = false;
|
|
787
791
|
}
|
|
788
|
-
activeSkillPolicy = removeFormInputAfterSubmission(tc.name, result, activeSkillPolicy);
|
|
792
|
+
activeSkillPolicy = removeFormInputAfterSubmission(tc.name, result, activeSkillId, activeSkillPolicy);
|
|
789
793
|
const dynamic = isDynamicTool(tc.name);
|
|
790
794
|
sendSSE(controller, encoder, {
|
|
791
795
|
type: "tool-output-available",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-skill-tool.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/load-skill-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAchD,OAAO,KAAK,EAEV,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"load-skill-tool.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/load-skill-tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAchD,OAAO,KAAK,EAEV,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAChC,MAAM,qBAAqB,CAAC;AAG7B,yDAAyD;AACzD,eAAO,MAAM,oCAAoC,2mBACqP,CAAC;AAEvS,mDAAmD;AACnD,eAAO,MAAM,8BAA8B,unBAC0a,CAAC;AAatd,2CAA2C;AAC3C,MAAM,MAAM,2BAA2B,GAAG,0BAA0B,GAAG;IACrE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;CACnE,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjG,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CAClE,CAAC;AAEF,gEAAgE;AAChE,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAEvF,mDAAmD;AACnD,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,2BAA2B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACxC,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;GAS9C,CAAC;AAKF,iDAAiD;AACjD,MAAM,MAAM,yBAAyB,GAAG,WAAW,CACjD,UAAU,CAAC,OAAO,kCAAkC,CAAC,CACtD,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,mCAAmC,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,0BAA0B,GAClC,0BAA0B,GAC1B,mCAAmC,GACnC,2BAA2B,CAAC;AA+KhC,sCAAsC;AACtC,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,GACnC,IAAI,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CA6C7D"}
|
|
@@ -3,6 +3,7 @@ import { tool } from "../../tool/index.js";
|
|
|
3
3
|
import { LOAD_SKILL_CONTINUE_SAME_TURN, LOAD_SKILL_DELEGATION_THRESHOLD, LOAD_SKILL_OVERRIDE_FORWARDING, LOAD_SKILL_ROOT_OWNERSHIP, LOAD_SKILL_TOOL_INTERSECTION, LOAD_SKILL_USE_ALLOWED_TOOLS, } from "../conversation/delegation-policy.js";
|
|
4
4
|
import { listRuntimeBuiltinSkillReferences, readRuntimeBuiltinSkill, readRuntimeBuiltinSkillReferenceFile, } from "./builtin-skill-files.js";
|
|
5
5
|
import { buildRuntimeLoadedSkillResponse, normalizeRuntimeSkillReferencePath, } from "./skill-metadata.js";
|
|
6
|
+
import { narrowPolicyAfterSubmittedForm } from "./skill-policy-enforcement.js";
|
|
6
7
|
/** Shared runtime load skill continuation note value. */
|
|
7
8
|
export const RUNTIME_LOAD_SKILL_CONTINUATION_NOTE = `IMPORTANT: load_skill only loads instructions. It does not perform the task or finish the turn. ${LOAD_SKILL_CONTINUE_SAME_TURN} ${LOAD_SKILL_ROOT_OWNERSHIP} ${LOAD_SKILL_USE_ALLOWED_TOOLS} ${LOAD_SKILL_DELEGATION_THRESHOLD} ${LOAD_SKILL_OVERRIDE_FORWARDING} ${LOAD_SKILL_TOOL_INTERSECTION}`;
|
|
8
9
|
/** Shared runtime load skill description value. */
|
|
@@ -56,7 +57,7 @@ function buildLoadedSkillResponse(input) {
|
|
|
56
57
|
});
|
|
57
58
|
}
|
|
58
59
|
function buildAlreadyLoadedSkillResponse(skillId, response) {
|
|
59
|
-
const finishAllowedTools = response.allowedTools
|
|
60
|
+
const finishAllowedTools = narrowPolicyAfterSubmittedForm(skillId, response.allowedTools);
|
|
60
61
|
return {
|
|
61
62
|
...response,
|
|
62
63
|
instructions: `Skill "${skillId}" is already loaded in this turn. Do not call load_skill for "${skillId}" again. ` +
|
|
@@ -3,11 +3,14 @@ import { type SkillDelegationOverrides } from "./skill-delegation-overrides.js";
|
|
|
3
3
|
export declare const LOAD_SKILL_TOOL_ID = "load_skill";
|
|
4
4
|
export declare const FORM_INPUT_TOOL_ID = "form_input";
|
|
5
5
|
export declare function hydrateActiveSkillStateFromMessages(messages: readonly Message[]): {
|
|
6
|
+
activeSkillId: string | undefined;
|
|
6
7
|
activeSkillPolicy: string[] | undefined;
|
|
7
8
|
activeSkillDelegationOverrides: SkillDelegationOverrides | undefined;
|
|
8
9
|
};
|
|
10
|
+
export declare function extractSkillId(result: unknown): string | undefined;
|
|
9
11
|
export declare function extractSkillPolicy(result: unknown): string[] | undefined;
|
|
10
|
-
export declare function removeFormInputAfterSubmission(toolName: string, result: unknown, activeSkillPolicy: string[] | undefined): string[] | undefined;
|
|
12
|
+
export declare function removeFormInputAfterSubmission(toolName: string, result: unknown, activeSkillId: string | undefined, activeSkillPolicy: string[] | undefined): string[] | undefined;
|
|
13
|
+
export declare function narrowPolicyAfterSubmittedForm(activeSkillId: string | undefined, activeSkillPolicy: string[] | undefined): string[] | undefined;
|
|
11
14
|
export type SkillPolicyResult = {
|
|
12
15
|
allowed: true;
|
|
13
16
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-policy-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/skill-policy-enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAO/C,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B;IACD,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,8BAA8B,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACtE,
|
|
1
|
+
{"version":3,"file":"skill-policy-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/skill-policy-enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAO/C,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B;IACD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,8BAA8B,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACtE,CAeA;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIlE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAyBxE;AAOD,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,GACtC,MAAM,EAAE,GAAG,SAAS,CAStB;AAED,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,GACtC,MAAM,EAAE,GAAG,SAAS,CA0BtB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EAAE,GAAG,SAAS,EACvC,kBAAkB,EAAE,OAAO,GAC1B,iBAAiB,CAenB"}
|
|
@@ -10,17 +10,25 @@ function getSkillActivationRequiredError(toolName) {
|
|
|
10
10
|
`Call "${LOAD_SKILL_TOOL_ID}" first to establish the active skill context.`;
|
|
11
11
|
}
|
|
12
12
|
export function hydrateActiveSkillStateFromMessages(messages) {
|
|
13
|
+
let activeSkillId;
|
|
13
14
|
let activeSkillPolicy;
|
|
14
15
|
let activeSkillDelegationOverrides;
|
|
15
16
|
for (const message of messages) {
|
|
16
17
|
for (const part of message.parts) {
|
|
17
18
|
if (!isToolResultPart(part) || part.toolName !== LOAD_SKILL_TOOL_ID)
|
|
18
19
|
continue;
|
|
20
|
+
activeSkillId = extractSkillId(part.result);
|
|
19
21
|
activeSkillPolicy = extractSkillPolicy(part.result);
|
|
20
22
|
activeSkillDelegationOverrides = extractSkillDelegationOverrides(part.result);
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
|
-
return { activeSkillPolicy, activeSkillDelegationOverrides };
|
|
25
|
+
return { activeSkillId, activeSkillPolicy, activeSkillDelegationOverrides };
|
|
26
|
+
}
|
|
27
|
+
export function extractSkillId(result) {
|
|
28
|
+
if (!result || typeof result !== "object")
|
|
29
|
+
return undefined;
|
|
30
|
+
const skillResult = result;
|
|
31
|
+
return typeof skillResult.skillId === "string" ? skillResult.skillId : undefined;
|
|
24
32
|
}
|
|
25
33
|
export function extractSkillPolicy(result) {
|
|
26
34
|
if (!result || typeof result !== "object")
|
|
@@ -46,11 +54,30 @@ function isSubmittedFormInputResult(result) {
|
|
|
46
54
|
return Boolean(result) && typeof result === "object" &&
|
|
47
55
|
result.submitted === true;
|
|
48
56
|
}
|
|
49
|
-
export function removeFormInputAfterSubmission(toolName, result, activeSkillPolicy) {
|
|
57
|
+
export function removeFormInputAfterSubmission(toolName, result, activeSkillId, activeSkillPolicy) {
|
|
50
58
|
if (toolName !== FORM_INPUT_TOOL_ID || !isSubmittedFormInputResult(result) ||
|
|
51
59
|
activeSkillPolicy === undefined) {
|
|
52
60
|
return activeSkillPolicy;
|
|
53
61
|
}
|
|
62
|
+
return narrowPolicyAfterSubmittedForm(activeSkillId, activeSkillPolicy);
|
|
63
|
+
}
|
|
64
|
+
export function narrowPolicyAfterSubmittedForm(activeSkillId, activeSkillPolicy) {
|
|
65
|
+
if (!activeSkillPolicy)
|
|
66
|
+
return activeSkillPolicy;
|
|
67
|
+
if (activeSkillId === "research") {
|
|
68
|
+
return activeSkillPolicy.filter((allowedToolName) => [
|
|
69
|
+
"studio_suggestions",
|
|
70
|
+
"web_search",
|
|
71
|
+
"web_fetch",
|
|
72
|
+
"create_file",
|
|
73
|
+
"update_file",
|
|
74
|
+
].includes(allowedToolName));
|
|
75
|
+
}
|
|
76
|
+
if (activeSkillId === "plan" ||
|
|
77
|
+
activeSkillId === "create-agent" ||
|
|
78
|
+
activeSkillId === "create-agentic-workflow") {
|
|
79
|
+
return activeSkillPolicy.filter((allowedToolName) => ["studio_suggestions", "create_file", "update_file"].includes(allowedToolName));
|
|
80
|
+
}
|
|
54
81
|
return activeSkillPolicy.filter((allowedToolName) => allowedToolName !== FORM_INPUT_TOOL_ID);
|
|
55
82
|
}
|
|
56
83
|
export function enforceSkillPolicy(toolName, activeSkillPolicy, mustLoadSkillFirst) {
|