Skip to content

Commit aaf41d1

Browse files
committed
Update hercules version and abstract docs more
1 parent bee73bb commit aaf41d1

76 files changed

Lines changed: 2392 additions & 184 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

actions/ai-action/.example.env

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
HERCULES_AUTH_TOKEN=your_hercules_auth_token_here
2+
HERCULES_AQUILA_URL=https://aquila.hercules-ci.com
3+
HERCULES_ACTION_ID=gls-action
4+
HERCULES_SDK_VERSION=0.0.0

actions/ai-action/Dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
FROM node:24-alpine
2+
3+
WORKDIR /app
4+
5+
COPY code0-tech-* ./
6+
7+
COPY package.json package-lock.json tsconfig.base.json turbo.json ./
8+
9+
COPY actions/ai ./actions/ai-action
10+
11+
RUN npm ci
12+
13+
WORKDIR /app/actions/ai-action
14+
15+
RUN npm run build
16+
17+
18+
CMD ["npm", "run", "start", "-w", "@code0-tech/ai-action"]

actions/ai-action/package.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "@code0-tech/ai-action",
3+
"version": "0.0.0",
4+
"private": true,
5+
"type": "module",
6+
"main": "./dist/index.js",
7+
"types": "./dist/index.d.ts",
8+
"scripts": {
9+
"build": "vite build",
10+
"lint": "eslint .",
11+
"test": "vitest run",
12+
"start": "node dist/main.js",
13+
"generate:docs": "npm run build && node dist/generateDocs.js"
14+
},
15+
"dependencies": {
16+
"@ai-sdk/anthropic": "^3.0.66",
17+
"@ai-sdk/google": "^3.0.57",
18+
"@ai-sdk/openai": "^3.0.50",
19+
"ai": "^6.0.145",
20+
"ai-sdk-ollama": "^3.8.2",
21+
"ollama-ai-provider-v2": "^3.5.0",
22+
"ts-morph": "^27.0.2"
23+
}
24+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import {RegistryState, runStandardActionDocs, StandardActionDocsConfig} from "../../../src/standardActionDocs"
2+
import {loadAllDefinitions, loadAllDefinitionsByModules} from "../src/helpers";
3+
import {ActionSdk} from "@code0-tech/hercules";
4+
5+
export function generateAIConfig(): StandardActionDocsConfig {
6+
return {
7+
actionName: "AI",
8+
typePrefix: "AI_",
9+
typesOutputPath: "../../docs/Actions/AI/types.mdx",
10+
functionsOutputPath: "../../docs/Actions/AI/functions.mdx",
11+
loadAllDefinitions: loadAllDefinitions,
12+
typeLinkOverrides: {},
13+
typesCopy: {
14+
title: "Datatypes",
15+
description: "All data types registered by the AI Action.",
16+
heading: "AI Action Types",
17+
intro: `The AI Action registers the following data types with the Hercules platform.`,
18+
},
19+
functionsCopy: {
20+
title: "Functions",
21+
description: "All functions registered by the AI Action.",
22+
intro: ""
23+
},
24+
functionGroups: [
25+
{
26+
heading: "OpenAI Models",
27+
loadFunctions: async (sdk) => await loadAllDefinitionsByModules(sdk, import.meta.glob("../src/functions/models/openai/common.ts")),
28+
},
29+
{
30+
heading: "Google Models",
31+
loadFunctions: async (sdk) => await loadAllDefinitionsByModules(sdk, import.meta.glob("../src/functions/models/google/common.ts")),
32+
},
33+
{
34+
heading: "Anthropic Models",
35+
loadFunctions: async (sdk) => await loadAllDefinitionsByModules(sdk, import.meta.glob("../src/functions/models/anthropic/common.ts")),
36+
},
37+
{
38+
heading: "Ollama",
39+
loadFunctions: async (sdk) => await loadAllDefinitionsByModules(sdk, import.meta.glob("../src/functions/models/ollama/common.ts")),
40+
},
41+
],
42+
}
43+
}
44+
45+
await runStandardActionDocs(generateAIConfig())
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import {ActionSdk} from "@code0-tech/hercules";
2+
import {z} from "zod";
3+
import {singleZodSchemaToTypescriptDef} from "../../../../src/helpers"
4+
import {ModelSchema} from "../types/aiModel";
5+
6+
const providers = ModelSchema.shape.provider.options;
7+
8+
export const AuthTokensConfigSchema = z.object(
9+
Object.fromEntries(
10+
providers.map((option) => [
11+
option,
12+
z.object({
13+
defaultToken: z.string(),
14+
overrides: z.record(z.string(), z.string())
15+
})
16+
])
17+
)
18+
);
19+
20+
export type AuthTokensConfig = z.infer<typeof AuthTokensConfigSchema>
21+
22+
export default (sdk: ActionSdk) => {
23+
sdk.registerDataTypes({
24+
type: singleZodSchemaToTypescriptDef("AI_CONFIG_AUTH_TOKENS_TYPE", AuthTokensConfigSchema),
25+
identifier: "AI_CONFIG_AUTH_TOKENS_TYPE"
26+
})
27+
28+
return sdk.registerConfigDefinitions({
29+
type: "AI_CONFIG_AUTH_TOKENS_TYPE",
30+
identifier: "AUTH_TOKENS",
31+
linkedDataTypes: ["AI_CONFIG_AUTH_TOKENS_TYPE"],
32+
name: [
33+
{
34+
code: "en-US",
35+
content: "Auth tokens"
36+
}
37+
],
38+
description: [
39+
{
40+
code: "en-US",
41+
content: "Every configured "
42+
}
43+
]
44+
})
45+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {ActionSdk} from "@code0-tech/hercules";
2+
import {singleZodSchemaToTypescriptDef} from "../../../../../../src/helpers";
3+
import z from "zod";
4+
5+
export const AnthropicSettingsSchema = z.looseObject({
6+
7+
})
8+
9+
export default (sdk: ActionSdk) => {
10+
return sdk.registerDataTypes({
11+
type: singleZodSchemaToTypescriptDef("ANTHROPIC_SETTINGS", AnthropicSettingsSchema),
12+
identifier: "ANTHROPIC_SETTINGS"
13+
})
14+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {ActionSdk} from "@code0-tech/hercules";
2+
import {Model} from "../../../types/aiModel";
3+
import {registerDefaultCommonAiModelFunction} from "../../../helpers";
4+
5+
export default (sdk: ActionSdk, provider: Model["provider"], model: Model["model"]) => {
6+
if (!provider || !model) return Promise.resolve()
7+
return registerDefaultCommonAiModelFunction(sdk, "AI_ANTHROPIC_SETTINGS", provider, model)
8+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import {ActionSdk, HerculesFunctionContext} from "@code0-tech/hercules";
2+
import {Model} from "../../types/aiModel";
3+
4+
5+
export default (sdk: ActionSdk) => {
6+
return sdk.registerRuntimeFunctionDefinitions({
7+
definition: {
8+
runtimeName: "createModel",
9+
signature: "(settings: object, maxOutputTokens?: number, temperature?: number, maxRetries?: number, stopSequences?: string[], presencePenalty?: number, frequencyPenalty?: number, seed?: number) => AI_MODEL",
10+
parameters: [
11+
{
12+
runtimeName: "provider",
13+
},
14+
{
15+
runtimeName: "model",
16+
},
17+
{
18+
runtimeName: "settings",
19+
},
20+
{
21+
runtimeName: "maxOutputTokens"
22+
},
23+
{
24+
runtimeName: "temperature"
25+
},
26+
{
27+
runtimeName: "maxRetries"
28+
},
29+
{
30+
runtimeName: "stopSequences"
31+
},
32+
{
33+
runtimeName: "presencePenalty"
34+
},
35+
{
36+
runtimeName: "frequencyPenalty"
37+
},
38+
{
39+
runtimeName: "seed"
40+
}
41+
],
42+
},
43+
handler: (provider: Model["provider"],
44+
model: Model["model"],
45+
maxOutputTokens?: Model["maxOutputTokens"],
46+
temperature?: Model["temperature"],
47+
maxRetries?: Model["maxRetries"],
48+
stopSequences?: Model["stopSequences"],
49+
presencePenalty?: Model["presencePenalty"],
50+
frequencyPenalty?: Model["frequencyPenalty"],
51+
seed?: Model["seed"]
52+
): Model => {
53+
return {
54+
provider: provider,
55+
model: model,
56+
maxOutputTokens: maxOutputTokens,
57+
frequencyPenalty: frequencyPenalty,
58+
presencePenalty: presencePenalty,
59+
stopSequences: stopSequences,
60+
temperature: temperature,
61+
maxRetries: maxRetries,
62+
seed: seed
63+
}
64+
}
65+
})
66+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import {ActionSdk} from "@code0-tech/hercules";
2+
import {Model} from "../../../types/aiModel";
3+
import {registerDefaultCommonAiModelFunction} from "../../../helpers";
4+
5+
export default (sdk: ActionSdk, provider: Model["provider"], model: Model["model"]) => {
6+
if (!provider || !model) return Promise.resolve()
7+
return registerDefaultCommonAiModelFunction(sdk, "AI_GOOGLE_SETTINGS", provider, model)
8+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {ActionSdk} from "@code0-tech/hercules";
2+
import {singleZodSchemaToTypescriptDef} from "../../../../../../src/helpers";
3+
import z from "zod";
4+
5+
export const GoogleSettingsSchema = z.looseObject({
6+
thinkingConfig: z.object({
7+
thinkingBudget: z.number().optional(),
8+
includeThoughts: z.boolean().optional(),
9+
thinkingLevel: z.enum(["minimal", "low", "medium", "high"]).optional()
10+
}).optional()
11+
})
12+
13+
export default (sdk: ActionSdk) => {
14+
return sdk.registerDataTypes({
15+
type: singleZodSchemaToTypescriptDef("AI_GOOGLE_SETTINGS", GoogleSettingsSchema),
16+
identifier: "AI_GOOGLE_SETTINGS"
17+
})
18+
}

0 commit comments

Comments
 (0)