veryfront 0.1.772 → 0.1.774
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 -1
- package/esm/src/agent/runtime/skill-policy-enforcement.d.ts +4 -0
- package/esm/src/agent/runtime/skill-policy-enforcement.d.ts.map +1 -1
- package/esm/src/agent/runtime/skill-policy-enforcement.js +35 -1
- 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, } 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,10 +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
|
}
|
|
485
|
+
activeSkillPolicy = removeFormInputAfterSubmission(tc.toolName, result, activeSkillId, activeSkillPolicy);
|
|
483
486
|
const toolResultMessage = createToolResultMessage(tc.toolCallId, tc.toolName, result);
|
|
484
487
|
currentMessages.push(toolResultMessage);
|
|
485
488
|
await this.memory.add(toolResultMessage);
|
|
@@ -529,6 +532,7 @@ export class AgentRuntime {
|
|
|
529
532
|
}
|
|
530
533
|
// Request-scoped skill policy (not class-level mutable state)
|
|
531
534
|
const hydratedSkillState = hydrateActiveSkillStateFromMessages(currentMessages);
|
|
535
|
+
let activeSkillId = hydratedSkillState.activeSkillId;
|
|
532
536
|
let activeSkillPolicy = hydratedSkillState.activeSkillPolicy;
|
|
533
537
|
let activeSkillDelegationOverrides = hydratedSkillState.activeSkillDelegationOverrides;
|
|
534
538
|
let finalFinishReason;
|
|
@@ -780,10 +784,12 @@ export class AgentRuntime {
|
|
|
780
784
|
toolCalls.push(toolCall);
|
|
781
785
|
// Track skill policy from load_skill results
|
|
782
786
|
if (tc.name === LOAD_SKILL_TOOL_ID) {
|
|
787
|
+
activeSkillId = extractSkillId(result);
|
|
783
788
|
activeSkillPolicy = extractSkillPolicy(result);
|
|
784
789
|
activeSkillDelegationOverrides = extractSkillDelegationOverrides(result);
|
|
785
790
|
mustLoadSkillFirst = false;
|
|
786
791
|
}
|
|
792
|
+
activeSkillPolicy = removeFormInputAfterSubmission(tc.name, result, activeSkillId, activeSkillPolicy);
|
|
787
793
|
const dynamic = isDynamicTool(tc.name);
|
|
788
794
|
sendSSE(controller, encoder, {
|
|
789
795
|
type: "tool-output-available",
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { Message } from "../types.js";
|
|
2
2
|
import { type SkillDelegationOverrides } from "./skill-delegation-overrides.js";
|
|
3
3
|
export declare const LOAD_SKILL_TOOL_ID = "load_skill";
|
|
4
|
+
export declare const FORM_INPUT_TOOL_ID = "form_input";
|
|
4
5
|
export declare function hydrateActiveSkillStateFromMessages(messages: readonly Message[]): {
|
|
6
|
+
activeSkillId: string | undefined;
|
|
5
7
|
activeSkillPolicy: string[] | undefined;
|
|
6
8
|
activeSkillDelegationOverrides: SkillDelegationOverrides | undefined;
|
|
7
9
|
};
|
|
10
|
+
export declare function extractSkillId(result: unknown): string | undefined;
|
|
8
11
|
export declare function extractSkillPolicy(result: unknown): string[] | undefined;
|
|
12
|
+
export declare function removeFormInputAfterSubmission(toolName: string, result: unknown, activeSkillId: string | undefined, activeSkillPolicy: string[] | undefined): string[] | undefined;
|
|
9
13
|
export type SkillPolicyResult = {
|
|
10
14
|
allowed: true;
|
|
11
15
|
} | {
|
|
@@ -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;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,CA+BtB;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"}
|
|
@@ -4,22 +4,31 @@ import { isToolResultPart } from "./tool-result-continuation.js";
|
|
|
4
4
|
import { extractSkillDelegationOverrides, } from "./skill-delegation-overrides.js";
|
|
5
5
|
const logger = serverLogger.component("agent");
|
|
6
6
|
export const LOAD_SKILL_TOOL_ID = "load_skill";
|
|
7
|
+
export const FORM_INPUT_TOOL_ID = "form_input";
|
|
7
8
|
function getSkillActivationRequiredError(toolName) {
|
|
8
9
|
return `Tool "${toolName}" cannot run before load_skill succeeds in the same step. ` +
|
|
9
10
|
`Call "${LOAD_SKILL_TOOL_ID}" first to establish the active skill context.`;
|
|
10
11
|
}
|
|
11
12
|
export function hydrateActiveSkillStateFromMessages(messages) {
|
|
13
|
+
let activeSkillId;
|
|
12
14
|
let activeSkillPolicy;
|
|
13
15
|
let activeSkillDelegationOverrides;
|
|
14
16
|
for (const message of messages) {
|
|
15
17
|
for (const part of message.parts) {
|
|
16
18
|
if (!isToolResultPart(part) || part.toolName !== LOAD_SKILL_TOOL_ID)
|
|
17
19
|
continue;
|
|
20
|
+
activeSkillId = extractSkillId(part.result);
|
|
18
21
|
activeSkillPolicy = extractSkillPolicy(part.result);
|
|
19
22
|
activeSkillDelegationOverrides = extractSkillDelegationOverrides(part.result);
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
|
-
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;
|
|
23
32
|
}
|
|
24
33
|
export function extractSkillPolicy(result) {
|
|
25
34
|
if (!result || typeof result !== "object")
|
|
@@ -41,6 +50,31 @@ export function extractSkillPolicy(result) {
|
|
|
41
50
|
return [];
|
|
42
51
|
}
|
|
43
52
|
}
|
|
53
|
+
function isSubmittedFormInputResult(result) {
|
|
54
|
+
return Boolean(result) && typeof result === "object" &&
|
|
55
|
+
result.submitted === true;
|
|
56
|
+
}
|
|
57
|
+
export function removeFormInputAfterSubmission(toolName, result, activeSkillId, activeSkillPolicy) {
|
|
58
|
+
if (toolName !== FORM_INPUT_TOOL_ID || !isSubmittedFormInputResult(result) ||
|
|
59
|
+
activeSkillPolicy === undefined) {
|
|
60
|
+
return activeSkillPolicy;
|
|
61
|
+
}
|
|
62
|
+
if (activeSkillId === "research") {
|
|
63
|
+
return activeSkillPolicy.filter((allowedToolName) => [
|
|
64
|
+
"studio_suggestions",
|
|
65
|
+
"web_search",
|
|
66
|
+
"web_fetch",
|
|
67
|
+
"create_file",
|
|
68
|
+
"update_file",
|
|
69
|
+
].includes(allowedToolName));
|
|
70
|
+
}
|
|
71
|
+
if (activeSkillId === "plan" ||
|
|
72
|
+
activeSkillId === "create-agent" ||
|
|
73
|
+
activeSkillId === "create-agentic-workflow") {
|
|
74
|
+
return activeSkillPolicy.filter((allowedToolName) => ["studio_suggestions", "create_file", "update_file"].includes(allowedToolName));
|
|
75
|
+
}
|
|
76
|
+
return activeSkillPolicy.filter((allowedToolName) => allowedToolName !== FORM_INPUT_TOOL_ID);
|
|
77
|
+
}
|
|
44
78
|
export function enforceSkillPolicy(toolName, activeSkillPolicy, mustLoadSkillFirst) {
|
|
45
79
|
if (mustLoadSkillFirst && toolName !== LOAD_SKILL_TOOL_ID) {
|
|
46
80
|
return { allowed: false, error: getSkillActivationRequiredError(toolName) };
|