forgeos 0.1.0-alpha.2 → 0.1.0-alpha.3
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/AGENTS.md +38 -3
- package/README.md +6 -5
- package/package.json +5 -4
- package/src/forge/_generated/actionSubscriptions.json +2 -2
- package/src/forge/_generated/actionSubscriptions.ts +3 -3
- package/src/forge/_generated/agentAdapterManifest.json +2 -2
- package/src/forge/_generated/agentAdapterManifest.ts +3 -3
- package/src/forge/_generated/agentContract.json +2 -2
- package/src/forge/_generated/agentContract.ts +183 -50
- package/src/forge/_generated/agentQuickstart.md +3 -1
- package/src/forge/_generated/agentTools.json +2 -0
- package/src/forge/_generated/agentTools.md +16 -0
- package/src/forge/_generated/agentTools.ts +12 -0
- package/src/forge/_generated/aiContext.ts +67 -1
- package/src/forge/_generated/aiModels.json +2 -2
- package/src/forge/_generated/aiModels.ts +17 -1
- package/src/forge/_generated/aiProviders.json +1 -1
- package/src/forge/_generated/aiProviders.ts +1 -1
- package/src/forge/_generated/aiRegistry.json +2 -2
- package/src/forge/_generated/aiRegistry.ts +7 -5
- package/src/forge/_generated/api.json +2 -2
- package/src/forge/_generated/api.ts +1 -1
- package/src/forge/_generated/appGraph.json +2 -2
- package/src/forge/_generated/appGraph.ts +288 -180
- package/src/forge/_generated/appMap.md +21 -1
- package/src/forge/_generated/artifactManifest.json +2 -2
- package/src/forge/_generated/artifactManifest.ts +2 -2
- package/src/forge/_generated/authClaims.json +1 -1
- package/src/forge/_generated/authClaims.ts +1 -1
- package/src/forge/_generated/authConfig.json +1 -1
- package/src/forge/_generated/authConfig.ts +1 -1
- package/src/forge/_generated/authContext.ts +1 -1
- package/src/forge/_generated/authRegistry.json +1 -1
- package/src/forge/_generated/authRegistry.ts +1 -1
- package/src/forge/_generated/buildInfo.json +2 -2
- package/src/forge/_generated/buildInfo.ts +4 -4
- package/src/forge/_generated/capabilityMap.json +2 -2
- package/src/forge/_generated/capabilityMap.md +1 -1
- package/src/forge/_generated/capabilityMap.ts +2 -2
- package/src/forge/_generated/client.ts +1 -1
- package/src/forge/_generated/clientApi.ts +1 -1
- package/src/forge/_generated/clientManifest.json +2 -2
- package/src/forge/_generated/clientManifest.ts +3 -3
- package/src/forge/_generated/clientTypes.ts +1 -1
- package/src/forge/_generated/configRegistry.json +1 -1
- package/src/forge/_generated/configRegistry.ts +1 -1
- package/src/forge/_generated/dataGraph.json +2 -2
- package/src/forge/_generated/dataGraph.ts +3 -3
- package/src/forge/_generated/db.json +1 -1
- package/src/forge/_generated/db.ts +1 -1
- package/src/forge/_generated/dbSecurityManifest.json +1 -1
- package/src/forge/_generated/dbSecurityManifest.ts +1 -1
- package/src/forge/_generated/dbSessionContext.json +1 -1
- package/src/forge/_generated/dbSessionContext.ts +1 -1
- package/src/forge/_generated/deployManifest.json +2 -2
- package/src/forge/_generated/deployManifest.ts +7 -7
- package/src/forge/_generated/devManifest.json +2 -2
- package/src/forge/_generated/devManifest.ts +18 -3
- package/src/forge/_generated/envSchema.json +1 -1
- package/src/forge/_generated/envSchema.ts +1 -1
- package/src/forge/_generated/frontendGraph.json +1 -1
- package/src/forge/_generated/frontendGraph.ts +1 -1
- package/src/forge/_generated/importGuards.json +1 -1
- package/src/forge/_generated/importGuards.ts +1 -1
- package/src/forge/_generated/index.ts +2 -1
- package/src/forge/_generated/liveProductionManifest.json +1 -1
- package/src/forge/_generated/liveProductionManifest.ts +1 -1
- package/src/forge/_generated/liveProtocol.json +1 -1
- package/src/forge/_generated/liveProtocol.ts +1 -1
- package/src/forge/_generated/liveQueryRegistry.json +2 -2
- package/src/forge/_generated/liveQueryRegistry.ts +3 -3
- package/src/forge/_generated/liveTransportConfig.json +1 -1
- package/src/forge/_generated/liveTransportConfig.ts +1 -1
- package/src/forge/_generated/makeRegistry.json +2 -2
- package/src/forge/_generated/makeRegistry.ts +16 -2
- package/src/forge/_generated/makeTemplates.json +2 -2
- package/src/forge/_generated/makeTemplates.ts +6 -1
- package/src/forge/_generated/mockMap.json +1 -1
- package/src/forge/_generated/mockMap.ts +1 -1
- package/src/forge/_generated/operationPlaybooks.md +34 -14
- package/src/forge/_generated/packageGraph.json +2 -2
- package/src/forge/_generated/packageGraph.ts +8808 -4723
- package/src/forge/_generated/packageUpgradeRegistry.json +2 -2
- package/src/forge/_generated/packageUpgradeRegistry.ts +2 -2
- package/src/forge/_generated/permissionMatrix.json +2 -2
- package/src/forge/_generated/permissionMatrix.ts +3 -3
- package/src/forge/_generated/policyRegistry.json +2 -2
- package/src/forge/_generated/policyRegistry.ts +3 -3
- package/src/forge/_generated/queryRegistry.json +2 -2
- package/src/forge/_generated/queryRegistry.ts +3 -3
- package/src/forge/_generated/react.d.ts +1 -1
- package/src/forge/_generated/react.ts +1 -1
- package/src/forge/_generated/reactManifest.json +2 -2
- package/src/forge/_generated/reactManifest.ts +3 -3
- package/src/forge/_generated/releaseManifest.json +2 -2
- package/src/forge/_generated/releaseManifest.ts +3 -3
- package/src/forge/_generated/rlsPolicies.json +1 -1
- package/src/forge/_generated/rlsPolicies.sql +1 -1
- package/src/forge/_generated/rlsPolicies.ts +1 -1
- package/src/forge/_generated/runtimeGraph.json +2 -2
- package/src/forge/_generated/runtimeGraph.ts +3 -3
- package/src/forge/_generated/runtimeMatrix.json +2 -2
- package/src/forge/_generated/runtimeMatrix.ts +8684 -1939
- package/src/forge/_generated/runtimeRegistry.ts +1 -1
- package/src/forge/_generated/runtimeRules.md +13 -1
- package/src/forge/_generated/secretRegistry.json +1 -1
- package/src/forge/_generated/secretRegistry.ts +1 -1
- package/src/forge/_generated/secretsContext.ts +1 -1
- package/src/forge/_generated/serverApi.ts +1 -1
- package/src/forge/_generated/sourceMapManifest.json +2 -2
- package/src/forge/_generated/sourceMapManifest.ts +2 -2
- package/src/forge/_generated/sqlPlan.json +1 -1
- package/src/forge/_generated/sqlPlan.ts +1 -1
- package/src/forge/_generated/subscriptionManifest.json +2 -2
- package/src/forge/_generated/subscriptionManifest.ts +3 -3
- package/src/forge/_generated/symbolicationManifest.json +2 -2
- package/src/forge/_generated/symbolicationManifest.ts +2 -2
- package/src/forge/_generated/telemetryRegistry.json +2 -2
- package/src/forge/_generated/telemetryRegistry.ts +3 -3
- package/src/forge/_generated/telemetrySinks.json +2 -2
- package/src/forge/_generated/telemetrySinks.ts +2 -2
- package/src/forge/_generated/tenantScope.json +2 -2
- package/src/forge/_generated/tenantScope.ts +3 -3
- package/src/forge/_generated/testGraph.json +2 -2
- package/src/forge/_generated/testGraph.ts +17 -7
- package/src/forge/_generated/testPlanRegistry.json +2 -2
- package/src/forge/_generated/testPlanRegistry.ts +2 -2
- package/src/forge/_generated/uiRoutes.json +1 -1
- package/src/forge/_generated/uiRoutes.ts +1 -1
- package/src/forge/_generated/uiScenarios.json +1 -1
- package/src/forge/_generated/uiScenarios.ts +1 -1
- package/src/forge/_generated/uiTestManifest.json +2 -2
- package/src/forge/_generated/uiTestManifest.ts +2 -2
- package/src/forge/_generated/workflowRegistry.json +2 -2
- package/src/forge/_generated/workflowRegistry.ts +3 -3
- package/src/forge/_generated/workflowSubscriptions.json +2 -2
- package/src/forge/_generated/workflowSubscriptions.ts +3 -3
- package/src/forge/cli/ai.ts +186 -1
- package/src/forge/cli/commands.ts +5 -0
- package/src/forge/cli/parse.ts +30 -3
- package/src/forge/compiler/agent-contract/build.ts +281 -8
- package/src/forge/compiler/agent-contract/types.ts +41 -0
- package/src/forge/compiler/ai-registry/build.ts +62 -1
- package/src/forge/compiler/ai-registry/constants.ts +1 -1
- package/src/forge/compiler/ai-registry/parse.ts +98 -4
- package/src/forge/compiler/app-graph/forge-apis.ts +1 -0
- package/src/forge/compiler/dev-manifest/build.ts +3 -0
- package/src/forge/compiler/make-registry/build.ts +13 -0
- package/src/forge/compiler/orchestrator/plan.ts +11 -0
- package/src/forge/compiler/orchestrator/serialize.ts +68 -0
- package/src/forge/compiler/types/ai-registry.ts +25 -1
- package/src/forge/compiler/types/app-graph.ts +1 -0
- package/src/forge/compiler/types/cli.ts +1 -0
- package/src/forge/compiler/types/dev-manifest.ts +3 -0
- package/src/forge/dev/server.ts +508 -1
- package/src/forge/make/index.ts +126 -3
- package/src/forge/make/templates.ts +188 -0
- package/src/forge/make/types.ts +1 -0
- package/src/forge/runtime/ai/context.ts +210 -5
- package/src/forge/runtime/ai/types.ts +70 -0
- package/src/forge/runtime/context/create-context.ts +30 -6
- package/src/forge/server.ts +82 -0
- package/src/forge/version.ts +1 -1
|
@@ -51,10 +51,80 @@ export interface ForgeGenerateStructuredInput<T> {
|
|
|
51
51
|
schema: ForgeFlexibleSchema<T>;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
export type ForgeAiToolRisk = "read" | "write" | "external" | "destructive";
|
|
55
|
+
|
|
56
|
+
export interface ForgeAiToolRuntimeContext {
|
|
57
|
+
secrets: {
|
|
58
|
+
get(name: string): string;
|
|
59
|
+
optional(name: string): string | undefined;
|
|
60
|
+
has(name: string): boolean;
|
|
61
|
+
};
|
|
62
|
+
env: Record<string, string | undefined>;
|
|
63
|
+
telemetry?: {
|
|
64
|
+
traceId?: string;
|
|
65
|
+
capture(name: string, properties?: Record<string, unknown>): Promise<void>;
|
|
66
|
+
};
|
|
67
|
+
auth?: unknown;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface ForgeAiToolDefinition<TArgs = unknown, TResult = unknown> {
|
|
71
|
+
description: string;
|
|
72
|
+
inputSchema: unknown;
|
|
73
|
+
outputSchema?: unknown;
|
|
74
|
+
strict?: boolean;
|
|
75
|
+
needsApproval?: boolean | ((args: TArgs) => boolean | Promise<boolean>);
|
|
76
|
+
risk?: ForgeAiToolRisk;
|
|
77
|
+
handler: (
|
|
78
|
+
ctx: ForgeAiToolRuntimeContext,
|
|
79
|
+
args: TArgs,
|
|
80
|
+
) => TResult | Promise<TResult>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export type ForgeAgentStopWhen =
|
|
84
|
+
| { kind: "stepCount"; maxSteps: number }
|
|
85
|
+
| { kind: "toolCall"; toolName: string };
|
|
86
|
+
|
|
87
|
+
export interface ForgeRunAgentInput {
|
|
88
|
+
provider?: ForgeAiProvider;
|
|
89
|
+
model: string;
|
|
90
|
+
prompt: string;
|
|
91
|
+
instructions: string;
|
|
92
|
+
purpose?: string;
|
|
93
|
+
tools?: Record<string, ForgeAiToolDefinition>;
|
|
94
|
+
stopWhen?: ForgeAgentStopWhen;
|
|
95
|
+
maxSteps?: number;
|
|
96
|
+
temperature?: number;
|
|
97
|
+
maxTokens?: number;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface ForgeRunAgentResult {
|
|
101
|
+
text: string;
|
|
102
|
+
provider: ForgeAiProvider;
|
|
103
|
+
model: string;
|
|
104
|
+
purpose?: string;
|
|
105
|
+
usage: ForgeAiUsage;
|
|
106
|
+
latencyMs: number;
|
|
107
|
+
toolCalls: Array<{
|
|
108
|
+
toolName: string;
|
|
109
|
+
input: unknown;
|
|
110
|
+
}>;
|
|
111
|
+
toolResults: Array<{
|
|
112
|
+
toolName: string;
|
|
113
|
+
output: unknown;
|
|
114
|
+
}>;
|
|
115
|
+
steps: number;
|
|
116
|
+
estimatedCostUsd?: number;
|
|
117
|
+
}
|
|
118
|
+
|
|
54
119
|
export interface AiContext {
|
|
55
120
|
generateText(input: ForgeGenerateTextInput): Promise<ForgeGenerateTextResult>;
|
|
56
121
|
streamText(input: ForgeStreamTextInput): Promise<ForgeStreamTextResult>;
|
|
57
122
|
generateStructured<T>(input: ForgeGenerateStructuredInput<T>): Promise<T>;
|
|
123
|
+
runAgent(input: ForgeRunAgentInput): Promise<ForgeRunAgentResult>;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface AgentRuntimeContext {
|
|
127
|
+
run(input: ForgeRunAgentInput): Promise<ForgeRunAgentResult>;
|
|
58
128
|
}
|
|
59
129
|
|
|
60
130
|
export interface AiTelemetryEnvelope {
|
|
@@ -13,7 +13,7 @@ import { loadEnvFiles } from "../secrets/env-loader.ts";
|
|
|
13
13
|
import { loadEnvSchema, loadSecretRegistry } from "../secrets/check.ts";
|
|
14
14
|
import { createRuntimeSecretsBundle } from "../secrets/runtime-bundle.ts";
|
|
15
15
|
import { createAiContext } from "../ai/context.ts";
|
|
16
|
-
import type { AiContext } from "../ai/types.ts";
|
|
16
|
+
import type { AgentRuntimeContext, AiContext } from "../ai/types.ts";
|
|
17
17
|
import { isMockAiEnabled } from "../ai/state.ts";
|
|
18
18
|
import { currentReleaseInfo, type RuntimeReleaseInfo } from "../release/runtime.ts";
|
|
19
19
|
|
|
@@ -26,6 +26,7 @@ export interface ForgeContext {
|
|
|
26
26
|
secrets: SecretsContext;
|
|
27
27
|
config: ConfigContext;
|
|
28
28
|
ai: AiContext;
|
|
29
|
+
agent: AgentRuntimeContext;
|
|
29
30
|
release: RuntimeReleaseInfo;
|
|
30
31
|
}
|
|
31
32
|
|
|
@@ -67,11 +68,16 @@ function buildSecretsConfigAndAi(
|
|
|
67
68
|
runtimeKind: RuntimeContext,
|
|
68
69
|
store: RuntimeEnvStore,
|
|
69
70
|
telemetry: TelemetryContext,
|
|
70
|
-
options?: {
|
|
71
|
+
options?: {
|
|
72
|
+
mockAi?: boolean;
|
|
73
|
+
auth?: AuthContext;
|
|
74
|
+
env?: Record<string, string | undefined>;
|
|
75
|
+
},
|
|
71
76
|
): {
|
|
72
77
|
secrets: SecretsContext;
|
|
73
78
|
config: ConfigContext;
|
|
74
79
|
ai: AiContext;
|
|
80
|
+
agent: AgentRuntimeContext;
|
|
75
81
|
env: Record<string, string | undefined>;
|
|
76
82
|
} {
|
|
77
83
|
const registry = workspaceRoot ? loadSecretRegistry(workspaceRoot) : null;
|
|
@@ -93,12 +99,20 @@ function buildSecretsConfigAndAi(
|
|
|
93
99
|
tenantId:
|
|
94
100
|
undefined,
|
|
95
101
|
},
|
|
102
|
+
toolContext: {
|
|
103
|
+
env: options?.env ?? store.snapshot(),
|
|
104
|
+
auth: options?.auth,
|
|
105
|
+
},
|
|
96
106
|
});
|
|
107
|
+
const agent: AgentRuntimeContext = {
|
|
108
|
+
run: (input) => ai.runAgent(input),
|
|
109
|
+
};
|
|
97
110
|
|
|
98
111
|
return {
|
|
99
112
|
secrets: bundle.secrets,
|
|
100
113
|
config: bundle.config,
|
|
101
114
|
ai,
|
|
115
|
+
agent,
|
|
102
116
|
env: store.snapshot(),
|
|
103
117
|
};
|
|
104
118
|
}
|
|
@@ -123,12 +137,16 @@ export function createForgeContext(
|
|
|
123
137
|
(options?.workspaceRoot
|
|
124
138
|
? getRuntimeEnvStore(options.workspaceRoot)
|
|
125
139
|
: getRuntimeEnvStore());
|
|
126
|
-
const { secrets, config, ai, env } = buildSecretsConfigAndAi(
|
|
140
|
+
const { secrets, config, ai, agent, env } = buildSecretsConfigAndAi(
|
|
127
141
|
options?.workspaceRoot,
|
|
128
142
|
runtimeKind,
|
|
129
143
|
store,
|
|
130
144
|
telemetry,
|
|
131
|
-
{
|
|
145
|
+
{
|
|
146
|
+
mockAi: options?.mockAi,
|
|
147
|
+
auth,
|
|
148
|
+
env: options?.env,
|
|
149
|
+
},
|
|
132
150
|
);
|
|
133
151
|
|
|
134
152
|
return {
|
|
@@ -139,6 +157,7 @@ export function createForgeContext(
|
|
|
139
157
|
secrets,
|
|
140
158
|
config,
|
|
141
159
|
ai,
|
|
160
|
+
agent,
|
|
142
161
|
release: currentReleaseInfo(),
|
|
143
162
|
emit: async (eventType, payload) => {
|
|
144
163
|
const enriched =
|
|
@@ -178,12 +197,16 @@ export function createActionContext(
|
|
|
178
197
|
(options?.workspaceRoot
|
|
179
198
|
? getRuntimeEnvStore(options.workspaceRoot)
|
|
180
199
|
: getRuntimeEnvStore());
|
|
181
|
-
const { secrets, config, ai, env } = buildSecretsConfigAndAi(
|
|
200
|
+
const { secrets, config, ai, agent, env } = buildSecretsConfigAndAi(
|
|
182
201
|
options?.workspaceRoot,
|
|
183
202
|
runtimeKind,
|
|
184
203
|
store,
|
|
185
204
|
telemetry,
|
|
186
|
-
{
|
|
205
|
+
{
|
|
206
|
+
mockAi: options?.mockAi,
|
|
207
|
+
auth,
|
|
208
|
+
env: options?.env,
|
|
209
|
+
},
|
|
187
210
|
);
|
|
188
211
|
|
|
189
212
|
return {
|
|
@@ -194,6 +217,7 @@ export function createActionContext(
|
|
|
194
217
|
secrets,
|
|
195
218
|
config,
|
|
196
219
|
ai,
|
|
220
|
+
agent,
|
|
197
221
|
release: currentReleaseInfo(),
|
|
198
222
|
emit: async () => {
|
|
199
223
|
/* actions invoked by outbox worker do not emit */
|
package/src/forge/server.ts
CHANGED
|
@@ -11,11 +11,50 @@ export interface ForgeTelemetry {
|
|
|
11
11
|
capture(name: string, payload?: Record<string, unknown>): Promise<void> | void;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
export type ForgeAiProvider = "openai" | "anthropic" | "gateway";
|
|
15
|
+
|
|
16
|
+
export interface ForgeAiUsage {
|
|
17
|
+
promptTokens: number;
|
|
18
|
+
completionTokens: number;
|
|
19
|
+
totalTokens: number;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface ForgeRunAgentInput {
|
|
23
|
+
provider?: ForgeAiProvider;
|
|
24
|
+
model: string;
|
|
25
|
+
prompt: string;
|
|
26
|
+
instructions: string;
|
|
27
|
+
purpose?: string;
|
|
28
|
+
tools?: Record<string, ForgeAiToolDefinition>;
|
|
29
|
+
stopWhen?: ForgeAgentStopWhen;
|
|
30
|
+
maxSteps?: number;
|
|
31
|
+
temperature?: number;
|
|
32
|
+
maxTokens?: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface ForgeRunAgentResult {
|
|
36
|
+
text: string;
|
|
37
|
+
provider: ForgeAiProvider;
|
|
38
|
+
model: string;
|
|
39
|
+
purpose?: string;
|
|
40
|
+
usage: ForgeAiUsage;
|
|
41
|
+
latencyMs: number;
|
|
42
|
+
toolCalls: Array<{ toolName: string; input: unknown }>;
|
|
43
|
+
toolResults: Array<{ toolName: string; output: unknown }>;
|
|
44
|
+
steps: number;
|
|
45
|
+
estimatedCostUsd?: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface ForgeAgentRuntime {
|
|
49
|
+
run(input: ForgeRunAgentInput): Promise<ForgeRunAgentResult>;
|
|
50
|
+
}
|
|
51
|
+
|
|
14
52
|
export interface ForgeContext {
|
|
15
53
|
db: ForgeRecord;
|
|
16
54
|
emit(event: string, payload?: Record<string, unknown>): Promise<void> | void;
|
|
17
55
|
telemetry: ForgeTelemetry;
|
|
18
56
|
secrets: ForgeRecord;
|
|
57
|
+
agent?: ForgeAgentRuntime;
|
|
19
58
|
auth?: {
|
|
20
59
|
userId?: string;
|
|
21
60
|
tenantId?: string;
|
|
@@ -44,6 +83,41 @@ export type ForgeActionDefinition<TEvent = unknown, TResult = unknown> = Record<
|
|
|
44
83
|
handler: (ctx: ForgeContext, event: TEvent) => TResult | Promise<TResult>;
|
|
45
84
|
};
|
|
46
85
|
|
|
86
|
+
export type ForgeAiToolRisk = "read" | "write" | "external" | "destructive";
|
|
87
|
+
|
|
88
|
+
export interface ForgeAiToolRuntimeContext {
|
|
89
|
+
secrets: ForgeRecord;
|
|
90
|
+
env: Record<string, string | undefined>;
|
|
91
|
+
telemetry: ForgeTelemetry;
|
|
92
|
+
auth?: ForgeContext["auth"];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export type ForgeAiToolDefinition<TArgs = unknown, TResult = unknown> = Record<string, unknown> & {
|
|
96
|
+
description: string;
|
|
97
|
+
inputSchema: unknown;
|
|
98
|
+
outputSchema?: unknown;
|
|
99
|
+
strict?: boolean;
|
|
100
|
+
needsApproval?: boolean | ((args: TArgs) => boolean | Promise<boolean>);
|
|
101
|
+
risk?: ForgeAiToolRisk;
|
|
102
|
+
handler: (
|
|
103
|
+
ctx: ForgeAiToolRuntimeContext,
|
|
104
|
+
args: TArgs,
|
|
105
|
+
) => TResult | Promise<TResult>;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export type ForgeAgentStopWhen =
|
|
109
|
+
| { kind: "stepCount"; maxSteps: number }
|
|
110
|
+
| { kind: "toolCall"; toolName: string };
|
|
111
|
+
|
|
112
|
+
export type ForgeAgentDefinition = Record<string, unknown> & {
|
|
113
|
+
provider?: "openai" | "anthropic" | "gateway";
|
|
114
|
+
model: string;
|
|
115
|
+
instructions: string;
|
|
116
|
+
tools?: Record<string, ForgeAiToolDefinition> | string[];
|
|
117
|
+
stopWhen?: ForgeAgentStopWhen;
|
|
118
|
+
maxSteps?: number;
|
|
119
|
+
};
|
|
120
|
+
|
|
47
121
|
export function defineTable<T extends Record<string, unknown>>(definition: T): T {
|
|
48
122
|
return definition;
|
|
49
123
|
}
|
|
@@ -80,6 +154,14 @@ export function action<T extends ForgeActionDefinition>(definition: T): ForgeDef
|
|
|
80
154
|
return definition;
|
|
81
155
|
}
|
|
82
156
|
|
|
157
|
+
export function aiTool<T extends ForgeAiToolDefinition>(definition: T): ForgeDefinition<T> {
|
|
158
|
+
return definition;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export function agent<T extends ForgeAgentDefinition>(definition: T): ForgeDefinition<T> {
|
|
162
|
+
return definition;
|
|
163
|
+
}
|
|
164
|
+
|
|
83
165
|
export function event(name: string): { kind: "event"; name: string } {
|
|
84
166
|
return { kind: "event", name };
|
|
85
167
|
}
|
package/src/forge/version.ts
CHANGED