@inkeep/agents-cli 0.58.9 → 0.58.12
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/agents-cli/package.js +3 -2
- package/dist/agents-cli/package.js.map +1 -0
- package/dist/api.js +7 -11
- package/dist/api.js.map +1 -0
- package/dist/commands/add-ui.js +2 -1
- package/dist/commands/add-ui.js.map +1 -0
- package/dist/commands/add.js +2 -1
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/config.js +2 -1
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dev.js +2 -1
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list-agents.js +2 -1
- package/dist/commands/list-agents.js.map +1 -0
- package/dist/commands/login.js +2 -1
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.js +2 -1
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/profile.js +2 -1
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/pull-v4/component-parser.js +2 -1
- package/dist/commands/pull-v4/component-parser.js.map +1 -0
- package/dist/commands/pull-v4/component-registry.js +2 -1
- package/dist/commands/pull-v4/component-registry.js.map +1 -0
- package/dist/commands/pull-v4/generators/agent-generator.helpers.js +186 -0
- package/dist/commands/pull-v4/generators/agent-generator.helpers.js.map +1 -0
- package/dist/commands/pull-v4/generators/agent-generator.js +70 -209
- package/dist/commands/pull-v4/generators/agent-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/artifact-component-generator.js +13 -16
- package/dist/commands/pull-v4/generators/artifact-component-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/context-config-generator.js +38 -24
- package/dist/commands/pull-v4/generators/context-config-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/credential-generator.js +14 -10
- package/dist/commands/pull-v4/generators/credential-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/data-component-generator.js +10 -12
- package/dist/commands/pull-v4/generators/data-component-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/environment-generator.js +11 -91
- package/dist/commands/pull-v4/generators/environment-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/external-agent-generator.js +22 -39
- package/dist/commands/pull-v4/generators/external-agent-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/function-tool-generator.js +19 -31
- package/dist/commands/pull-v4/generators/function-tool-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/mcp-tool-generator.js +30 -71
- package/dist/commands/pull-v4/generators/mcp-tool-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/project-generator.js +64 -31
- package/dist/commands/pull-v4/generators/project-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/skill-generator.js +4 -1
- package/dist/commands/pull-v4/generators/skill-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/status-component-generator.js +19 -19
- package/dist/commands/pull-v4/generators/status-component-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/sub-agent-generator.helpers.js +84 -0
- package/dist/commands/pull-v4/generators/sub-agent-generator.helpers.js.map +1 -0
- package/dist/commands/pull-v4/generators/sub-agent-generator.js +82 -113
- package/dist/commands/pull-v4/generators/sub-agent-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/trigger-generator.js +21 -30
- package/dist/commands/pull-v4/generators/trigger-generator.js.map +1 -0
- package/dist/commands/pull-v4/introspect/demo-project.js +1616 -0
- package/dist/commands/pull-v4/introspect/demo-project.js.map +1 -0
- package/dist/commands/pull-v4/introspect/index.js +17 -16
- package/dist/commands/pull-v4/introspect/index.js.map +1 -0
- package/dist/commands/pull-v4/introspect/test-helpers.js +5 -3
- package/dist/commands/pull-v4/introspect/test-helpers.js.map +1 -0
- package/dist/commands/pull-v4/introspect-generator.js +606 -93
- package/dist/commands/pull-v4/introspect-generator.js.map +1 -0
- package/dist/commands/pull-v4/module-merge.js +2 -1
- package/dist/commands/pull-v4/module-merge.js.map +1 -0
- package/dist/commands/pull-v4/scheduled-trigger-generator.js +16 -17
- package/dist/commands/pull-v4/scheduled-trigger-generator.js.map +1 -0
- package/dist/commands/pull-v4/utils.js +90 -28
- package/dist/commands/pull-v4/utils.js.map +1 -0
- package/dist/commands/push.js +2 -1
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/status.js +2 -1
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.js +2 -1
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/whoami.js +2 -1
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -0
- package/dist/env.js +2 -1
- package/dist/env.js.map +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -0
- package/dist/instrumentation.js +2 -1
- package/dist/instrumentation.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/array.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/array.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/base.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/base.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/character.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/character.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/css.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/css.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/json.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/json.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/line.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/line.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/sentence.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/sentence.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/word.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/diff/word.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/patch/create.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/patch/create.js.map +1 -0
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/util/string.js +2 -1
- package/dist/node_modules/.pnpm/diff@8.0.3/node_modules/diff/libesm/util/string.js.map +1 -0
- package/dist/utils/background-version-check.js +2 -1
- package/dist/utils/background-version-check.js.map +1 -0
- package/dist/utils/ci-environment.js +2 -1
- package/dist/utils/ci-environment.js.map +1 -0
- package/dist/utils/cli-pipeline.js +2 -1
- package/dist/utils/cli-pipeline.js.map +1 -0
- package/dist/utils/config.js +2 -1
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/credentials.js +2 -1
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/environment-loader.js +2 -1
- package/dist/utils/environment-loader.js.map +1 -0
- package/dist/utils/file-finder.js +2 -1
- package/dist/utils/file-finder.js.map +1 -0
- package/dist/utils/json-comparator.js +2 -1
- package/dist/utils/json-comparator.js.map +1 -0
- package/dist/utils/json-comparison.js +2 -1
- package/dist/utils/json-comparison.js.map +1 -0
- package/dist/utils/mcp-runner.js +2 -1
- package/dist/utils/mcp-runner.js.map +1 -0
- package/dist/utils/model-config.js +2 -1
- package/dist/utils/model-config.js.map +1 -0
- package/dist/utils/package-manager.js +2 -1
- package/dist/utils/package-manager.js.map +1 -0
- package/dist/utils/profile-config.js +2 -1
- package/dist/utils/profile-config.js.map +1 -0
- package/dist/utils/profiles/profile-manager.js +2 -1
- package/dist/utils/profiles/profile-manager.js.map +1 -0
- package/dist/utils/profiles/types.js +2 -1
- package/dist/utils/profiles/types.js.map +1 -0
- package/dist/utils/project-directory.js +2 -1
- package/dist/utils/project-directory.js.map +1 -0
- package/dist/utils/project-loader.js +2 -1
- package/dist/utils/project-loader.js.map +1 -0
- package/dist/utils/schema-introspection.js +2 -1
- package/dist/utils/schema-introspection.js.map +1 -0
- package/dist/utils/templates.js +2 -1
- package/dist/utils/templates.js.map +1 -0
- package/dist/utils/tsx-loader.js +2 -1
- package/dist/utils/tsx-loader.js.map +1 -0
- package/dist/utils/version-check.js +2 -1
- package/dist/utils/version-check.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { addReferenceGetterProperty, addStringProperty, addValueToObject, collectTemplateVariableNames,
|
|
1
|
+
import { addReferenceGetterProperty, addStringProperty, addValueToObject, collectTemplateVariableNames, createFactoryDefinition, formatTemplate, hasReferences, isPlainObject, resolveContextTemplateImports, resolveNonCollidingName, resolveReferenceName } from "../utils.js";
|
|
2
|
+
import { collectCanDelegateToReferences, collectCanUseReferences, collectSkills, resolveSubAgentName, resolveSubAgentVariableName } from "./sub-agent-generator.helpers.js";
|
|
2
3
|
import { FullAgentAgentInsertSchema } from "@inkeep/agents-core";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
import { SyntaxKind } from "ts-morph";
|
|
@@ -13,18 +14,29 @@ const ReferenceOverridesSchema = z.object({
|
|
|
13
14
|
dataComponents: ReferenceNameByIdSchema.optional(),
|
|
14
15
|
artifactComponents: ReferenceNameByIdSchema.optional()
|
|
15
16
|
});
|
|
17
|
+
const ReferencePathOverridesSchema = z.object({
|
|
18
|
+
tools: ReferenceNameByIdSchema.optional(),
|
|
19
|
+
subAgents: ReferenceNameByIdSchema.optional(),
|
|
20
|
+
agents: ReferenceNameByIdSchema.optional(),
|
|
21
|
+
externalAgents: ReferenceNameByIdSchema.optional()
|
|
22
|
+
});
|
|
16
23
|
const ContextTemplateReferenceSchema = z.object({
|
|
17
24
|
name: z.string().nonempty(),
|
|
18
25
|
local: z.boolean().optional()
|
|
19
26
|
});
|
|
20
|
-
const
|
|
27
|
+
const MySchema = FullAgentAgentInsertSchema.pick({
|
|
21
28
|
id: true,
|
|
29
|
+
prompt: true,
|
|
30
|
+
name: true,
|
|
22
31
|
description: true,
|
|
23
|
-
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
stopWhen: true
|
|
33
|
+
});
|
|
34
|
+
const SubAgentSchema = z.strictObject({
|
|
35
|
+
...MySchema.shape,
|
|
36
|
+
prompt: z.preprocess((v) => v || void 0, MySchema.shape.prompt),
|
|
37
|
+
description: z.preprocess((v) => v || void 0, MySchema.shape.description),
|
|
38
|
+
stopWhen: z.preprocess((v) => v ?? void 0, MySchema.shape.stopWhen),
|
|
39
|
+
models: z.preprocess((v) => v ?? void 0, z.looseObject({}).optional()),
|
|
28
40
|
skills: z.array(z.unknown()).optional(),
|
|
29
41
|
canUse: z.array(z.unknown()).optional(),
|
|
30
42
|
canDelegateTo: z.array(z.unknown()).optional(),
|
|
@@ -32,29 +44,36 @@ const SubAgentSchema = FullAgentAgentInsertSchema.pick({
|
|
|
32
44
|
dataComponents: z.array(z.string()).optional(),
|
|
33
45
|
artifactComponents: z.array(z.string()).optional(),
|
|
34
46
|
referenceOverrides: ReferenceOverridesSchema.optional(),
|
|
47
|
+
referencePathOverrides: ReferencePathOverridesSchema.optional(),
|
|
35
48
|
contextConfigId: z.string().nonempty().optional(),
|
|
36
49
|
contextConfigReference: ContextTemplateReferenceSchema.optional(),
|
|
37
50
|
contextConfigHeadersReference: ContextTemplateReferenceSchema.optional()
|
|
38
51
|
});
|
|
39
|
-
function generateSubAgentDefinition(data) {
|
|
52
|
+
function generateSubAgentDefinition({ subAgentId, ...data }) {
|
|
40
53
|
const result = SubAgentSchema.safeParse(data);
|
|
41
54
|
if (!result.success) throw new Error(`Validation failed for sub-agent:\n${z.prettifyError(result.error)}`);
|
|
42
55
|
const parsed = result.data;
|
|
56
|
+
const subAgentVariableName = resolveSubAgentVariableName(parsed.id, parsed.name);
|
|
43
57
|
const { sourceFile, configObject } = createFactoryDefinition({
|
|
44
58
|
importName: "subAgent",
|
|
45
|
-
variableName:
|
|
59
|
+
variableName: subAgentVariableName
|
|
46
60
|
});
|
|
61
|
+
const reservedReferenceNames = new Set([subAgentVariableName]);
|
|
47
62
|
const promptTemplateVariables = typeof parsed.prompt === "string" ? collectTemplateVariableNames(parsed.prompt) : [];
|
|
48
63
|
const hasContextTemplateVariables = promptTemplateVariables.some((variableName) => !variableName.startsWith("headers."));
|
|
49
64
|
const hasHeadersTemplateVariables = promptTemplateVariables.some((variableName) => variableName.startsWith("headers."));
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
const contextImportResolution = resolveContextTemplateImports({
|
|
66
|
+
reservedNames: reservedReferenceNames,
|
|
67
|
+
shouldResolveContextReference: hasContextTemplateVariables && Boolean(parsed.contextConfigId),
|
|
68
|
+
shouldResolveHeadersReference: hasHeadersTemplateVariables && Boolean(parsed.contextConfigId),
|
|
69
|
+
contextConfigReference: parsed.contextConfigReference,
|
|
70
|
+
contextConfigHeadersReference: parsed.contextConfigHeadersReference
|
|
71
|
+
});
|
|
72
|
+
if (contextImportResolution.namedImports.length > 0 && parsed.contextConfigId) sourceFile.addImportDeclaration({
|
|
73
|
+
namedImports: contextImportResolution.namedImports,
|
|
55
74
|
moduleSpecifier: `../../context-configs/${parsed.contextConfigId}`
|
|
56
75
|
});
|
|
57
|
-
addCanUseToolImports(sourceFile, parsed.canUse, parsed.referenceOverrides?.tools);
|
|
76
|
+
const canUseToolReferenceOverrides = addCanUseToolImports(sourceFile, parsed.canUse, parsed.referenceOverrides?.tools, parsed.referencePathOverrides?.tools, reservedReferenceNames);
|
|
58
77
|
addDataComponentImports(sourceFile, parsed.dataComponents, parsed.referenceOverrides?.dataComponents);
|
|
59
78
|
addArtifactComponentImports(sourceFile, parsed.artifactComponents, parsed.referenceOverrides?.artifactComponents);
|
|
60
79
|
addDelegateTargetImports(sourceFile, {
|
|
@@ -65,25 +84,43 @@ function generateSubAgentDefinition(data) {
|
|
|
65
84
|
subAgents: parsed.referenceOverrides?.subAgents,
|
|
66
85
|
agents: parsed.referenceOverrides?.agents,
|
|
67
86
|
externalAgents: parsed.referenceOverrides?.externalAgents
|
|
87
|
+
},
|
|
88
|
+
referencePathOverrides: {
|
|
89
|
+
subAgents: parsed.referencePathOverrides?.subAgents,
|
|
90
|
+
agents: parsed.referencePathOverrides?.agents,
|
|
91
|
+
externalAgents: parsed.referencePathOverrides?.externalAgents
|
|
68
92
|
}
|
|
69
93
|
});
|
|
70
94
|
writeSubAgentConfig(configObject, {
|
|
71
|
-
contextReference:
|
|
72
|
-
headersReference:
|
|
73
|
-
}, parsed);
|
|
95
|
+
contextReference: contextImportResolution.contextReferenceName,
|
|
96
|
+
headersReference: contextImportResolution.headersReferenceName
|
|
97
|
+
}, canUseToolReferenceOverrides, parsed);
|
|
74
98
|
return sourceFile;
|
|
75
99
|
}
|
|
76
|
-
function addCanUseToolImports(sourceFile, canUse, toolReferenceOverrides) {
|
|
100
|
+
function addCanUseToolImports(sourceFile, canUse, toolReferenceOverrides, toolReferencePathOverrides, reservedReferenceNames) {
|
|
77
101
|
const toolImportsById = /* @__PURE__ */ new Map();
|
|
78
102
|
for (const item of canUse ?? []) {
|
|
79
103
|
const toolId = typeof item === "string" ? item : isPlainObject(item) && typeof item.toolId === "string" ? item.toolId : void 0;
|
|
80
104
|
if (!toolId || toolImportsById.has(toolId)) continue;
|
|
81
|
-
toolImportsById.set(toolId,
|
|
105
|
+
toolImportsById.set(toolId, {
|
|
106
|
+
importName: resolveReferenceName(toolId, [toolReferenceOverrides]),
|
|
107
|
+
modulePath: resolveReferenceName(toolId, [toolReferencePathOverrides])
|
|
108
|
+
});
|
|
82
109
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
110
|
+
const localReferenceNamesByToolId = {};
|
|
111
|
+
const localNames = reservedReferenceNames ?? /* @__PURE__ */ new Set();
|
|
112
|
+
for (const [toolId, { importName, modulePath }] of toolImportsById) {
|
|
113
|
+
const localName = resolveNonCollidingName(importName, localNames);
|
|
114
|
+
localReferenceNamesByToolId[toolId] = localName;
|
|
115
|
+
sourceFile.addImportDeclaration({
|
|
116
|
+
namedImports: [importName === localName ? importName : {
|
|
117
|
+
name: importName,
|
|
118
|
+
alias: localName
|
|
119
|
+
}],
|
|
120
|
+
moduleSpecifier: `../../tools/${modulePath}`
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return localReferenceNamesByToolId;
|
|
87
124
|
}
|
|
88
125
|
function addDataComponentImports(sourceFile, dataComponents, dataComponentReferenceOverrides) {
|
|
89
126
|
addReferenceImports(sourceFile, dataComponents, "../../data-components", dataComponentReferenceOverrides);
|
|
@@ -105,47 +142,51 @@ function addReferenceImports(sourceFile, references, basePath, referenceOverride
|
|
|
105
142
|
function addDelegateTargetImports(sourceFile, options) {
|
|
106
143
|
const importsByTarget = /* @__PURE__ */ new Map();
|
|
107
144
|
for (const item of options.canDelegateTo ?? []) {
|
|
108
|
-
const resolvedTarget = resolveDelegateTargetImport(item, options.referenceOverrides);
|
|
145
|
+
const resolvedTarget = resolveDelegateTargetImport(item, options.referenceOverrides, options.referencePathOverrides);
|
|
109
146
|
if (!resolvedTarget) continue;
|
|
110
147
|
if (resolvedTarget.type === "subAgents" && resolvedTarget.id === options.currentSubAgentId) continue;
|
|
111
148
|
importsByTarget.set(`${resolvedTarget.type}:${resolvedTarget.id}`, resolvedTarget);
|
|
112
149
|
}
|
|
113
150
|
for (const targetId of options.canTransferTo ?? []) {
|
|
114
|
-
const resolvedTarget = resolveDelegateTargetImport(targetId, options.referenceOverrides);
|
|
151
|
+
const resolvedTarget = resolveDelegateTargetImport(targetId, options.referenceOverrides, options.referencePathOverrides);
|
|
115
152
|
if (!resolvedTarget) continue;
|
|
116
153
|
if (resolvedTarget.type === "subAgents" && resolvedTarget.id === options.currentSubAgentId) continue;
|
|
117
154
|
importsByTarget.set(`${resolvedTarget.type}:${resolvedTarget.id}`, resolvedTarget);
|
|
118
155
|
}
|
|
119
156
|
for (const target of importsByTarget.values()) sourceFile.addImportDeclaration({
|
|
120
157
|
namedImports: [target.name],
|
|
121
|
-
moduleSpecifier: resolveDelegateImportModuleSpecifier(target.type, target.id)
|
|
158
|
+
moduleSpecifier: resolveDelegateImportModuleSpecifier(target.type, target.id, target.modulePath)
|
|
122
159
|
});
|
|
123
160
|
}
|
|
124
|
-
function resolveDelegateTargetImport(canDelegateToEntry, referenceOverrides) {
|
|
161
|
+
function resolveDelegateTargetImport(canDelegateToEntry, referenceOverrides, referencePathOverrides) {
|
|
125
162
|
if (typeof canDelegateToEntry === "string") {
|
|
126
163
|
const resolvedType = resolveDelegateTargetType(canDelegateToEntry, referenceOverrides);
|
|
127
164
|
if (!resolvedType) return;
|
|
128
165
|
return {
|
|
129
166
|
type: resolvedType,
|
|
130
167
|
id: canDelegateToEntry,
|
|
131
|
-
name: resolveReferenceName(canDelegateToEntry, [referenceOverrides[resolvedType]])
|
|
168
|
+
name: resolveReferenceName(canDelegateToEntry, [referenceOverrides[resolvedType]]),
|
|
169
|
+
...resolvedType === "subAgents" && { modulePath: referencePathOverrides?.subAgents?.[canDelegateToEntry] } || resolvedType === "agents" && { modulePath: referencePathOverrides?.agents?.[canDelegateToEntry] } || resolvedType === "externalAgents" && { modulePath: referencePathOverrides?.externalAgents?.[canDelegateToEntry] }
|
|
132
170
|
};
|
|
133
171
|
}
|
|
134
172
|
if (!isPlainObject(canDelegateToEntry)) return;
|
|
135
173
|
if (typeof canDelegateToEntry.subAgentId === "string") return {
|
|
136
174
|
type: "subAgents",
|
|
137
175
|
id: canDelegateToEntry.subAgentId,
|
|
138
|
-
name: resolveReferenceName(canDelegateToEntry.subAgentId, [referenceOverrides.subAgents])
|
|
176
|
+
name: resolveReferenceName(canDelegateToEntry.subAgentId, [referenceOverrides.subAgents]),
|
|
177
|
+
modulePath: referencePathOverrides?.subAgents?.[canDelegateToEntry.subAgentId]
|
|
139
178
|
};
|
|
140
179
|
if (typeof canDelegateToEntry.agentId === "string") return {
|
|
141
180
|
type: "agents",
|
|
142
181
|
id: canDelegateToEntry.agentId,
|
|
143
|
-
name: resolveReferenceName(canDelegateToEntry.agentId, [referenceOverrides.agents])
|
|
182
|
+
name: resolveReferenceName(canDelegateToEntry.agentId, [referenceOverrides.agents]),
|
|
183
|
+
modulePath: referencePathOverrides?.agents?.[canDelegateToEntry.agentId]
|
|
144
184
|
};
|
|
145
185
|
if (typeof canDelegateToEntry.externalAgentId === "string") return {
|
|
146
186
|
type: "externalAgents",
|
|
147
187
|
id: canDelegateToEntry.externalAgentId,
|
|
148
|
-
name: resolveReferenceName(canDelegateToEntry.externalAgentId, [referenceOverrides.externalAgents])
|
|
188
|
+
name: resolveReferenceName(canDelegateToEntry.externalAgentId, [referenceOverrides.externalAgents]),
|
|
189
|
+
modulePath: referencePathOverrides?.externalAgents?.[canDelegateToEntry.externalAgentId]
|
|
149
190
|
};
|
|
150
191
|
}
|
|
151
192
|
function resolveDelegateTargetType(targetId, referenceOverrides) {
|
|
@@ -154,19 +195,20 @@ function resolveDelegateTargetType(targetId, referenceOverrides) {
|
|
|
154
195
|
if (referenceOverrides.externalAgents?.[targetId]) return "externalAgents";
|
|
155
196
|
return "subAgents";
|
|
156
197
|
}
|
|
157
|
-
function resolveDelegateImportModuleSpecifier(type, id) {
|
|
198
|
+
function resolveDelegateImportModuleSpecifier(type, id, modulePath) {
|
|
199
|
+
const path = modulePath ?? id;
|
|
158
200
|
switch (type) {
|
|
159
|
-
case "subAgents": return `./${
|
|
160
|
-
case "agents": return `../${
|
|
161
|
-
case "externalAgents": return `../../external-agents/${
|
|
201
|
+
case "subAgents": return `./${path}`;
|
|
202
|
+
case "agents": return `../${path}`;
|
|
203
|
+
case "externalAgents": return `../../external-agents/${path}`;
|
|
162
204
|
}
|
|
163
205
|
}
|
|
164
|
-
function writeSubAgentConfig(configObject, templateReferences, { dataComponents, name, canDelegateTo, canTransferTo, skills, artifactComponents, canUse, referenceOverrides, contextConfigId: _contextConfigId, contextConfigReference: _contextConfigReference, contextConfigHeadersReference: _contextConfigHeadersReference, ...rest }) {
|
|
206
|
+
function writeSubAgentConfig(configObject, templateReferences, canUseToolReferenceOverrides, { dataComponents, name, canDelegateTo, canTransferTo, skills, artifactComponents, canUse, referenceOverrides, referencePathOverrides: _referencePathOverrides, contextConfigId: _contextConfigId, contextConfigReference: _contextConfigReference, contextConfigHeadersReference: _contextConfigHeadersReference, ...rest }) {
|
|
165
207
|
rest = { ...rest };
|
|
166
208
|
rest.prompt &&= formatTemplate(rest.prompt, templateReferences);
|
|
167
209
|
for (const [k, v] of Object.entries(rest)) addValueToObject(configObject, k, v);
|
|
168
210
|
addStringProperty(configObject, "name", resolveSubAgentName(rest.id, name));
|
|
169
|
-
const canUseReferences = collectCanUseReferences(canUse, referenceOverrides?.tools);
|
|
211
|
+
const canUseReferences = collectCanUseReferences(canUse, Object.keys(canUseToolReferenceOverrides).length ? canUseToolReferenceOverrides : referenceOverrides?.tools);
|
|
170
212
|
if (canUseReferences.length) addReferenceGetterProperty(configObject, "canUse", canUseReferences);
|
|
171
213
|
const canDelegateToReferences = collectCanDelegateToReferences(canDelegateTo, {
|
|
172
214
|
subAgents: referenceOverrides?.subAgents,
|
|
@@ -190,80 +232,7 @@ function writeSubAgentConfig(configObject, templateReferences, { dataComponents,
|
|
|
190
232
|
for (const skill of collectedSkills) skillsArray.addElement(skill);
|
|
191
233
|
}
|
|
192
234
|
}
|
|
193
|
-
function resolveSubAgentName(subAgentId, name) {
|
|
194
|
-
if (name !== void 0) return name;
|
|
195
|
-
return subAgentId.replace(/[-_]/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").replace(/\b\w/g, (char) => char.toUpperCase());
|
|
196
|
-
}
|
|
197
|
-
function collectCanUseReferences(canUse, toolReferenceOverrides) {
|
|
198
|
-
if (!Array.isArray(canUse)) return [];
|
|
199
|
-
const references = [];
|
|
200
|
-
for (const item of canUse) {
|
|
201
|
-
if (typeof item === "string") {
|
|
202
|
-
references.push(resolveReferenceName(item, [toolReferenceOverrides]));
|
|
203
|
-
continue;
|
|
204
|
-
}
|
|
205
|
-
if (!isPlainObject(item)) continue;
|
|
206
|
-
const toolId = typeof item.toolId === "string" ? item.toolId : void 0;
|
|
207
|
-
if (!toolId) continue;
|
|
208
|
-
const toolReference = resolveReferenceName(toolId, [toolReferenceOverrides]);
|
|
209
|
-
const withConfig = {};
|
|
210
|
-
const selectedTools = Array.isArray(item.toolSelection) && item.toolSelection.length ? item.toolSelection : Array.isArray(item.selectedTools) && item.selectedTools.length ? item.selectedTools : void 0;
|
|
211
|
-
if (selectedTools) withConfig.selectedTools = selectedTools;
|
|
212
|
-
if (isPlainObject(item.headers) && Object.keys(item.headers).length) withConfig.headers = item.headers;
|
|
213
|
-
if (isPlainObject(item.toolPolicies) && Object.keys(item.toolPolicies).length) withConfig.toolPolicies = item.toolPolicies;
|
|
214
|
-
if (Object.keys(withConfig).length > 0) {
|
|
215
|
-
references.push(`${toolReference}.with(${formatInlineLiteral(withConfig)})`);
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
references.push(toolReference);
|
|
219
|
-
}
|
|
220
|
-
return references;
|
|
221
|
-
}
|
|
222
|
-
function collectCanDelegateToReferences(canDelegateTo, referenceOverrides) {
|
|
223
|
-
if (!Array.isArray(canDelegateTo)) return [];
|
|
224
|
-
const references = [];
|
|
225
|
-
for (const item of canDelegateTo) {
|
|
226
|
-
if (typeof item === "string") {
|
|
227
|
-
references.push(resolveReferenceName(item, [
|
|
228
|
-
referenceOverrides.subAgents,
|
|
229
|
-
referenceOverrides.agents,
|
|
230
|
-
referenceOverrides.externalAgents
|
|
231
|
-
]));
|
|
232
|
-
continue;
|
|
233
|
-
}
|
|
234
|
-
if (!isPlainObject(item)) continue;
|
|
235
|
-
const subAgentId = typeof item.subAgentId === "string" ? item.subAgentId : void 0;
|
|
236
|
-
const agentId = typeof item.agentId === "string" ? item.agentId : void 0;
|
|
237
|
-
const externalAgentId = typeof item.externalAgentId === "string" ? item.externalAgentId : void 0;
|
|
238
|
-
const targetId = subAgentId || agentId || externalAgentId;
|
|
239
|
-
if (!targetId) continue;
|
|
240
|
-
const targetReference = subAgentId ? resolveReferenceName(subAgentId, [referenceOverrides.subAgents]) : agentId ? resolveReferenceName(agentId, [referenceOverrides.agents]) : resolveReferenceName(targetId, [referenceOverrides.externalAgents]);
|
|
241
|
-
if (isPlainObject(item.headers) && Object.keys(item.headers).length > 0) {
|
|
242
|
-
references.push(`${targetReference}.with(${formatInlineLiteral({ headers: item.headers })})`);
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
references.push(targetReference);
|
|
246
|
-
}
|
|
247
|
-
return references;
|
|
248
|
-
}
|
|
249
|
-
function collectSkills(skills) {
|
|
250
|
-
if (!Array.isArray(skills)) return [];
|
|
251
|
-
const formattedSkills = [];
|
|
252
|
-
for (const skill of skills) {
|
|
253
|
-
if (typeof skill === "string") {
|
|
254
|
-
formattedSkills.push(formatInlineLiteral(skill));
|
|
255
|
-
continue;
|
|
256
|
-
}
|
|
257
|
-
if (!isPlainObject(skill)) continue;
|
|
258
|
-
const skillId = typeof skill.id === "string" ? skill.id : typeof skill.skillId === "string" ? skill.skillId : void 0;
|
|
259
|
-
if (!skillId) continue;
|
|
260
|
-
const formattedSkill = { id: skillId };
|
|
261
|
-
if (typeof skill.index === "number" && Number.isInteger(skill.index)) formattedSkill.index = skill.index;
|
|
262
|
-
if (typeof skill.alwaysLoaded === "boolean") formattedSkill.alwaysLoaded = skill.alwaysLoaded;
|
|
263
|
-
formattedSkills.push(formatInlineLiteral(formattedSkill));
|
|
264
|
-
}
|
|
265
|
-
return formattedSkills;
|
|
266
|
-
}
|
|
267
235
|
|
|
268
236
|
//#endregion
|
|
269
|
-
export { generateSubAgentDefinition };
|
|
237
|
+
export { generateSubAgentDefinition };
|
|
238
|
+
//# sourceMappingURL=sub-agent-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-agent-generator.js","names":[],"sources":["../../../../src/commands/pull-v4/generators/sub-agent-generator.ts"],"sourcesContent":["import { FullAgentAgentInsertSchema } from '@inkeep/agents-core';\nimport { type ObjectLiteralExpression, type SourceFile, SyntaxKind } from 'ts-morph';\nimport { z } from 'zod';\nimport {\n addReferenceGetterProperty,\n addStringProperty,\n addValueToObject,\n collectTemplateVariableNames,\n createFactoryDefinition,\n formatTemplate,\n hasReferences,\n isPlainObject,\n resolveContextTemplateImports,\n resolveNonCollidingName,\n resolveReferenceName,\n} from '../utils';\nimport {\n collectCanDelegateToReferences,\n collectCanUseReferences,\n collectSkills,\n resolveSubAgentName,\n resolveSubAgentVariableName,\n} from './sub-agent-generator.helpers';\n\nconst ReferenceNameByIdSchema = z.record(z.string(), z.string().nonempty());\n\nconst ReferenceOverridesSchema = z.object({\n tools: ReferenceNameByIdSchema.optional(),\n subAgents: ReferenceNameByIdSchema.optional(),\n agents: ReferenceNameByIdSchema.optional(),\n externalAgents: ReferenceNameByIdSchema.optional(),\n dataComponents: ReferenceNameByIdSchema.optional(),\n artifactComponents: ReferenceNameByIdSchema.optional(),\n});\n\nconst ReferencePathOverridesSchema = z.object({\n tools: ReferenceNameByIdSchema.optional(),\n subAgents: ReferenceNameByIdSchema.optional(),\n agents: ReferenceNameByIdSchema.optional(),\n externalAgents: ReferenceNameByIdSchema.optional(),\n});\n\nconst ContextTemplateReferenceSchema = z.object({\n name: z.string().nonempty(),\n local: z.boolean().optional(),\n});\n\nconst MySchema = FullAgentAgentInsertSchema.pick({\n id: true,\n prompt: true,\n name: true,\n description: true,\n stopWhen: true,\n});\n\nconst SubAgentSchema = z.strictObject({\n ...MySchema.shape,\n prompt: z.preprocess((v) => v || undefined, MySchema.shape.prompt),\n description: z.preprocess((v) => v || undefined, MySchema.shape.description),\n stopWhen: z.preprocess((v) => v ?? undefined, MySchema.shape.stopWhen),\n models: z.preprocess((v) => v ?? undefined, z.looseObject({}).optional()),\n skills: z.array(z.unknown()).optional(),\n canUse: z.array(z.unknown()).optional(),\n canDelegateTo: z.array(z.unknown()).optional(),\n canTransferTo: z.array(z.string()).optional(),\n dataComponents: z.array(z.string()).optional(),\n artifactComponents: z.array(z.string()).optional(),\n referenceOverrides: ReferenceOverridesSchema.optional(),\n referencePathOverrides: ReferencePathOverridesSchema.optional(),\n contextConfigId: z.string().nonempty().optional(),\n contextConfigReference: ContextTemplateReferenceSchema.optional(),\n contextConfigHeadersReference: ContextTemplateReferenceSchema.optional(),\n});\n\ntype SubAgentInput = z.input<typeof SubAgentSchema>;\ntype SubAgentOutput = z.output<typeof SubAgentSchema>;\n\nexport function generateSubAgentDefinition({\n subAgentId,\n ...data\n}: SubAgentInput & Record<string, unknown>): SourceFile {\n const result = SubAgentSchema.safeParse(data);\n if (!result.success) {\n throw new Error(`Validation failed for sub-agent:\\n${z.prettifyError(result.error)}`);\n }\n\n const parsed = result.data;\n const subAgentVariableName = resolveSubAgentVariableName(parsed.id, parsed.name);\n const { sourceFile, configObject } = createFactoryDefinition({\n importName: 'subAgent',\n variableName: subAgentVariableName,\n });\n const reservedReferenceNames = new Set([subAgentVariableName]);\n\n const promptTemplateVariables =\n typeof parsed.prompt === 'string' ? collectTemplateVariableNames(parsed.prompt) : [];\n const hasContextTemplateVariables = promptTemplateVariables.some(\n (variableName) => !variableName.startsWith('headers.')\n );\n const hasHeadersTemplateVariables = promptTemplateVariables.some((variableName) =>\n variableName.startsWith('headers.')\n );\n const contextImportResolution = resolveContextTemplateImports({\n reservedNames: reservedReferenceNames,\n shouldResolveContextReference: hasContextTemplateVariables && Boolean(parsed.contextConfigId),\n shouldResolveHeadersReference: hasHeadersTemplateVariables && Boolean(parsed.contextConfigId),\n contextConfigReference: parsed.contextConfigReference,\n contextConfigHeadersReference: parsed.contextConfigHeadersReference,\n });\n if (contextImportResolution.namedImports.length > 0 && parsed.contextConfigId) {\n sourceFile.addImportDeclaration({\n namedImports: contextImportResolution.namedImports,\n moduleSpecifier: `../../context-configs/${parsed.contextConfigId}`,\n });\n }\n\n const canUseToolReferenceOverrides = addCanUseToolImports(\n sourceFile,\n parsed.canUse,\n parsed.referenceOverrides?.tools,\n parsed.referencePathOverrides?.tools,\n reservedReferenceNames\n );\n addDataComponentImports(\n sourceFile,\n parsed.dataComponents,\n parsed.referenceOverrides?.dataComponents\n );\n addArtifactComponentImports(\n sourceFile,\n parsed.artifactComponents,\n parsed.referenceOverrides?.artifactComponents\n );\n addDelegateTargetImports(sourceFile, {\n currentSubAgentId: parsed.id,\n canDelegateTo: parsed.canDelegateTo,\n canTransferTo: parsed.canTransferTo,\n referenceOverrides: {\n subAgents: parsed.referenceOverrides?.subAgents,\n agents: parsed.referenceOverrides?.agents,\n externalAgents: parsed.referenceOverrides?.externalAgents,\n },\n referencePathOverrides: {\n subAgents: parsed.referencePathOverrides?.subAgents,\n agents: parsed.referencePathOverrides?.agents,\n externalAgents: parsed.referencePathOverrides?.externalAgents,\n },\n });\n\n writeSubAgentConfig(\n configObject,\n {\n contextReference: contextImportResolution.contextReferenceName,\n headersReference: contextImportResolution.headersReferenceName,\n },\n canUseToolReferenceOverrides,\n parsed\n );\n\n return sourceFile;\n}\n\nfunction addCanUseToolImports(\n sourceFile: SourceFile,\n canUse?: unknown[],\n toolReferenceOverrides?: Record<string, string>,\n toolReferencePathOverrides?: Record<string, string>,\n reservedReferenceNames?: Set<string>\n): Record<string, string> {\n const toolImportsById = new Map<string, { importName: string; modulePath: string }>();\n for (const item of canUse ?? []) {\n const toolId =\n typeof item === 'string'\n ? item\n : isPlainObject(item) && typeof item.toolId === 'string'\n ? item.toolId\n : undefined;\n if (!toolId || toolImportsById.has(toolId)) {\n continue;\n }\n toolImportsById.set(toolId, {\n importName: resolveReferenceName(toolId, [toolReferenceOverrides]),\n modulePath: resolveReferenceName(toolId, [toolReferencePathOverrides]),\n });\n }\n\n const localReferenceNamesByToolId: Record<string, string> = {};\n const localNames = reservedReferenceNames ?? new Set<string>();\n for (const [toolId, { importName, modulePath }] of toolImportsById) {\n const localName = resolveNonCollidingName(importName, localNames);\n localReferenceNamesByToolId[toolId] = localName;\n sourceFile.addImportDeclaration({\n namedImports: [\n importName === localName ? importName : { name: importName, alias: localName },\n ],\n moduleSpecifier: `../../tools/${modulePath}`,\n });\n }\n\n return localReferenceNamesByToolId;\n}\n\nfunction addDataComponentImports(\n sourceFile: SourceFile,\n dataComponents?: string[],\n dataComponentReferenceOverrides?: Record<string, string>\n): void {\n addReferenceImports(\n sourceFile,\n dataComponents,\n '../../data-components',\n dataComponentReferenceOverrides\n );\n}\n\nfunction addArtifactComponentImports(\n sourceFile: SourceFile,\n artifactComponents?: string[],\n artifactComponentReferenceOverrides?: Record<string, string>\n): void {\n addReferenceImports(\n sourceFile,\n artifactComponents,\n '../../artifact-components',\n artifactComponentReferenceOverrides\n );\n}\n\nfunction addReferenceImports(\n sourceFile: SourceFile,\n references: string[] | undefined,\n basePath: string,\n referenceOverrides?: Record<string, string>\n): void {\n const importByReferenceId = new Map<string, string>();\n for (const referenceId of references ?? []) {\n if (!referenceId || importByReferenceId.has(referenceId)) {\n continue;\n }\n\n importByReferenceId.set(referenceId, resolveReferenceName(referenceId, [referenceOverrides]));\n }\n\n for (const [referenceId, referenceName] of importByReferenceId) {\n sourceFile.addImportDeclaration({\n namedImports: [referenceName],\n moduleSpecifier: `${basePath}/${referenceId}`,\n });\n }\n}\n\ntype DelegateTargetType = 'subAgents' | 'agents' | 'externalAgents';\n\nfunction addDelegateTargetImports(\n sourceFile: SourceFile,\n options: {\n currentSubAgentId: string;\n canDelegateTo?: unknown[];\n canTransferTo?: string[];\n referenceOverrides: {\n subAgents?: Record<string, string>;\n agents?: Record<string, string>;\n externalAgents?: Record<string, string>;\n };\n referencePathOverrides?: {\n subAgents?: Record<string, string>;\n agents?: Record<string, string>;\n externalAgents?: Record<string, string>;\n };\n }\n): void {\n const importsByTarget = new Map<\n string,\n { type: DelegateTargetType; id: string; name: string; modulePath?: string }\n >();\n\n for (const item of options.canDelegateTo ?? []) {\n const resolvedTarget = resolveDelegateTargetImport(\n item,\n options.referenceOverrides,\n options.referencePathOverrides\n );\n if (!resolvedTarget) {\n continue;\n }\n if (resolvedTarget.type === 'subAgents' && resolvedTarget.id === options.currentSubAgentId) {\n continue;\n }\n importsByTarget.set(`${resolvedTarget.type}:${resolvedTarget.id}`, resolvedTarget);\n }\n\n for (const targetId of options.canTransferTo ?? []) {\n const resolvedTarget = resolveDelegateTargetImport(\n targetId,\n options.referenceOverrides,\n options.referencePathOverrides\n );\n if (!resolvedTarget) {\n continue;\n }\n if (resolvedTarget.type === 'subAgents' && resolvedTarget.id === options.currentSubAgentId) {\n continue;\n }\n importsByTarget.set(`${resolvedTarget.type}:${resolvedTarget.id}`, resolvedTarget);\n }\n\n for (const target of importsByTarget.values()) {\n sourceFile.addImportDeclaration({\n namedImports: [target.name],\n moduleSpecifier: resolveDelegateImportModuleSpecifier(\n target.type,\n target.id,\n target.modulePath\n ),\n });\n }\n}\n\nfunction resolveDelegateTargetImport(\n canDelegateToEntry: unknown,\n referenceOverrides: {\n subAgents?: Record<string, string>;\n agents?: Record<string, string>;\n externalAgents?: Record<string, string>;\n },\n referencePathOverrides?: {\n subAgents?: Record<string, string>;\n agents?: Record<string, string>;\n externalAgents?: Record<string, string>;\n }\n): { type: DelegateTargetType; id: string; name: string; modulePath?: string } | undefined {\n if (typeof canDelegateToEntry === 'string') {\n const resolvedType = resolveDelegateTargetType(canDelegateToEntry, referenceOverrides);\n if (!resolvedType) {\n return;\n }\n\n return {\n type: resolvedType,\n id: canDelegateToEntry,\n name: resolveReferenceName(canDelegateToEntry, [referenceOverrides[resolvedType]]),\n ...((resolvedType === 'subAgents' && {\n modulePath: referencePathOverrides?.subAgents?.[canDelegateToEntry],\n }) ||\n (resolvedType === 'agents' && {\n modulePath: referencePathOverrides?.agents?.[canDelegateToEntry],\n }) ||\n (resolvedType === 'externalAgents' && {\n modulePath: referencePathOverrides?.externalAgents?.[canDelegateToEntry],\n })),\n };\n }\n\n if (!isPlainObject(canDelegateToEntry)) {\n return;\n }\n\n if (typeof canDelegateToEntry.subAgentId === 'string') {\n return {\n type: 'subAgents',\n id: canDelegateToEntry.subAgentId,\n name: resolveReferenceName(canDelegateToEntry.subAgentId, [referenceOverrides.subAgents]),\n modulePath: referencePathOverrides?.subAgents?.[canDelegateToEntry.subAgentId],\n };\n }\n\n if (typeof canDelegateToEntry.agentId === 'string') {\n return {\n type: 'agents',\n id: canDelegateToEntry.agentId,\n name: resolveReferenceName(canDelegateToEntry.agentId, [referenceOverrides.agents]),\n modulePath: referencePathOverrides?.agents?.[canDelegateToEntry.agentId],\n };\n }\n\n if (typeof canDelegateToEntry.externalAgentId === 'string') {\n return {\n type: 'externalAgents',\n id: canDelegateToEntry.externalAgentId,\n name: resolveReferenceName(canDelegateToEntry.externalAgentId, [\n referenceOverrides.externalAgents,\n ]),\n modulePath: referencePathOverrides?.externalAgents?.[canDelegateToEntry.externalAgentId],\n };\n }\n}\n\nfunction resolveDelegateTargetType(\n targetId: string,\n referenceOverrides: {\n subAgents?: Record<string, string>;\n agents?: Record<string, string>;\n externalAgents?: Record<string, string>;\n }\n): DelegateTargetType | undefined {\n if (referenceOverrides.subAgents?.[targetId]) {\n return 'subAgents';\n }\n if (referenceOverrides.agents?.[targetId]) {\n return 'agents';\n }\n if (referenceOverrides.externalAgents?.[targetId]) {\n return 'externalAgents';\n }\n\n return 'subAgents';\n}\n\nfunction resolveDelegateImportModuleSpecifier(\n type: DelegateTargetType,\n id: string,\n modulePath?: string\n): string {\n const path = modulePath ?? id;\n switch (type) {\n case 'subAgents':\n return `./${path}`;\n case 'agents':\n return `../${path}`;\n case 'externalAgents':\n return `../../external-agents/${path}`;\n }\n}\n\nfunction writeSubAgentConfig(\n configObject: ObjectLiteralExpression,\n templateReferences: {\n contextReference?: string;\n headersReference?: string;\n },\n canUseToolReferenceOverrides: Record<string, string>,\n {\n dataComponents,\n name,\n canDelegateTo,\n canTransferTo,\n skills,\n artifactComponents,\n canUse,\n referenceOverrides,\n referencePathOverrides: _referencePathOverrides,\n contextConfigId: _contextConfigId,\n contextConfigReference: _contextConfigReference,\n contextConfigHeadersReference: _contextConfigHeadersReference,\n ...rest\n }: SubAgentOutput\n) {\n rest = { ...rest };\n rest.prompt &&= formatTemplate(rest.prompt, templateReferences);\n for (const [k, v] of Object.entries(rest)) {\n addValueToObject(configObject, k, v);\n }\n addStringProperty(configObject, 'name', resolveSubAgentName(rest.id, name));\n\n const canUseReferences = collectCanUseReferences(\n canUse,\n Object.keys(canUseToolReferenceOverrides).length\n ? canUseToolReferenceOverrides\n : referenceOverrides?.tools\n );\n if (canUseReferences.length) {\n addReferenceGetterProperty(configObject, 'canUse', canUseReferences);\n }\n\n const canDelegateToReferences = collectCanDelegateToReferences(canDelegateTo, {\n subAgents: referenceOverrides?.subAgents,\n agents: referenceOverrides?.agents,\n externalAgents: referenceOverrides?.externalAgents,\n });\n if (canDelegateToReferences.length) {\n addReferenceGetterProperty(configObject, 'canDelegateTo', canDelegateToReferences);\n }\n\n if (hasReferences(canTransferTo)) {\n addReferenceGetterProperty(\n configObject,\n 'canTransferTo',\n canTransferTo.map((id) =>\n resolveReferenceName(id, [\n referenceOverrides?.subAgents,\n referenceOverrides?.agents,\n referenceOverrides?.externalAgents,\n ])\n )\n );\n }\n\n if (hasReferences(dataComponents)) {\n addReferenceGetterProperty(\n configObject,\n 'dataComponents',\n dataComponents.map((id) => resolveReferenceName(id, [referenceOverrides?.dataComponents]))\n );\n }\n\n if (hasReferences(artifactComponents)) {\n addReferenceGetterProperty(\n configObject,\n 'artifactComponents',\n artifactComponents.map((id) =>\n resolveReferenceName(id, [referenceOverrides?.artifactComponents])\n )\n );\n }\n\n const collectedSkills = collectSkills(skills);\n if (collectedSkills.length > 0) {\n const skillsProperty = configObject.addPropertyAssignment({\n name: 'skills',\n initializer: '() => []',\n });\n const skillsGetter = skillsProperty.getInitializerIfKindOrThrow(SyntaxKind.ArrowFunction);\n const skillsArray = skillsGetter.getBody().asKindOrThrow(SyntaxKind.ArrayLiteralExpression);\n for (const skill of collectedSkills) {\n skillsArray.addElement(skill);\n }\n }\n}\n"],"mappings":";;;;;;;AAwBA,MAAM,0BAA0B,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;AAE3E,MAAM,2BAA2B,EAAE,OAAO;CACxC,OAAO,wBAAwB,UAAU;CACzC,WAAW,wBAAwB,UAAU;CAC7C,QAAQ,wBAAwB,UAAU;CAC1C,gBAAgB,wBAAwB,UAAU;CAClD,gBAAgB,wBAAwB,UAAU;CAClD,oBAAoB,wBAAwB,UAAU;CACvD,CAAC;AAEF,MAAM,+BAA+B,EAAE,OAAO;CAC5C,OAAO,wBAAwB,UAAU;CACzC,WAAW,wBAAwB,UAAU;CAC7C,QAAQ,wBAAwB,UAAU;CAC1C,gBAAgB,wBAAwB,UAAU;CACnD,CAAC;AAEF,MAAM,iCAAiC,EAAE,OAAO;CAC9C,MAAM,EAAE,QAAQ,CAAC,UAAU;CAC3B,OAAO,EAAE,SAAS,CAAC,UAAU;CAC9B,CAAC;AAEF,MAAM,WAAW,2BAA2B,KAAK;CAC/C,IAAI;CACJ,QAAQ;CACR,MAAM;CACN,aAAa;CACb,UAAU;CACX,CAAC;AAEF,MAAM,iBAAiB,EAAE,aAAa;CACpC,GAAG,SAAS;CACZ,QAAQ,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,OAAO;CAClE,aAAa,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,YAAY;CAC5E,UAAU,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,SAAS;CACtE,QAAQ,EAAE,YAAY,MAAM,KAAK,QAAW,EAAE,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC;CACzE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,UAAU;CACvC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,UAAU;CACvC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,UAAU;CAC9C,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC7C,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAC9C,oBAAoB,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU;CAClD,oBAAoB,yBAAyB,UAAU;CACvD,wBAAwB,6BAA6B,UAAU;CAC/D,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CACjD,wBAAwB,+BAA+B,UAAU;CACjE,+BAA+B,+BAA+B,UAAU;CACzE,CAAC;AAKF,SAAgB,2BAA2B,EACzC,YACA,GAAG,QACmD;CACtD,MAAM,SAAS,eAAe,UAAU,KAAK;AAC7C,KAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,qCAAqC,EAAE,cAAc,OAAO,MAAM,GAAG;CAGvF,MAAM,SAAS,OAAO;CACtB,MAAM,uBAAuB,4BAA4B,OAAO,IAAI,OAAO,KAAK;CAChF,MAAM,EAAE,YAAY,iBAAiB,wBAAwB;EAC3D,YAAY;EACZ,cAAc;EACf,CAAC;CACF,MAAM,yBAAyB,IAAI,IAAI,CAAC,qBAAqB,CAAC;CAE9D,MAAM,0BACJ,OAAO,OAAO,WAAW,WAAW,6BAA6B,OAAO,OAAO,GAAG,EAAE;CACtF,MAAM,8BAA8B,wBAAwB,MACzD,iBAAiB,CAAC,aAAa,WAAW,WAAW,CACvD;CACD,MAAM,8BAA8B,wBAAwB,MAAM,iBAChE,aAAa,WAAW,WAAW,CACpC;CACD,MAAM,0BAA0B,8BAA8B;EAC5D,eAAe;EACf,+BAA+B,+BAA+B,QAAQ,OAAO,gBAAgB;EAC7F,+BAA+B,+BAA+B,QAAQ,OAAO,gBAAgB;EAC7F,wBAAwB,OAAO;EAC/B,+BAA+B,OAAO;EACvC,CAAC;AACF,KAAI,wBAAwB,aAAa,SAAS,KAAK,OAAO,gBAC5D,YAAW,qBAAqB;EAC9B,cAAc,wBAAwB;EACtC,iBAAiB,yBAAyB,OAAO;EAClD,CAAC;CAGJ,MAAM,+BAA+B,qBACnC,YACA,OAAO,QACP,OAAO,oBAAoB,OAC3B,OAAO,wBAAwB,OAC/B,uBACD;AACD,yBACE,YACA,OAAO,gBACP,OAAO,oBAAoB,eAC5B;AACD,6BACE,YACA,OAAO,oBACP,OAAO,oBAAoB,mBAC5B;AACD,0BAAyB,YAAY;EACnC,mBAAmB,OAAO;EAC1B,eAAe,OAAO;EACtB,eAAe,OAAO;EACtB,oBAAoB;GAClB,WAAW,OAAO,oBAAoB;GACtC,QAAQ,OAAO,oBAAoB;GACnC,gBAAgB,OAAO,oBAAoB;GAC5C;EACD,wBAAwB;GACtB,WAAW,OAAO,wBAAwB;GAC1C,QAAQ,OAAO,wBAAwB;GACvC,gBAAgB,OAAO,wBAAwB;GAChD;EACF,CAAC;AAEF,qBACE,cACA;EACE,kBAAkB,wBAAwB;EAC1C,kBAAkB,wBAAwB;EAC3C,EACD,8BACA,OACD;AAED,QAAO;;AAGT,SAAS,qBACP,YACA,QACA,wBACA,4BACA,wBACwB;CACxB,MAAM,kCAAkB,IAAI,KAAyD;AACrF,MAAK,MAAM,QAAQ,UAAU,EAAE,EAAE;EAC/B,MAAM,SACJ,OAAO,SAAS,WACZ,OACA,cAAc,KAAK,IAAI,OAAO,KAAK,WAAW,WAC5C,KAAK,SACL;AACR,MAAI,CAAC,UAAU,gBAAgB,IAAI,OAAO,CACxC;AAEF,kBAAgB,IAAI,QAAQ;GAC1B,YAAY,qBAAqB,QAAQ,CAAC,uBAAuB,CAAC;GAClE,YAAY,qBAAqB,QAAQ,CAAC,2BAA2B,CAAC;GACvE,CAAC;;CAGJ,MAAM,8BAAsD,EAAE;CAC9D,MAAM,aAAa,0CAA0B,IAAI,KAAa;AAC9D,MAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,iBAAiB,iBAAiB;EAClE,MAAM,YAAY,wBAAwB,YAAY,WAAW;AACjE,8BAA4B,UAAU;AACtC,aAAW,qBAAqB;GAC9B,cAAc,CACZ,eAAe,YAAY,aAAa;IAAE,MAAM;IAAY,OAAO;IAAW,CAC/E;GACD,iBAAiB,eAAe;GACjC,CAAC;;AAGJ,QAAO;;AAGT,SAAS,wBACP,YACA,gBACA,iCACM;AACN,qBACE,YACA,gBACA,yBACA,gCACD;;AAGH,SAAS,4BACP,YACA,oBACA,qCACM;AACN,qBACE,YACA,oBACA,6BACA,oCACD;;AAGH,SAAS,oBACP,YACA,YACA,UACA,oBACM;CACN,MAAM,sCAAsB,IAAI,KAAqB;AACrD,MAAK,MAAM,eAAe,cAAc,EAAE,EAAE;AAC1C,MAAI,CAAC,eAAe,oBAAoB,IAAI,YAAY,CACtD;AAGF,sBAAoB,IAAI,aAAa,qBAAqB,aAAa,CAAC,mBAAmB,CAAC,CAAC;;AAG/F,MAAK,MAAM,CAAC,aAAa,kBAAkB,oBACzC,YAAW,qBAAqB;EAC9B,cAAc,CAAC,cAAc;EAC7B,iBAAiB,GAAG,SAAS,GAAG;EACjC,CAAC;;AAMN,SAAS,yBACP,YACA,SAeM;CACN,MAAM,kCAAkB,IAAI,KAGzB;AAEH,MAAK,MAAM,QAAQ,QAAQ,iBAAiB,EAAE,EAAE;EAC9C,MAAM,iBAAiB,4BACrB,MACA,QAAQ,oBACR,QAAQ,uBACT;AACD,MAAI,CAAC,eACH;AAEF,MAAI,eAAe,SAAS,eAAe,eAAe,OAAO,QAAQ,kBACvE;AAEF,kBAAgB,IAAI,GAAG,eAAe,KAAK,GAAG,eAAe,MAAM,eAAe;;AAGpF,MAAK,MAAM,YAAY,QAAQ,iBAAiB,EAAE,EAAE;EAClD,MAAM,iBAAiB,4BACrB,UACA,QAAQ,oBACR,QAAQ,uBACT;AACD,MAAI,CAAC,eACH;AAEF,MAAI,eAAe,SAAS,eAAe,eAAe,OAAO,QAAQ,kBACvE;AAEF,kBAAgB,IAAI,GAAG,eAAe,KAAK,GAAG,eAAe,MAAM,eAAe;;AAGpF,MAAK,MAAM,UAAU,gBAAgB,QAAQ,CAC3C,YAAW,qBAAqB;EAC9B,cAAc,CAAC,OAAO,KAAK;EAC3B,iBAAiB,qCACf,OAAO,MACP,OAAO,IACP,OAAO,WACR;EACF,CAAC;;AAIN,SAAS,4BACP,oBACA,oBAKA,wBAKyF;AACzF,KAAI,OAAO,uBAAuB,UAAU;EAC1C,MAAM,eAAe,0BAA0B,oBAAoB,mBAAmB;AACtF,MAAI,CAAC,aACH;AAGF,SAAO;GACL,MAAM;GACN,IAAI;GACJ,MAAM,qBAAqB,oBAAoB,CAAC,mBAAmB,cAAc,CAAC;GAClF,GAAK,iBAAiB,eAAe,EACnC,YAAY,wBAAwB,YAAY,qBACjD,IACE,iBAAiB,YAAY,EAC5B,YAAY,wBAAwB,SAAS,qBAC9C,IACA,iBAAiB,oBAAoB,EACpC,YAAY,wBAAwB,iBAAiB,qBACtD;GACJ;;AAGH,KAAI,CAAC,cAAc,mBAAmB,CACpC;AAGF,KAAI,OAAO,mBAAmB,eAAe,SAC3C,QAAO;EACL,MAAM;EACN,IAAI,mBAAmB;EACvB,MAAM,qBAAqB,mBAAmB,YAAY,CAAC,mBAAmB,UAAU,CAAC;EACzF,YAAY,wBAAwB,YAAY,mBAAmB;EACpE;AAGH,KAAI,OAAO,mBAAmB,YAAY,SACxC,QAAO;EACL,MAAM;EACN,IAAI,mBAAmB;EACvB,MAAM,qBAAqB,mBAAmB,SAAS,CAAC,mBAAmB,OAAO,CAAC;EACnF,YAAY,wBAAwB,SAAS,mBAAmB;EACjE;AAGH,KAAI,OAAO,mBAAmB,oBAAoB,SAChD,QAAO;EACL,MAAM;EACN,IAAI,mBAAmB;EACvB,MAAM,qBAAqB,mBAAmB,iBAAiB,CAC7D,mBAAmB,eACpB,CAAC;EACF,YAAY,wBAAwB,iBAAiB,mBAAmB;EACzE;;AAIL,SAAS,0BACP,UACA,oBAKgC;AAChC,KAAI,mBAAmB,YAAY,UACjC,QAAO;AAET,KAAI,mBAAmB,SAAS,UAC9B,QAAO;AAET,KAAI,mBAAmB,iBAAiB,UACtC,QAAO;AAGT,QAAO;;AAGT,SAAS,qCACP,MACA,IACA,YACQ;CACR,MAAM,OAAO,cAAc;AAC3B,SAAQ,MAAR;EACE,KAAK,YACH,QAAO,KAAK;EACd,KAAK,SACH,QAAO,MAAM;EACf,KAAK,iBACH,QAAO,yBAAyB;;;AAItC,SAAS,oBACP,cACA,oBAIA,8BACA,EACE,gBACA,MACA,eACA,eACA,QACA,oBACA,QACA,oBACA,wBAAwB,yBACxB,iBAAiB,kBACjB,wBAAwB,yBACxB,+BAA+B,gCAC/B,GAAG,QAEL;AACA,QAAO,EAAE,GAAG,MAAM;AAClB,MAAK,WAAW,eAAe,KAAK,QAAQ,mBAAmB;AAC/D,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,KAAK,CACvC,kBAAiB,cAAc,GAAG,EAAE;AAEtC,mBAAkB,cAAc,QAAQ,oBAAoB,KAAK,IAAI,KAAK,CAAC;CAE3E,MAAM,mBAAmB,wBACvB,QACA,OAAO,KAAK,6BAA6B,CAAC,SACtC,+BACA,oBAAoB,MACzB;AACD,KAAI,iBAAiB,OACnB,4BAA2B,cAAc,UAAU,iBAAiB;CAGtE,MAAM,0BAA0B,+BAA+B,eAAe;EAC5E,WAAW,oBAAoB;EAC/B,QAAQ,oBAAoB;EAC5B,gBAAgB,oBAAoB;EACrC,CAAC;AACF,KAAI,wBAAwB,OAC1B,4BAA2B,cAAc,iBAAiB,wBAAwB;AAGpF,KAAI,cAAc,cAAc,CAC9B,4BACE,cACA,iBACA,cAAc,KAAK,OACjB,qBAAqB,IAAI;EACvB,oBAAoB;EACpB,oBAAoB;EACpB,oBAAoB;EACrB,CAAC,CACH,CACF;AAGH,KAAI,cAAc,eAAe,CAC/B,4BACE,cACA,kBACA,eAAe,KAAK,OAAO,qBAAqB,IAAI,CAAC,oBAAoB,eAAe,CAAC,CAAC,CAC3F;AAGH,KAAI,cAAc,mBAAmB,CACnC,4BACE,cACA,sBACA,mBAAmB,KAAK,OACtB,qBAAqB,IAAI,CAAC,oBAAoB,mBAAmB,CAAC,CACnE,CACF;CAGH,MAAM,kBAAkB,cAAc,OAAO;AAC7C,KAAI,gBAAgB,SAAS,GAAG;EAM9B,MAAM,cALiB,aAAa,sBAAsB;GACxD,MAAM;GACN,aAAa;GACd,CAAC,CACkC,4BAA4B,WAAW,cAAc,CACxD,SAAS,CAAC,cAAc,WAAW,uBAAuB;AAC3F,OAAK,MAAM,SAAS,gBAClB,aAAY,WAAW,MAAM"}
|
|
@@ -1,52 +1,42 @@
|
|
|
1
|
-
import { addValueToObject,
|
|
1
|
+
import { addValueToObject, createFactoryDefinition, toCamelCase, toTriggerReferenceName } from "../utils.js";
|
|
2
|
+
import { FullProjectDefinitionSchema } from "@inkeep/agents-core";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
import { SyntaxKind } from "ts-morph";
|
|
4
5
|
|
|
5
6
|
//#region src/commands/pull-v4/generators/trigger-generator.ts
|
|
6
|
-
const
|
|
7
|
+
const MySchema = FullProjectDefinitionSchema.shape.agents.valueType.shape.triggers.unwrap().valueType.omit({ id: true });
|
|
8
|
+
const TriggerSchema = z.strictObject({
|
|
7
9
|
triggerId: z.string().nonempty(),
|
|
8
|
-
|
|
9
|
-
description: z.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
authentication: z.looseObject({ headers: z.array(z.looseObject({})).optional() }).nullable().optional().transform(convertNullToUndefined),
|
|
18
|
-
signatureVerification: z.looseObject({
|
|
19
|
-
algorithm: z.string().optional(),
|
|
20
|
-
encoding: z.string().optional(),
|
|
21
|
-
signature: z.looseObject({}).optional(),
|
|
22
|
-
signedComponents: z.array(z.looseObject({})).optional(),
|
|
23
|
-
componentJoin: z.looseObject({}).optional(),
|
|
24
|
-
validation: z.looseObject({}).optional()
|
|
25
|
-
}).nullable().optional().transform(convertNullToUndefined),
|
|
26
|
-
signingSecretCredentialReferenceId: z.string().nullable().optional().transform(convertNullToUndefined),
|
|
27
|
-
signingSecretCredentialReference: z.union([z.string(), z.looseObject({ id: z.string().optional() })]).nullable().optional().transform(convertNullToUndefined),
|
|
28
|
-
runAsUserId: z.string().nullable().optional().transform(convertNullToUndefined),
|
|
29
|
-
createdBy: z.string().nullable().optional().transform(convertNullToUndefined)
|
|
10
|
+
...MySchema.shape,
|
|
11
|
+
description: z.preprocess((v) => v || void 0, MySchema.shape.description),
|
|
12
|
+
inputSchema: z.preprocess((v) => v || void 0, MySchema.shape.inputSchema),
|
|
13
|
+
outputTransform: z.preprocess((v) => v || void 0, MySchema.shape.outputTransform),
|
|
14
|
+
messageTemplate: z.preprocess((v) => v || void 0, MySchema.shape.messageTemplate),
|
|
15
|
+
authentication: z.preprocess((v) => v || void 0, z.unknown()),
|
|
16
|
+
signatureVerification: z.preprocess((v) => v || void 0, MySchema.shape.signatureVerification),
|
|
17
|
+
signingSecretCredentialReferenceName: z.string().nonempty().optional(),
|
|
18
|
+
signingSecretCredentialReferencePath: z.string().nonempty().optional()
|
|
30
19
|
});
|
|
31
|
-
function generateTriggerDefinition(data) {
|
|
20
|
+
function generateTriggerDefinition({ id, runAsUserId, createdBy, ...data }) {
|
|
32
21
|
const result = TriggerSchema.safeParse(data);
|
|
33
22
|
if (!result.success) throw new Error(`Validation failed for trigger:\n${z.prettifyError(result.error)}`);
|
|
34
23
|
const parsed = result.data;
|
|
35
24
|
const { sourceFile, configObject } = createFactoryDefinition({
|
|
36
25
|
importName: "Trigger",
|
|
37
|
-
variableName:
|
|
26
|
+
variableName: toTriggerReferenceName(parsed.name),
|
|
38
27
|
syntaxKind: SyntaxKind.NewExpression
|
|
39
28
|
});
|
|
40
|
-
const { triggerId, signingSecretCredentialReferenceId, ...rest } = parsed;
|
|
29
|
+
const { triggerId, signingSecretCredentialReferenceId, signingSecretCredentialReferenceName, signingSecretCredentialReferencePath, ...rest } = parsed;
|
|
41
30
|
for (const [key, value] of Object.entries({
|
|
42
31
|
id: triggerId,
|
|
43
32
|
...rest
|
|
44
33
|
})) addValueToObject(configObject, key, value);
|
|
45
34
|
if (signingSecretCredentialReferenceId) {
|
|
46
|
-
const varName = toCamelCase(signingSecretCredentialReferenceId);
|
|
35
|
+
const varName = signingSecretCredentialReferenceName ?? toCamelCase(signingSecretCredentialReferenceId);
|
|
36
|
+
const modulePath = signingSecretCredentialReferencePath ?? signingSecretCredentialReferenceId;
|
|
47
37
|
sourceFile.addImportDeclaration({
|
|
48
38
|
namedImports: [varName],
|
|
49
|
-
moduleSpecifier: `../../credentials/${
|
|
39
|
+
moduleSpecifier: `../../credentials/${modulePath}`
|
|
50
40
|
});
|
|
51
41
|
configObject.addPropertyAssignment({
|
|
52
42
|
name: "signingSecretCredentialReference",
|
|
@@ -57,4 +47,5 @@ function generateTriggerDefinition(data) {
|
|
|
57
47
|
}
|
|
58
48
|
|
|
59
49
|
//#endregion
|
|
60
|
-
export { generateTriggerDefinition };
|
|
50
|
+
export { generateTriggerDefinition };
|
|
51
|
+
//# sourceMappingURL=trigger-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-generator.js","names":[],"sources":["../../../../src/commands/pull-v4/generators/trigger-generator.ts"],"sourcesContent":["import { FullProjectDefinitionSchema } from '@inkeep/agents-core';\nimport { type SourceFile, SyntaxKind } from 'ts-morph';\nimport { z } from 'zod';\nimport {\n addValueToObject,\n createFactoryDefinition,\n toCamelCase,\n toTriggerReferenceName,\n} from '../utils';\n\nconst MySchema = FullProjectDefinitionSchema.shape.agents.valueType.shape.triggers\n .unwrap()\n .valueType.omit({\n id: true,\n });\n\nconst TriggerSchema = z.strictObject({\n triggerId: z.string().nonempty(),\n ...MySchema.shape,\n description: z.preprocess((v) => v || undefined, MySchema.shape.description),\n inputSchema: z.preprocess((v) => v || undefined, MySchema.shape.inputSchema),\n outputTransform: z.preprocess((v) => v || undefined, MySchema.shape.outputTransform),\n messageTemplate: z.preprocess((v) => v || undefined, MySchema.shape.messageTemplate),\n authentication: z.preprocess(\n (v) => v || undefined,\n // ✖ Invalid input: expected string, received undefined\n // → at authentication.headers[0].value\n z.unknown()\n ),\n signatureVerification: z.preprocess((v) => v || undefined, MySchema.shape.signatureVerification),\n signingSecretCredentialReferenceName: z.string().nonempty().optional(),\n signingSecretCredentialReferencePath: z.string().nonempty().optional(),\n});\n\ntype TriggerInput = z.input<typeof TriggerSchema>;\n\nexport function generateTriggerDefinition({\n id,\n runAsUserId,\n createdBy,\n ...data\n}: TriggerInput & Record<string, unknown>): SourceFile {\n const result = TriggerSchema.safeParse(data);\n if (!result.success) {\n throw new Error(`Validation failed for trigger:\\n${z.prettifyError(result.error)}`);\n }\n\n const parsed = result.data;\n const { sourceFile, configObject } = createFactoryDefinition({\n importName: 'Trigger',\n variableName: toTriggerReferenceName(parsed.name),\n syntaxKind: SyntaxKind.NewExpression,\n });\n\n const {\n triggerId,\n signingSecretCredentialReferenceId,\n signingSecretCredentialReferenceName,\n signingSecretCredentialReferencePath,\n ...rest\n } = parsed;\n\n for (const [key, value] of Object.entries({\n id: triggerId,\n ...rest,\n })) {\n addValueToObject(configObject, key, value);\n }\n\n if (signingSecretCredentialReferenceId) {\n const varName =\n signingSecretCredentialReferenceName ??\n toCamelCase(signingSecretCredentialReferenceId as string);\n const modulePath =\n signingSecretCredentialReferencePath ?? (signingSecretCredentialReferenceId as string);\n sourceFile.addImportDeclaration({\n namedImports: [varName],\n moduleSpecifier: `../../credentials/${modulePath}`,\n });\n configObject.addPropertyAssignment({\n name: 'signingSecretCredentialReference',\n initializer: varName,\n });\n }\n\n return sourceFile;\n}\n"],"mappings":";;;;;;AAUA,MAAM,WAAW,4BAA4B,MAAM,OAAO,UAAU,MAAM,SACvE,QAAQ,CACR,UAAU,KAAK,EACd,IAAI,MACL,CAAC;AAEJ,MAAM,gBAAgB,EAAE,aAAa;CACnC,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,GAAG,SAAS;CACZ,aAAa,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,YAAY;CAC5E,aAAa,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,YAAY;CAC5E,iBAAiB,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,gBAAgB;CACpF,iBAAiB,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,gBAAgB;CACpF,gBAAgB,EAAE,YACf,MAAM,KAAK,QAGZ,EAAE,SAAS,CACZ;CACD,uBAAuB,EAAE,YAAY,MAAM,KAAK,QAAW,SAAS,MAAM,sBAAsB;CAChG,sCAAsC,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CACtE,sCAAsC,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;CACvE,CAAC;AAIF,SAAgB,0BAA0B,EACxC,IACA,aACA,WACA,GAAG,QACkD;CACrD,MAAM,SAAS,cAAc,UAAU,KAAK;AAC5C,KAAI,CAAC,OAAO,QACV,OAAM,IAAI,MAAM,mCAAmC,EAAE,cAAc,OAAO,MAAM,GAAG;CAGrF,MAAM,SAAS,OAAO;CACtB,MAAM,EAAE,YAAY,iBAAiB,wBAAwB;EAC3D,YAAY;EACZ,cAAc,uBAAuB,OAAO,KAAK;EACjD,YAAY,WAAW;EACxB,CAAC;CAEF,MAAM,EACJ,WACA,oCACA,sCACA,sCACA,GAAG,SACD;AAEJ,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ;EACxC,IAAI;EACJ,GAAG;EACJ,CAAC,CACA,kBAAiB,cAAc,KAAK,MAAM;AAG5C,KAAI,oCAAoC;EACtC,MAAM,UACJ,wCACA,YAAY,mCAA6C;EAC3D,MAAM,aACJ,wCAAyC;AAC3C,aAAW,qBAAqB;GAC9B,cAAc,CAAC,QAAQ;GACvB,iBAAiB,qBAAqB;GACvC,CAAC;AACF,eAAa,sBAAsB;GACjC,MAAM;GACN,aAAa;GACd,CAAC;;AAGJ,QAAO"}
|