gauss-ts 2.0.17 → 2.0.18
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/README.md +15 -3
- package/dist/{agent-C2MGEbbY.d.ts → agent-B9C7z5Fk.d.ts} +43 -2
- package/dist/{agent-DsZps_X8.d.cts → agent-DAT86jB2.d.cts} +43 -2
- package/dist/agent.cjs +3 -3
- package/dist/agent.cjs.map +1 -1
- package/dist/agent.d.cts +2 -2
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -2
- package/dist/agent.js.map +1 -1
- package/dist/index.cjs +20 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +20 -20
- package/dist/index.js.map +1 -1
- package/dist/{orchestration-YJcl8EST.d.cts → orchestration-C_xbjpE4.d.cts} +1 -1
- package/dist/{orchestration-DhJLWFxN.d.ts → orchestration-Dt0o-mv8.d.ts} +1 -1
- package/dist/orchestration.cjs +4 -4
- package/dist/orchestration.cjs.map +1 -1
- package/dist/orchestration.d.cts +2 -2
- package/dist/orchestration.d.ts +2 -2
- package/dist/orchestration.js +3 -3
- package/dist/orchestration.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -201,22 +201,34 @@ const routed = c.withRoutingContext({
|
|
|
201
201
|
});
|
|
202
202
|
|
|
203
203
|
// Apply built-in enterprise governance packs
|
|
204
|
-
import {
|
|
204
|
+
import {
|
|
205
|
+
applyGovernancePack,
|
|
206
|
+
evaluatePolicyDiff,
|
|
207
|
+
evaluatePolicyRolloutGuardrails,
|
|
208
|
+
explainRoutingTarget,
|
|
209
|
+
} from "gauss-ts";
|
|
205
210
|
const hardenedPolicy = applyGovernancePack(
|
|
206
211
|
{ fallbackOrder: ["anthropic", "openai"] },
|
|
207
212
|
"balanced-mix",
|
|
208
213
|
);
|
|
214
|
+
const rolloutPolicy = applyGovernancePack(hardenedPolicy, "rollout-canary");
|
|
209
215
|
|
|
210
216
|
const explanation = explainRoutingTarget(
|
|
211
|
-
|
|
217
|
+
rolloutPolicy,
|
|
212
218
|
"openai",
|
|
213
219
|
"gpt-5.2",
|
|
214
|
-
{ currentHourUtc: 11, governanceTags: ["balanced"] },
|
|
220
|
+
{ currentHourUtc: 11, governanceTags: ["balanced", "rollout"] },
|
|
215
221
|
);
|
|
216
222
|
console.log(explanation.decision?.selectedBy); // "direct" | "alias:..." | "fallback:..."
|
|
217
223
|
|
|
224
|
+
// Rollout diff + guardrails (regression-aware)
|
|
225
|
+
// const diff = evaluatePolicyDiff(rolloutPolicy, scenarios);
|
|
226
|
+
// const rolloutGate = evaluatePolicyRolloutGuardrails(diff, { maxRegressions: 0, minCandidatePassRate: 0.95 });
|
|
227
|
+
|
|
218
228
|
// CI-friendly policy gate summary (fails with exit code 1 when scenarios fail)
|
|
219
229
|
// npm run policy:gate -- ./scenarios.json ./policy.json
|
|
230
|
+
// Optional rollout guardrails (diff + thresholds):
|
|
231
|
+
// npm run policy:gate -- ./scenarios.json ./candidate-policy.json ./baseline-policy.json ./guardrails.json
|
|
220
232
|
```
|
|
221
233
|
|
|
222
234
|
### Unified Control Plane (M51 foundation)
|
|
@@ -20,8 +20,13 @@ type GovernanceRule = {
|
|
|
20
20
|
};
|
|
21
21
|
interface GovernancePolicyPack {
|
|
22
22
|
rules: GovernanceRule[];
|
|
23
|
+
maxTotalCostUsd?: number;
|
|
24
|
+
maxRequestsPerMinute?: number;
|
|
25
|
+
allowedHoursUtc?: number[];
|
|
26
|
+
providerWeights?: Partial<Record<ProviderType, number>>;
|
|
27
|
+
fallbackOrder?: ProviderType[];
|
|
23
28
|
}
|
|
24
|
-
type GovernancePackName = "enterprise-strict" | "eu-residency" | "cost-guarded" | "ops-business-hours" | "balanced-mix";
|
|
29
|
+
type GovernancePackName = "enterprise-strict" | "eu-residency" | "cost-guarded" | "ops-business-hours" | "balanced-mix" | "rollout-canary" | "rollout-strict";
|
|
25
30
|
interface RoutingPolicy {
|
|
26
31
|
aliases?: Record<string, RoutingCandidate[]>;
|
|
27
32
|
fallbackOrder?: ProviderType[];
|
|
@@ -60,6 +65,40 @@ interface PolicyGateSummary {
|
|
|
60
65
|
failedIndexes: number[];
|
|
61
66
|
results: RoutingDecisionExplanation[];
|
|
62
67
|
}
|
|
68
|
+
interface PolicyDiffResult {
|
|
69
|
+
index: number;
|
|
70
|
+
input: {
|
|
71
|
+
provider: ProviderType;
|
|
72
|
+
model: string;
|
|
73
|
+
};
|
|
74
|
+
baseline: RoutingDecisionExplanation;
|
|
75
|
+
candidate: RoutingDecisionExplanation;
|
|
76
|
+
changed: boolean;
|
|
77
|
+
}
|
|
78
|
+
interface PolicyDiffSummary {
|
|
79
|
+
total: number;
|
|
80
|
+
baselinePassed: number;
|
|
81
|
+
candidatePassed: number;
|
|
82
|
+
changed: number;
|
|
83
|
+
regressions: number;
|
|
84
|
+
results: PolicyDiffResult[];
|
|
85
|
+
}
|
|
86
|
+
interface PolicyRolloutGuardrails {
|
|
87
|
+
maxChanged?: number;
|
|
88
|
+
maxRegressions?: number;
|
|
89
|
+
minCandidatePassRate?: number;
|
|
90
|
+
}
|
|
91
|
+
type PolicyRolloutCheckName = "changed_budget" | "regression_budget" | "candidate_pass_rate";
|
|
92
|
+
interface PolicyRolloutCheck {
|
|
93
|
+
check: PolicyRolloutCheckName;
|
|
94
|
+
status: "passed" | "failed";
|
|
95
|
+
detail: string;
|
|
96
|
+
}
|
|
97
|
+
interface PolicyRolloutGateResult {
|
|
98
|
+
ok: boolean;
|
|
99
|
+
checks: PolicyRolloutCheck[];
|
|
100
|
+
error?: string;
|
|
101
|
+
}
|
|
63
102
|
interface ResolveRoutingTargetOptions {
|
|
64
103
|
availableProviders?: ProviderType[];
|
|
65
104
|
estimatedCostUsd?: number;
|
|
@@ -77,6 +116,8 @@ declare function resolveFallbackProvider(policy: RoutingPolicy | undefined, avai
|
|
|
77
116
|
declare function resolveRoutingTarget(policy: RoutingPolicy | undefined, provider: ProviderType, model: string, options?: ResolveRoutingTargetOptions): ResolvedRoutingTarget;
|
|
78
117
|
declare function explainRoutingTarget(policy: RoutingPolicy | undefined, provider: ProviderType, model: string, options?: ResolveRoutingTargetOptions): RoutingDecisionExplanation;
|
|
79
118
|
declare function evaluatePolicyGate(policy: RoutingPolicy | undefined, scenarios: PolicyGateScenario[]): PolicyGateSummary;
|
|
119
|
+
declare function evaluatePolicyDiff(candidatePolicy: RoutingPolicy | undefined, scenarios: PolicyGateScenario[], baselinePolicy?: RoutingPolicy | undefined): PolicyDiffSummary;
|
|
120
|
+
declare function evaluatePolicyRolloutGuardrails(diff: PolicyDiffSummary, guardrails?: PolicyRolloutGuardrails): PolicyRolloutGateResult;
|
|
80
121
|
|
|
81
122
|
/**
|
|
82
123
|
* A single event emitted during agent streaming.
|
|
@@ -934,4 +975,4 @@ declare class Agent implements Disposable {
|
|
|
934
975
|
*/
|
|
935
976
|
declare function gauss(prompt: string, config?: Omit<AgentConfig, "name">): Promise<string>;
|
|
936
977
|
|
|
937
|
-
export { type AgentConfig as A,
|
|
978
|
+
export { type AgentConfig as A, evaluatePolicyDiff as B, evaluatePolicyGate as C, evaluatePolicyRolloutGuardrails as D, explainRoutingTarget as E, gauss as F, type GovernancePackName as G, governancePolicyPack as H, isTypedTool as I, resolveFallbackProvider as J, resolveRoutingTarget as K, tool as L, McpClient as M, type PolicyDiffResult as P, type RoutingPolicy as R, type StreamEvent as S, type TypedToolDef as T, Agent as a, AgentStream as b, type GovernancePolicyPack as c, type GovernanceRule as d, type McpClientConfig as e, type McpToolDef as f, type McpToolResult as g, type PolicyDiffSummary as h, type PolicyGateScenario as i, type PolicyGateSummary as j, type PolicyRolloutCheck as k, type PolicyRolloutCheckName as l, type PolicyRolloutGateResult as m, type PolicyRolloutGuardrails as n, type ResolveRoutingTargetOptions as o, type ResolvedRoutingTarget as p, type RoutingCandidate as q, type RoutingDecisionExplanation as r, type RoutingExplainCheck as s, type RoutingExplainCheckName as t, applyGovernancePack as u, createToolExecutor as v, enforceRoutingCostLimit as w, enforceRoutingGovernance as x, enforceRoutingRateLimit as y, enforceRoutingTimeWindow as z };
|
|
@@ -20,8 +20,13 @@ type GovernanceRule = {
|
|
|
20
20
|
};
|
|
21
21
|
interface GovernancePolicyPack {
|
|
22
22
|
rules: GovernanceRule[];
|
|
23
|
+
maxTotalCostUsd?: number;
|
|
24
|
+
maxRequestsPerMinute?: number;
|
|
25
|
+
allowedHoursUtc?: number[];
|
|
26
|
+
providerWeights?: Partial<Record<ProviderType, number>>;
|
|
27
|
+
fallbackOrder?: ProviderType[];
|
|
23
28
|
}
|
|
24
|
-
type GovernancePackName = "enterprise-strict" | "eu-residency" | "cost-guarded" | "ops-business-hours" | "balanced-mix";
|
|
29
|
+
type GovernancePackName = "enterprise-strict" | "eu-residency" | "cost-guarded" | "ops-business-hours" | "balanced-mix" | "rollout-canary" | "rollout-strict";
|
|
25
30
|
interface RoutingPolicy {
|
|
26
31
|
aliases?: Record<string, RoutingCandidate[]>;
|
|
27
32
|
fallbackOrder?: ProviderType[];
|
|
@@ -60,6 +65,40 @@ interface PolicyGateSummary {
|
|
|
60
65
|
failedIndexes: number[];
|
|
61
66
|
results: RoutingDecisionExplanation[];
|
|
62
67
|
}
|
|
68
|
+
interface PolicyDiffResult {
|
|
69
|
+
index: number;
|
|
70
|
+
input: {
|
|
71
|
+
provider: ProviderType;
|
|
72
|
+
model: string;
|
|
73
|
+
};
|
|
74
|
+
baseline: RoutingDecisionExplanation;
|
|
75
|
+
candidate: RoutingDecisionExplanation;
|
|
76
|
+
changed: boolean;
|
|
77
|
+
}
|
|
78
|
+
interface PolicyDiffSummary {
|
|
79
|
+
total: number;
|
|
80
|
+
baselinePassed: number;
|
|
81
|
+
candidatePassed: number;
|
|
82
|
+
changed: number;
|
|
83
|
+
regressions: number;
|
|
84
|
+
results: PolicyDiffResult[];
|
|
85
|
+
}
|
|
86
|
+
interface PolicyRolloutGuardrails {
|
|
87
|
+
maxChanged?: number;
|
|
88
|
+
maxRegressions?: number;
|
|
89
|
+
minCandidatePassRate?: number;
|
|
90
|
+
}
|
|
91
|
+
type PolicyRolloutCheckName = "changed_budget" | "regression_budget" | "candidate_pass_rate";
|
|
92
|
+
interface PolicyRolloutCheck {
|
|
93
|
+
check: PolicyRolloutCheckName;
|
|
94
|
+
status: "passed" | "failed";
|
|
95
|
+
detail: string;
|
|
96
|
+
}
|
|
97
|
+
interface PolicyRolloutGateResult {
|
|
98
|
+
ok: boolean;
|
|
99
|
+
checks: PolicyRolloutCheck[];
|
|
100
|
+
error?: string;
|
|
101
|
+
}
|
|
63
102
|
interface ResolveRoutingTargetOptions {
|
|
64
103
|
availableProviders?: ProviderType[];
|
|
65
104
|
estimatedCostUsd?: number;
|
|
@@ -77,6 +116,8 @@ declare function resolveFallbackProvider(policy: RoutingPolicy | undefined, avai
|
|
|
77
116
|
declare function resolveRoutingTarget(policy: RoutingPolicy | undefined, provider: ProviderType, model: string, options?: ResolveRoutingTargetOptions): ResolvedRoutingTarget;
|
|
78
117
|
declare function explainRoutingTarget(policy: RoutingPolicy | undefined, provider: ProviderType, model: string, options?: ResolveRoutingTargetOptions): RoutingDecisionExplanation;
|
|
79
118
|
declare function evaluatePolicyGate(policy: RoutingPolicy | undefined, scenarios: PolicyGateScenario[]): PolicyGateSummary;
|
|
119
|
+
declare function evaluatePolicyDiff(candidatePolicy: RoutingPolicy | undefined, scenarios: PolicyGateScenario[], baselinePolicy?: RoutingPolicy | undefined): PolicyDiffSummary;
|
|
120
|
+
declare function evaluatePolicyRolloutGuardrails(diff: PolicyDiffSummary, guardrails?: PolicyRolloutGuardrails): PolicyRolloutGateResult;
|
|
80
121
|
|
|
81
122
|
/**
|
|
82
123
|
* A single event emitted during agent streaming.
|
|
@@ -934,4 +975,4 @@ declare class Agent implements Disposable {
|
|
|
934
975
|
*/
|
|
935
976
|
declare function gauss(prompt: string, config?: Omit<AgentConfig, "name">): Promise<string>;
|
|
936
977
|
|
|
937
|
-
export { type AgentConfig as A,
|
|
978
|
+
export { type AgentConfig as A, evaluatePolicyDiff as B, evaluatePolicyGate as C, evaluatePolicyRolloutGuardrails as D, explainRoutingTarget as E, gauss as F, type GovernancePackName as G, governancePolicyPack as H, isTypedTool as I, resolveFallbackProvider as J, resolveRoutingTarget as K, tool as L, McpClient as M, type PolicyDiffResult as P, type RoutingPolicy as R, type StreamEvent as S, type TypedToolDef as T, Agent as a, AgentStream as b, type GovernancePolicyPack as c, type GovernanceRule as d, type McpClientConfig as e, type McpToolDef as f, type McpToolResult as g, type PolicyDiffSummary as h, type PolicyGateScenario as i, type PolicyGateSummary as j, type PolicyRolloutCheck as k, type PolicyRolloutCheckName as l, type PolicyRolloutGateResult as m, type PolicyRolloutGuardrails as n, type ResolveRoutingTargetOptions as o, type ResolvedRoutingTarget as p, type RoutingCandidate as q, type RoutingDecisionExplanation as r, type RoutingExplainCheck as s, type RoutingExplainCheckName as t, applyGovernancePack as u, createToolExecutor as v, enforceRoutingCostLimit as w, enforceRoutingGovernance as x, enforceRoutingRateLimit as y, enforceRoutingTimeWindow as z };
|
package/dist/agent.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var R=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var j=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})},Y=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of L(e))!$.call(r,n)&&n!==t&&R(r,n,{get:()=>e[n],enumerable:!(o=K(e,n))||o.enumerable});return r};var F=r=>Y(R({},"__esModule",{value:!0}),r);var ae={};j(ae,{Agent:()=>h,AgentStream:()=>y,availableRuntimes:()=>U,batch:()=>G,executeCode:()=>N,gauss:()=>S,generateImage:()=>H,version:()=>w.version});module.exports=F(ae);var l=require("gauss-napi");var E=class extends Error{code;constructor(e,t){super(t),this.name="GaussError",this.code=e}},f=class extends E{resourceType;resourceName;constructor(e,t){super("RESOURCE_DISPOSED",`${e} "${t}" has been destroyed. Create a new instance.`),this.name="DisposedError",this.resourceType=e,this.resourceName=t}};var b="gpt-5.2";var W="claude-sonnet-4-20250514";var B="gemini-2.5-flash";var J="openai/gpt-5.2",X="deepseek-chat";var V="meta-llama/Llama-3.3-70B-Instruct-Turbo",z="accounts/fireworks/models/llama-v3p1-70b-instruct",Q="mistral-large-latest",Z="sonar-pro",ee="grok-3-beta",C={openai:b,anthropic:W,google:B,openrouter:J,deepseek:X,groq:"llama-3.3-70b-versatile",ollama:"llama3.2",together:V,fireworks:z,mistral:Q,perplexity:Z,xai:ee};var te={openai:"OPENAI_API_KEY",anthropic:"ANTHROPIC_API_KEY",google:"GOOGLE_API_KEY",groq:"GROQ_API_KEY",deepseek:"DEEPSEEK_API_KEY",openrouter:"OPENROUTER_API_KEY",together:"TOGETHER_API_KEY",fireworks:"FIREWORKS_API_KEY",mistral:"MISTRAL_API_KEY",perplexity:"PERPLEXITY_API_KEY",xai:"XAI_API_KEY",ollama:""};function x(r){let e=te[r]??"";return e?(typeof process<"u"?process.env[e]:"")??"":""}function _(){let r=[{env:"OPENAI_API_KEY",provider:"openai"},{env:"ANTHROPIC_API_KEY",provider:"anthropic"},{env:"GOOGLE_API_KEY",provider:"google"},{env:"GROQ_API_KEY",provider:"groq"},{env:"DEEPSEEK_API_KEY",provider:"deepseek"},{env:"OPENROUTER_API_KEY",provider:"openrouter"},{env:"TOGETHER_API_KEY",provider:"together"},{env:"FIREWORKS_API_KEY",provider:"fireworks"},{env:"MISTRAL_API_KEY",provider:"mistral"},{env:"PERPLEXITY_API_KEY",provider:"perplexity"},{env:"XAI_API_KEY",provider:"xai"}];for(let{env:e,provider:t}of r)if(typeof process<"u"&&process.env[e])return{provider:t,model:C[t]}}function re(r,e){if(r?.maxTotalCostUsd!==void 0&&e>r.maxTotalCostUsd)throw new Error(`routing policy rejected cost ${e}`)}function oe(r,e){if(r?.maxRequestsPerMinute!==void 0&&e>r.maxRequestsPerMinute)throw new Error(`routing policy rejected rate ${e}`)}function ne(r,e){let t=r?.allowedHoursUtc;if(!(!t||t.length===0)&&(!Number.isInteger(e)||e<0||e>23||!t.includes(e)))throw new Error(`routing policy rejected hour ${e}`)}function T(r,e,t){let o=r?.governance?.rules??[];if(o.length===0)return;let n=o.filter(s=>s.type==="allow_provider").map(s=>s.provider);if(n.length>0&&!n.includes(e))throw new Error(`routing policy governance rejected provider ${e}`);for(let s of o){if(s.type==="deny_provider"&&s.provider===e)throw new Error(`routing policy governance rejected provider ${e}`);if(s.type==="require_tag"&&t!==void 0&&!t.includes(s.tag))throw new Error(`routing policy governance missing tag ${s.tag}`)}}function se(r,e){let t=r?.fallbackOrder;if(!t||t.length===0||e.length===0)return null;let o=new Set(e);for(let n of t)if(o.has(n))return n;return null}function k(r,e,t,o={}){let n=o.governanceTags,s=o.currentHourUtc??new Date().getUTCHours();ne(r,s),o.estimatedCostUsd!==void 0&&re(r,o.estimatedCostUsd),o.currentRequestsPerMinute!==void 0&&oe(r,o.currentRequestsPerMinute);let i=c=>c.length===1?c[0]:[...c].sort((m,g)=>{let v=r?.providerWeights?.[g.provider]??0,u=r?.providerWeights?.[m.provider]??0;return v!==u?v-u:(g.priority??0)-(m.priority??0)})[0],a=r?.aliases?.[t];if(a&&a.length>0){let c=[...a].sort((u,q)=>(q.priority??0)-(u.priority??0)),m=o.availableProviders;if(!m||m.length===0){let u=i(c);return T(r,u.provider,n),{provider:u.provider,model:u.model,selectedBy:`alias:${t}`}}let g=new Set(m),v=c.filter(u=>g.has(u.provider));if(v.length>0){let u=i(v);return T(r,u.provider,n),{provider:u.provider,model:u.model,selectedBy:`alias:${t}`}}}let d=se(r,o.availableProviders??[]);return d&&d!==e?(T(r,d,n),{provider:d,model:t,selectedBy:`fallback:${d}`}):(T(r,e,n),{provider:e,model:t,selectedBy:"direct"})}var O=require("gauss-napi");function ie(r){return{...r,citations:r.citations?.map(e=>({type:e.citationType??e.type,citedText:e.citedText,documentTitle:e.documentTitle,start:e.start,end:e.end}))}}var y=class{constructor(e,t,o,n,s,i){this.agentName=e;this.providerHandle=t;this.tools=o;this.messages=n;this.options=s;this.toolExecutor=i}_result;get result(){return this._result}async*[Symbol.asyncIterator](){let e=[],t,o=!1,n=i=>{try{e.push(JSON.parse(i))}catch{e.push({type:"raw",text:i})}t?.()},s=(0,O.agent_stream_with_tool_executor)(this.agentName,this.providerHandle,this.tools,this.messages,this.options,n,this.toolExecutor).then(i=>{this._result=ie(i),o=!0,t?.()});for(;!o||e.length>0;)e.length>0?yield e.shift():o||await new Promise(i=>{t=i});await s}};function A(r){return{name:r.name,description:r.description,parameters:r.parameters,execute:r.execute}}function I(r){return typeof r.execute=="function"}function D(r,e){let t=new Map(r.map(o=>[o.name,o]));return async o=>{let n;try{n=JSON.parse(o)}catch{return JSON.stringify({error:"Invalid tool call JSON"})}let s=n.tool??n.name??"",i=t.get(s);if(!i)return e?e(o):JSON.stringify({error:`Unknown tool: ${s}`});try{let a=n.args??n.arguments??{},d=await i.execute(a);return typeof d=="string"?d:JSON.stringify(d)}catch(a){let d=a instanceof Error?a.message:String(a);return JSON.stringify({error:`Tool "${s}" failed: ${d}`})}}}function P(r){return{...r,citations:r.citations?.map(e=>({type:e.citationType??e.type??"unknown",citedText:e.citedText,documentTitle:e.documentTitle,start:e.start,end:e.end}))}}var h=class r{providerHandle;_name;_requestedProvider;_requestedModel;_provider;_model;_routingPolicy;_providerOptions;_instructions;_tools=[];_options={};disposed=!1;_middleware=null;_guardrails=null;_memory=null;_sessionId="";_mcpClients=[];_mcpToolsLoaded=!1;constructor(e={}){let t=_(),o=e.provider??t?.provider??"openai",n=e.model??t?.model??b;this._requestedProvider=o,this._requestedModel=n,this._routingPolicy=e.routingPolicy;let s=k(this._routingPolicy,o,n);this._provider=s.provider,this._model=s.model,this._name=e.name??"agent",this._instructions=e.instructions??"";let i=e.providerOptions?.apiKey??x(this._provider);this._providerOptions={apiKey:i,...e.providerOptions},this.providerHandle=(0,l.create_provider)(this._provider,this._model,this._providerOptions),e.tools&&(this._tools=[...e.tools]),e.middleware&&(this._middleware=e.middleware),e.guardrails&&(this._guardrails=e.guardrails),e.memory&&(this._memory=e.memory),e.sessionId&&(this._sessionId=e.sessionId),e.mcpClients&&(this._mcpClients=[...e.mcpClients]);let a=e.codeExecution,d=a===!0?{python:!0,javascript:!0,bash:!0}:a||void 0;this._options={instructions:this._instructions||void 0,temperature:e.temperature,maxSteps:e.maxSteps,topP:e.topP,maxTokens:e.maxTokens,seed:e.seed,stopOnTool:e.stopOnTool,outputSchema:e.outputSchema,thinkingBudget:e.thinkingBudget,reasoningEffort:e.reasoningEffort,cacheControl:e.cacheControl,codeExecution:d,grounding:e.grounding,nativeCodeExecution:e.nativeCodeExecution,responseModalities:e.responseModalities}}static fromEnv(e={}){return new r(e)}get name(){return this._name}get provider(){return this._provider}get model(){return this._model}get instructions(){return this._instructions}get handle(){return this.providerHandle}get capabilities(){return(0,l.get_provider_capabilities)(this.providerHandle)}addTool(e){return this._tools.push(e),this}addTools(e){return this._tools.push(...e),this}withTool(e,t,o,n){return this._tools.push(A({name:e,description:t,parameters:n??{},execute:o})),this}setOptions(e){return this._options={...this._options,...e},this}withModel(e){return this.assertNotDisposed(),new r({...this.toConfig(),model:e})}withRoutingContext(e){this.assertNotDisposed();let t=k(this._routingPolicy,this._requestedProvider,this._requestedModel,e);return new r({...this.toConfig(),provider:t.provider,model:t.model})}withMiddleware(e){return this._middleware=e,this}withGuardrails(e){return this._guardrails=e,this}withMemory(e,t){return this._memory=e,t&&(this._sessionId=t),this}useMcpServer(e){return this._mcpClients.push(e),this._mcpToolsLoaded=!1,this}async run(e){this.assertNotDisposed(),await this.ensureMcpTools();let t=typeof e=="string"?[{role:"user",content:e}]:[...e];if(this._memory){let i=await this._memory.recall(this._sessionId?{sessionId:this._sessionId}:void 0);i.length>0&&(t=[{role:"system",content:`Previous context:
|
|
2
2
|
${i.map(d=>d.content).join(`
|
|
3
|
-
`)}`},...t])}let{toolDefs:o,executor:n}=this.resolveToolsAndExecutor(),s;if(n?s=
|
|
4
|
-
`);await this._memory.store({id:`${Date.now()}-user`,content:i,entryType:"conversation",timestamp:new Date().toISOString(),sessionId:this._sessionId||void 0}),await this._memory.store({id:`${Date.now()}-assistant`,content:s.text,entryType:"conversation",timestamp:new Date().toISOString(),sessionId:this._sessionId||void 0})}return s}async runWithTools(e,t){this.assertNotDisposed(),await this.ensureMcpTools();let o=typeof e=="string"?[{role:"user",content:e}]:e,{toolDefs:n,executor:s}=this.resolveToolsAndExecutor(),i=async a=>{if(s){let d=await s(a);if(!JSON.parse(d).error?.startsWith("Unknown tool:"))return d}return t(a)};return
|
|
3
|
+
`)}`},...t])}let{toolDefs:o,executor:n}=this.resolveToolsAndExecutor(),s;if(n?s=P(await(0,l.agent_run_with_tool_executor)(this._name,this.providerHandle,o,t,this._options,n)):s=P(await(0,l.agent_run)(this._name,this.providerHandle,o,t,this._options)),this._memory){let i=typeof e=="string"?e:e.map(a=>a.content).join(`
|
|
4
|
+
`);await this._memory.store({id:`${Date.now()}-user`,content:i,entryType:"conversation",timestamp:new Date().toISOString(),sessionId:this._sessionId||void 0}),await this._memory.store({id:`${Date.now()}-assistant`,content:s.text,entryType:"conversation",timestamp:new Date().toISOString(),sessionId:this._sessionId||void 0})}return s}async runWithTools(e,t){this.assertNotDisposed(),await this.ensureMcpTools();let o=typeof e=="string"?[{role:"user",content:e}]:e,{toolDefs:n,executor:s}=this.resolveToolsAndExecutor(),i=async a=>{if(s){let d=await s(a);if(!JSON.parse(d).error?.startsWith("Unknown tool:"))return d}return t(a)};return P(await(0,l.agent_run_with_tool_executor)(this._name,this.providerHandle,n,o,this._options,i))}async stream(e,t,o){this.assertNotDisposed(),await this.ensureMcpTools();let n=typeof e=="string"?[{role:"user",content:e}]:e,{toolDefs:s,executor:i}=this.resolveToolsAndExecutor(),a=o??i??M;return P(await(0,l.agent_stream_with_tool_executor)(this._name,this.providerHandle,s,n,this._options,t,a))}streamIter(e,t){this.assertNotDisposed();let o=typeof e=="string"?[{role:"user",content:e}]:e,{toolDefs:n,executor:s}=this.resolveToolsAndExecutor(),i=t??s??M;return new y(this._name,this.providerHandle,n,o,this._options,i)}async streamText(e,t,o){this.assertNotDisposed();let n=this.streamIter(e,o),s="";for await(let i of n){if(i.type!=="text_delta")continue;let a=typeof i.text=="string"?i.text:typeof i.delta=="string"?i.delta:"";a&&(s+=a,t?.(a))}return n.result?.text??s}async generate(e,t){this.assertNotDisposed();let o=typeof e=="string"?[{role:"user",content:e}]:e;return(0,l.generate)(this.providerHandle,o,t?.temperature,t?.maxTokens)}async generateWithTools(e,t,o){this.assertNotDisposed();let n=typeof e=="string"?[{role:"user",content:e}]:e;return(0,l.generate_with_tools)(this.providerHandle,n,t,o?.temperature,o?.maxTokens)}destroy(){if(!this.disposed){this.disposed=!0;for(let e of this._mcpClients)try{e.close()}catch{}try{(0,l.destroy_provider)(this.providerHandle)}catch{}}}[Symbol.dispose](){this.destroy()}assertNotDisposed(){if(this.disposed)throw new f("Agent",this._name)}resolveToolsAndExecutor(){let e=this._tools.filter(I),t=this._tools.map(n=>({name:n.name,description:n.description,parameters:n.parameters})),o=e.length>0?D(e):null;return{toolDefs:t,executor:o}}async ensureMcpTools(){if(!(this._mcpToolsLoaded||this._mcpClients.length===0)){for(let e of this._mcpClients){let{tools:t,executor:o}=await e.getToolsWithExecutor();for(let n of t){let s={...n,execute:async i=>{let a=JSON.stringify({tool:n.name,args:i}),d=await o(a);return JSON.parse(d)}};this._tools.push(s)}}this._mcpToolsLoaded=!0}}toConfig(){return{name:this._name,provider:this._requestedProvider,model:this._requestedModel,routingPolicy:this._routingPolicy,providerOptions:{...this._providerOptions},instructions:this._instructions||void 0,tools:[...this._tools],middleware:this._middleware??void 0,guardrails:this._guardrails??void 0,memory:this._memory??void 0,sessionId:this._sessionId||void 0,mcpClients:[...this._mcpClients],temperature:this._options.temperature,maxSteps:this._options.maxSteps,topP:this._options.topP,maxTokens:this._options.maxTokens,seed:this._options.seed,stopOnTool:this._options.stopOnTool,outputSchema:this._options.outputSchema,thinkingBudget:this._options.thinkingBudget,reasoningEffort:this._options.reasoningEffort,cacheControl:this._options.cacheControl,codeExecution:this._options.codeExecution,grounding:this._options.grounding,nativeCodeExecution:this._options.nativeCodeExecution,responseModalities:this._options.responseModalities}}},M=async()=>"{}";async function S(r,e){let t=new h({name:"gauss",...e});try{return(await t.run(r)).text}finally{t.destroy()}}async function G(r,e){let{concurrency:t=5,...o}=e??{},n=r.map(i=>({input:i})),s=new h({name:"batch",...o});try{let i=[...n.entries()],a=Array.from({length:Math.min(t,i.length)},async()=>{for(;i.length>0;){let d=i.shift();if(!d)break;let[c,m]=d;try{n[c].result=await s.run(m.input)}catch(g){n[c].error=g instanceof Error?g:new Error(String(g))}}});await Promise.all(a)}finally{s.destroy()}return n}var p=require("gauss-napi");var w=require("gauss-napi");async function N(r,e,t){return(0,p.execute_code)(r,e,t?.timeoutSecs,t?.workingDir,t?.sandbox)}async function U(){return(0,p.available_runtimes)()}async function H(r,e={}){let t=_(),o=e.provider??t?.provider??"openai",n=e.model??t?.model??"dall-e-3",s=e.providerOptions?.apiKey??x(o),i=(0,p.create_provider)(o,n,{apiKey:s,...e.providerOptions});try{return await(0,p.generate_image)(i,r,e.model,e.size,e.quality,e.style,e.aspectRatio,e.n,e.responseFormat)}finally{(0,p.destroy_provider)(i)}}0&&(module.exports={Agent,AgentStream,availableRuntimes,batch,executeCode,gauss,generateImage,version});
|
|
5
5
|
//# sourceMappingURL=agent.cjs.map
|