agency-lang 0.6.2 → 0.6.4
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/dist/lib/agents/agency-agent/agent.agency +1 -1
- package/dist/lib/agents/agency-agent/agent.js +45 -112
- package/dist/lib/agents/agency-agent/code.js +532 -0
- package/dist/lib/agents/agency-agent/images/images.js +3 -0
- package/dist/lib/agents/agency-agent/lib/config.js +3 -0
- package/dist/lib/agents/agency-agent/lib/defaultPolicy.js +5 -6
- package/dist/lib/agents/agency-agent/lib/models.agency +154 -0
- package/dist/lib/agents/agency-agent/lib/models.js +711 -0
- package/dist/lib/agents/agency-agent/lib/utils.js +9 -22
- package/dist/lib/agents/agency-agent/prompts/codeSample.js +9 -22
- package/dist/lib/agents/agency-agent/research.js +311 -0
- package/dist/lib/agents/agency-agent/shared.agency +19 -67
- package/dist/lib/agents/agency-agent/shared.js +52 -150
- package/dist/lib/agents/agency-agent/subagents/code.js +16 -20
- package/dist/lib/agents/agency-agent/subagents/explorer.js +9 -10
- package/dist/lib/agents/agency-agent/subagents/oracle.js +10 -11
- package/dist/lib/agents/agency-agent/subagents/research.js +12 -13
- package/dist/lib/agents/agency-agent/subagents/review.js +12 -34
- package/dist/lib/agents/agency-agent/tests/agentTurn.js +5 -6
- package/dist/lib/agents/agency-agent/tests/execPolicy.js +15 -31
- package/dist/lib/agents/agency-agent/tests/toolWiring.js +13 -26
- package/dist/lib/agents/agency-agent/toolWiring.js +696 -0
- package/dist/lib/agents/docs/cli/cli/optimize.md +4 -2
- package/dist/lib/agents/docs/cli/optimize.md +4 -2
- package/dist/lib/agents/eval/goalJudge.agency +4 -1
- package/dist/lib/agents/eval/goalJudge.js +14 -10
- package/dist/lib/agents/eval/judge.js +5 -6
- package/dist/lib/agents/eval/judgePairwise.js +5 -6
- package/dist/lib/agents/gepaReflect.js +316 -0
- package/dist/lib/agents/mutatePrompt.js +301 -0
- package/dist/lib/agents/optimize/gepaReflect.js +5 -6
- package/dist/lib/agents/optimize/mutatePrompt.js +5 -6
- package/dist/lib/agents/policy/agent.js +16 -44
- package/dist/lib/agents/review/agent.js +6 -10
- package/dist/lib/backends/typescriptBuilder.integration.test.js +80 -0
- package/dist/lib/backends/typescriptBuilder.js +67 -17
- package/dist/lib/backends/typescriptGenerator/validationDescriptor.d.ts +6 -0
- package/dist/lib/backends/typescriptGenerator/validationDescriptor.js +108 -31
- package/dist/lib/cli/eval/optimize.js +4 -2
- package/dist/lib/optimize/baseOptimizer.d.ts +27 -0
- package/dist/lib/optimize/baseOptimizer.js +63 -5
- package/dist/lib/optimize/baseOptimizer.workdir.test.d.ts +1 -0
- package/dist/lib/optimize/baseOptimizer.workdir.test.js +77 -0
- package/dist/lib/optimize/grading/functionGrader.d.ts +5 -1
- package/dist/lib/optimize/grading/functionGrader.js +9 -1
- package/dist/lib/optimize/grading/functionGrader.test.js +22 -0
- package/dist/lib/optimize/grading/graders/llmJudge.d.ts +1 -0
- package/dist/lib/optimize/grading/graders/llmJudge.js +5 -1
- package/dist/lib/optimize/grading/graders/llmJudge.test.js +12 -2
- package/dist/lib/optimize/optimizers/example.d.ts +9 -10
- package/dist/lib/optimize/optimizers/example.js +33 -33
- package/dist/lib/optimize/optimizers/example.test.js +11 -0
- package/dist/lib/optimize/optimizers/gepa.d.ts +0 -2
- package/dist/lib/optimize/optimizers/gepa.js +3 -18
- package/dist/lib/optimize/optimizers/gepa.test.js +11 -0
- package/dist/lib/optimize/optimizers/greedyReflective.d.ts +0 -7
- package/dist/lib/optimize/optimizers/greedyReflective.js +2 -36
- package/dist/lib/runtime/errors.d.ts +21 -10
- package/dist/lib/runtime/errors.js +46 -22
- package/dist/lib/runtime/errors.test.js +56 -2
- package/dist/lib/runtime/guard.d.ts +22 -5
- package/dist/lib/runtime/guard.js +30 -7
- package/dist/lib/runtime/guard.test.js +30 -1
- package/dist/lib/runtime/hooks.js +5 -2
- package/dist/lib/runtime/index.d.ts +2 -2
- package/dist/lib/runtime/index.js +2 -2
- package/dist/lib/runtime/node.d.ts +43 -0
- package/dist/lib/runtime/node.js +129 -52
- package/dist/lib/runtime/prompt.js +16 -28
- package/dist/lib/runtime/result.d.ts +6 -0
- package/dist/lib/runtime/result.js +19 -15
- package/dist/lib/runtime/result.test.js +55 -4
- package/dist/lib/runtime/runBatch.js +3 -2
- package/dist/lib/runtime/runBatch.test.js +33 -0
- package/dist/lib/runtime/state/stateStack.test.js +6 -2
- package/dist/lib/runtime/threadRepair.d.ts +36 -0
- package/dist/lib/runtime/threadRepair.js +69 -0
- package/dist/lib/runtime/threadRepair.test.d.ts +1 -0
- package/dist/lib/runtime/threadRepair.test.js +89 -0
- package/dist/lib/serve/discovery.js +24 -2
- package/dist/lib/serve/http/adapter.js +1 -5
- package/dist/lib/serve/http/adapter.test.js +3 -0
- package/dist/lib/serve/http/functionFrame.integration.test.d.ts +1 -0
- package/dist/lib/serve/http/functionFrame.integration.test.js +83 -0
- package/dist/lib/serve/mcp/adapter.js +1 -1
- package/dist/lib/serve/mcp/adapter.test.js +4 -2
- package/dist/lib/serve/mcp/httpTransport.test.js +1 -0
- package/dist/lib/serve/types.d.ts +10 -0
- package/dist/lib/stdlib/http.js +19 -2
- package/dist/lib/stdlib/thread.d.ts +29 -4
- package/dist/lib/stdlib/thread.js +60 -15
- package/dist/lib/stdlib/version.d.ts +1 -1
- package/dist/lib/stdlib/version.js +1 -1
- package/dist/lib/templates/backends/typescriptGenerator/functionCatchFailure.d.ts +1 -1
- package/dist/lib/templates/backends/typescriptGenerator/functionCatchFailure.js +8 -15
- package/dist/lib/templates/backends/typescriptGenerator/imports.d.ts +1 -1
- package/dist/lib/templates/backends/typescriptGenerator/imports.js +7 -2
- package/dist/lib/typeChecker/capabilities.test.d.ts +1 -0
- package/dist/lib/typeChecker/capabilities.test.js +74 -0
- package/dist/lib/typeChecker/valueParamSubstitution.js +17 -3
- package/package.json +1 -1
- package/stdlib/agency/eval.js +9 -22
- package/stdlib/agency.js +20 -66
- package/stdlib/agent.js +13 -38
- package/stdlib/args.js +5 -6
- package/stdlib/array.js +17 -54
- package/stdlib/browser.js +5 -6
- package/stdlib/calendar.js +10 -26
- package/stdlib/capabilities.agency +60 -0
- package/stdlib/capabilities.js +172 -0
- package/stdlib/chart.js +8 -18
- package/stdlib/cli.js +10 -26
- package/stdlib/clipboard.js +6 -10
- package/stdlib/concurrency.js +5 -6
- package/stdlib/date.js +19 -62
- package/stdlib/email.js +7 -14
- package/stdlib/fs.js +10 -26
- package/stdlib/http.js +7 -14
- package/stdlib/imessage.js +5 -6
- package/stdlib/index.js +24 -82
- package/stdlib/keyring.js +8 -18
- package/stdlib/layout.js +22 -74
- package/stdlib/llm.agency +9 -3
- package/stdlib/llm.js +17 -21
- package/stdlib/markdown.js +8 -18
- package/stdlib/math.js +8 -18
- package/stdlib/memory.js +13 -38
- package/stdlib/oauth.js +8 -18
- package/stdlib/object.js +9 -22
- package/stdlib/path.js +11 -30
- package/stdlib/policy.js +22 -74
- package/stdlib/schemas.js +3 -0
- package/stdlib/search.js +5 -6
- package/stdlib/shell.js +12 -34
- package/stdlib/skills.js +13 -38
- package/stdlib/sms.js +5 -6
- package/stdlib/speech.js +7 -14
- package/stdlib/statelog.js +10 -26
- package/stdlib/strategy.js +9 -22
- package/stdlib/syntax.js +8 -18
- package/stdlib/system.js +15 -46
- package/stdlib/table.js +11 -30
- package/stdlib/thread.agency +4 -3
- package/stdlib/thread.js +25 -43
- package/stdlib/threads.js +9 -22
- package/stdlib/types.js +27 -0
- package/stdlib/ui.js +60 -226
- package/stdlib/validators.js +15 -46
- package/stdlib/weather.js +7 -14
- package/stdlib/wikipedia.js +7 -14
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Model selection policy for the Agency Agent.
|
|
3
|
+
*
|
|
4
|
+
* Pure, side-effect-free helpers (no memory/LLM init on import) so they
|
|
5
|
+
* can be unit-tested in isolation. `shared.agency` consumes these and
|
|
6
|
+
* owns the actual side effects (setLlmOptions, slow-model state, exit).
|
|
7
|
+
*
|
|
8
|
+
* Two jobs:
|
|
9
|
+
* - `resolveDetected` — decide which provider's defaults to use,
|
|
10
|
+
* honoring an explicit `--provider` flag over env auto-detection.
|
|
11
|
+
* - `planModels` — given that provider, turn the four CLI flag values
|
|
12
|
+
* into the concrete fast/slow model + provider to apply.
|
|
13
|
+
*/
|
|
14
|
+
import { pickProvider, envVarFor } from "std::llm"
|
|
15
|
+
import { env } from "std::system"
|
|
16
|
+
|
|
17
|
+
// Default models per provider. `slowProvider` pins the provider for the
|
|
18
|
+
// deep-reasoning call: OpenAI needs the Responses API for reasoning /
|
|
19
|
+
// extended thinking; native providers use their own. Used as fallbacks
|
|
20
|
+
// when the user doesn't pass --model / --fastmodel / --slowmodel.
|
|
21
|
+
type ProviderModels = {
|
|
22
|
+
fast: string;
|
|
23
|
+
slow: string;
|
|
24
|
+
slowProvider: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export static const MODELS: Record<string, ProviderModels> = {
|
|
28
|
+
openai: {
|
|
29
|
+
fast: "gpt-4o-mini",
|
|
30
|
+
slow: "gpt-5.5",
|
|
31
|
+
slowProvider: "openai-responses"
|
|
32
|
+
},
|
|
33
|
+
anthropic: {
|
|
34
|
+
fast: "claude-sonnet-4-6",
|
|
35
|
+
slow: "claude-opus-4-8",
|
|
36
|
+
slowProvider: "anthropic"
|
|
37
|
+
},
|
|
38
|
+
google: {
|
|
39
|
+
fast: "gemini-3.5-flash",
|
|
40
|
+
slow: "gemini-3.1-pro-preview",
|
|
41
|
+
slowProvider: "google"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The concrete models + providers to apply, produced by `planModels`.
|
|
46
|
+
// `fastProvider` is what `setLlmOptions` receives ("" lets smoltalk
|
|
47
|
+
// resolve the provider from the model name).
|
|
48
|
+
export type ModelPlan = {
|
|
49
|
+
fastModel: string;
|
|
50
|
+
fastProvider: string;
|
|
51
|
+
slowModel: string;
|
|
52
|
+
slowProvider: string
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Decide which provider's default models to use, given the four
|
|
56
|
+
* (already-normalized-to-"") CLI flag values.
|
|
57
|
+
*
|
|
58
|
+
* - An explicit `--provider` for a *recognized* provider (a key in
|
|
59
|
+
* MODELS) wins outright: we use its defaults and SKIP env
|
|
60
|
+
* auto-detection entirely. This is what lets `--provider openai`
|
|
61
|
+
* work even when a stale/invalid ANTHROPIC_API_KEY is set. We also
|
|
62
|
+
* verify that provider's API key is present so we fail loudly up
|
|
63
|
+
* front instead of mid-run.
|
|
64
|
+
* - An explicit `--provider` for an *unrecognized* provider (a custom
|
|
65
|
+
* or local one) has no built-in defaults, so it's only valid
|
|
66
|
+
* alongside an explicit model; otherwise it's an error.
|
|
67
|
+
* - With no `--provider`, fall back to env auto-detection
|
|
68
|
+
* (`pickProvider`) whenever defaults are actually needed.
|
|
69
|
+
*
|
|
70
|
+
* Returns the provider name whose MODELS bucket should supply defaults,
|
|
71
|
+
* or a failure whose message is ready to print. */
|
|
72
|
+
export def resolveDetected(
|
|
73
|
+
model: string,
|
|
74
|
+
fast: string,
|
|
75
|
+
slow: string,
|
|
76
|
+
provider: string,
|
|
77
|
+
): Result<string> {
|
|
78
|
+
const needFast = fast == "" && model == ""
|
|
79
|
+
const needSlow = slow == "" && model == ""
|
|
80
|
+
|
|
81
|
+
if (provider != "") {
|
|
82
|
+
if (MODELS[provider] == undefined) {
|
|
83
|
+
// Custom/local provider — no defaults to fall back on.
|
|
84
|
+
if (needFast || needSlow) {
|
|
85
|
+
const known = Object.keys(MODELS)
|
|
86
|
+
return failure(
|
|
87
|
+
"--provider ${provider} has no built-in defaults; also pass --model (or --fastmodel/--slowmodel). Providers with defaults: ${known.join(", ")}.",
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
// Models fully specified; the defaults bucket is never read.
|
|
91
|
+
return success(provider)
|
|
92
|
+
}
|
|
93
|
+
// Recognized provider forced. Fail loudly now if its key is missing
|
|
94
|
+
// rather than emitting a confusing auth error on the first llm() call.
|
|
95
|
+
const varName = envVarFor(provider)
|
|
96
|
+
if (varName != "" && (env(varName) == null || env(varName) == "")) {
|
|
97
|
+
return failure("No API key for provider '${provider}'. Set ${varName}.")
|
|
98
|
+
}
|
|
99
|
+
return success(provider)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (needFast || needSlow) {
|
|
103
|
+
return pickProvider()
|
|
104
|
+
}
|
|
105
|
+
// Everything came from --model; the defaults bucket is never read.
|
|
106
|
+
return success("openai")
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Turn the four CLI flag values plus the resolved `detected` provider
|
|
110
|
+
* into the concrete models/providers to apply. Pure. Precedence:
|
|
111
|
+
* --fastmodel/--slowmodel win over --model, which wins over the
|
|
112
|
+
* `detected` provider's defaults.
|
|
113
|
+
*
|
|
114
|
+
* The `detected` bucket (MODELS[detected]) is only read when a default
|
|
115
|
+
* is actually needed — i.e. when the corresponding model flag is
|
|
116
|
+
* absent. For a custom/local provider (no bucket) `resolveDetected`
|
|
117
|
+
* guarantees an explicit model was supplied, so the defaults are never
|
|
118
|
+
* dereferenced. */
|
|
119
|
+
export def planModels(
|
|
120
|
+
model: string,
|
|
121
|
+
fast: string,
|
|
122
|
+
slow: string,
|
|
123
|
+
provider: string,
|
|
124
|
+
detected: string,
|
|
125
|
+
): ModelPlan {
|
|
126
|
+
let fastModel = fast
|
|
127
|
+
if (fastModel == "") {
|
|
128
|
+
if (model != "") {
|
|
129
|
+
fastModel = model
|
|
130
|
+
} else {
|
|
131
|
+
fastModel = MODELS[detected].fast
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
let slowModel = ""
|
|
136
|
+
let slowProvider = ""
|
|
137
|
+
if (slow != "") {
|
|
138
|
+
slowModel = slow
|
|
139
|
+
slowProvider = provider
|
|
140
|
+
} else if (model != "") {
|
|
141
|
+
slowModel = model
|
|
142
|
+
slowProvider = provider
|
|
143
|
+
} else {
|
|
144
|
+
slowModel = MODELS[detected].slow
|
|
145
|
+
slowProvider = MODELS[detected].slowProvider
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return {
|
|
149
|
+
fastModel: fastModel,
|
|
150
|
+
fastProvider: provider,
|
|
151
|
+
slowModel: slowModel,
|
|
152
|
+
slowProvider: slowProvider
|
|
153
|
+
}
|
|
154
|
+
}
|