@inkeep/agents-cli 0.59.3 → 0.60.0
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 +1 -1
- package/dist/commands/pull-v4/collector-common.js +128 -0
- package/dist/commands/pull-v4/collector-common.js.map +1 -0
- package/dist/commands/pull-v4/collector-reference-helpers.js +323 -0
- package/dist/commands/pull-v4/collector-reference-helpers.js.map +1 -0
- package/dist/commands/pull-v4/component-parser.js +2 -1
- package/dist/commands/pull-v4/component-parser.js.map +1 -1
- package/dist/commands/pull-v4/file-scope.js +43 -0
- package/dist/commands/pull-v4/file-scope.js.map +1 -0
- package/dist/commands/pull-v4/generation-resolver.js +305 -0
- package/dist/commands/pull-v4/generation-resolver.js.map +1 -0
- package/dist/commands/pull-v4/generation-types.js +56 -0
- package/dist/commands/pull-v4/generation-types.js.map +1 -0
- package/dist/commands/pull-v4/generators/agent-generator.helpers.js +4 -10
- package/dist/commands/pull-v4/generators/agent-generator.helpers.js.map +1 -1
- package/dist/commands/pull-v4/generators/agent-generator.js +154 -81
- package/dist/commands/pull-v4/generators/agent-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/artifact-component-generator.js +48 -27
- package/dist/commands/pull-v4/generators/artifact-component-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/context-config-generator.js +147 -129
- package/dist/commands/pull-v4/generators/context-config-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/credential-generator.js +36 -14
- package/dist/commands/pull-v4/generators/credential-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/data-component-generator.js +55 -19
- package/dist/commands/pull-v4/generators/data-component-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/environment-generator.js +29 -33
- package/dist/commands/pull-v4/generators/environment-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/environment-settings-generator.js +57 -0
- package/dist/commands/pull-v4/generators/environment-settings-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/external-agent-generator.js +51 -23
- package/dist/commands/pull-v4/generators/external-agent-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/function-tool-generator.js +50 -14
- package/dist/commands/pull-v4/generators/function-tool-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/helpers/agent.js +129 -0
- package/dist/commands/pull-v4/generators/helpers/agent.js.map +1 -0
- package/dist/commands/pull-v4/generators/helpers/sub-agent.js +65 -0
- package/dist/commands/pull-v4/generators/helpers/sub-agent.js.map +1 -0
- package/dist/commands/pull-v4/generators/index.js +38 -0
- package/dist/commands/pull-v4/generators/index.js.map +1 -0
- package/dist/commands/pull-v4/generators/mcp-tool-generator.js +48 -27
- package/dist/commands/pull-v4/generators/mcp-tool-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/project-generator.js +144 -110
- package/dist/commands/pull-v4/generators/project-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/scheduled-trigger-generator.js +66 -0
- package/dist/commands/pull-v4/generators/scheduled-trigger-generator.js.map +1 -0
- package/dist/commands/pull-v4/generators/status-component-generator.js +55 -20
- package/dist/commands/pull-v4/generators/status-component-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/sub-agent-generator.helpers.js +4 -1
- package/dist/commands/pull-v4/generators/sub-agent-generator.helpers.js.map +1 -1
- package/dist/commands/pull-v4/generators/sub-agent-generator.js +282 -166
- package/dist/commands/pull-v4/generators/sub-agent-generator.js.map +1 -1
- package/dist/commands/pull-v4/generators/trigger-generator.js +62 -27
- package/dist/commands/pull-v4/generators/trigger-generator.js.map +1 -1
- package/dist/commands/pull-v4/import-plan.js +40 -0
- package/dist/commands/pull-v4/import-plan.js.map +1 -0
- package/dist/commands/pull-v4/introspect/index.js +11 -7
- package/dist/commands/pull-v4/introspect/index.js.map +1 -1
- package/dist/commands/pull-v4/introspect-generator.js +15 -1218
- package/dist/commands/pull-v4/introspect-generator.js.map +1 -1
- package/dist/commands/pull-v4/module-merge.js +14 -5
- package/dist/commands/pull-v4/module-merge.js.map +1 -1
- package/dist/commands/pull-v4/reference-resolution.js +111 -0
- package/dist/commands/pull-v4/reference-resolution.js.map +1 -0
- package/dist/commands/pull-v4/simple-factory-generator.js +54 -0
- package/dist/commands/pull-v4/simple-factory-generator.js.map +1 -0
- package/dist/commands/pull-v4/{generators/skill-generator.js → skill.js} +18 -6
- package/dist/commands/pull-v4/skill.js.map +1 -0
- package/dist/commands/pull-v4/typescript-file-writer.js +78 -0
- package/dist/commands/pull-v4/typescript-file-writer.js.map +1 -0
- package/dist/commands/pull-v4/utils/code-values.js +64 -0
- package/dist/commands/pull-v4/utils/code-values.js.map +1 -0
- package/dist/commands/pull-v4/utils/factory-writer.js +128 -0
- package/dist/commands/pull-v4/utils/factory-writer.js.map +1 -0
- package/dist/commands/pull-v4/utils/index.js +8 -0
- package/dist/commands/pull-v4/utils/naming.js +74 -0
- package/dist/commands/pull-v4/utils/naming.js.map +1 -0
- package/dist/commands/pull-v4/utils/schema-rendering.js +20 -0
- package/dist/commands/pull-v4/utils/schema-rendering.js.map +1 -0
- package/dist/commands/pull-v4/utils/shared.js +18 -0
- package/dist/commands/pull-v4/utils/shared.js.map +1 -0
- package/dist/commands/pull-v4/utils/templates.js +58 -0
- package/dist/commands/pull-v4/utils/templates.js.map +1 -0
- package/package.json +4 -4
- package/dist/commands/pull-v4/generators/skill-generator.js.map +0 -1
- package/dist/commands/pull-v4/scheduled-trigger-generator.js +0 -38
- package/dist/commands/pull-v4/scheduled-trigger-generator.js.map +0 -1
- package/dist/commands/pull-v4/utils.js +0 -320
- package/dist/commands/pull-v4/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../../src/commands/pull-v4/utils.ts"],"sourcesContent":["import path from 'node:path';\nimport { jsonSchemaToZod } from 'json-schema-to-zod';\nimport {\n type ArrayLiteralExpression,\n IndentationText,\n NewLineKind,\n type ObjectLiteralExpression,\n Project,\n QuoteKind,\n type SourceFile,\n SyntaxKind,\n VariableDeclarationKind,\n} from 'ts-morph';\n\nexport function createInMemoryProject(): Project {\n return new Project({\n useInMemoryFileSystem: true,\n // we don't need them, this improves performance and makes tests fast\n skipLoadingLibFiles: true,\n manipulationSettings: {\n indentationText: IndentationText.TwoSpaces,\n quoteKind: QuoteKind.Single,\n newLineKind: NewLineKind.LineFeed,\n useTrailingCommas: true,\n },\n });\n}\n\ninterface CreateFactoryDefinitionOptions\n extends Pick<AddFactoryConfigVariableOptions, 'syntaxKind' | 'importName' | 'variableName'> {\n /** @default \"definition.ts\" */\n fileName?: string;\n /** @default \"@inkeep/agents-sdk\" */\n moduleSpecifier?: string;\n}\n\ninterface AddFactoryConfigVariableOptions {\n sourceFile: SourceFile;\n importName: string;\n variableName: string;\n isExported?: boolean;\n /** @default SyntaxKind.CallExpression */\n syntaxKind?: SyntaxKind.CallExpression | SyntaxKind.NewExpression;\n}\n\n/**\n * Create variable in following pattern\n *\n * (export)? const VARIABLE_NAME = (new)?IMPORT_NAME({})\n */\nexport function addFactoryConfigVariable({\n sourceFile,\n importName,\n variableName,\n isExported,\n syntaxKind = SyntaxKind.CallExpression,\n}: AddFactoryConfigVariableOptions): {\n configObject: ObjectLiteralExpression;\n} {\n const initializer = `${syntaxKind === SyntaxKind.NewExpression ? 'new ' : ''}${importName}({})`;\n const variableStatement = sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported,\n declarations: [{ name: variableName, initializer }],\n });\n const [declaration] = variableStatement.getDeclarations();\n const invocation = declaration.getInitializerIfKindOrThrow(syntaxKind);\n const [configArg] = invocation.getArguments();\n\n return {\n configObject: configArg.asKindOrThrow(SyntaxKind.ObjectLiteralExpression),\n };\n}\n\nexport function createFactoryDefinition({\n importName,\n variableName: name,\n fileName = 'definition.ts',\n moduleSpecifier = '@inkeep/agents-sdk',\n syntaxKind,\n}: CreateFactoryDefinitionOptions): {\n sourceFile: SourceFile;\n configObject: ObjectLiteralExpression;\n} {\n const sourceFile = createInMemoryProject().createSourceFile(fileName, '', {\n overwrite: true,\n });\n sourceFile.addImportDeclaration({ namedImports: [importName], moduleSpecifier });\n const localVariableName = resolveNonCollidingName(name, collectTakenNames(sourceFile));\n const shouldAliasExport = localVariableName !== name;\n const { configObject } = addFactoryConfigVariable({\n sourceFile,\n importName,\n variableName: localVariableName,\n isExported: !shouldAliasExport,\n syntaxKind,\n });\n if (shouldAliasExport) {\n sourceFile.addExportDeclaration({\n namedExports: [{ name: localVariableName, alias: name }],\n });\n }\n\n return {\n sourceFile,\n configObject,\n };\n}\n\nfunction collectTakenNames(sourceFile: SourceFile): Set<string> {\n const takenNames = new Set<string>();\n\n for (const importDeclaration of sourceFile.getImportDeclarations()) {\n const defaultImport = importDeclaration.getDefaultImport()?.getText();\n if (defaultImport) {\n takenNames.add(defaultImport);\n }\n\n const namespaceImport = importDeclaration.getNamespaceImport()?.getText();\n if (namespaceImport) {\n takenNames.add(namespaceImport);\n }\n\n for (const namedImport of importDeclaration.getNamedImports()) {\n const localName = namedImport.getAliasNode()?.getText() ?? namedImport.getName();\n takenNames.add(localName);\n }\n }\n\n for (const variableDeclaration of sourceFile.getVariableDeclarations()) {\n takenNames.add(variableDeclaration.getName());\n }\n\n return takenNames;\n}\n\nexport function resolveNonCollidingName(\n baseName: string,\n reservedNames: Set<string>,\n startIndex = 1\n): string {\n if (!reservedNames.has(baseName)) {\n reservedNames.add(baseName);\n return baseName;\n }\n\n let index = startIndex;\n while (reservedNames.has(`${baseName}${index}`)) {\n index += 1;\n }\n\n const uniqueName = `${baseName}${index}`;\n reservedNames.add(uniqueName);\n return uniqueName;\n}\n\nexport function toCamelCase(input: string): string {\n const result = input\n .toLowerCase()\n .replaceAll(/\\W/g, ' ')\n .trim()\n .replaceAll(/[\\s_]+(.)/g, (_, char: string) => char.toUpperCase())\n .replace(/^[0-9]/, '_$&');\n\n return result.charAt(0).toLowerCase() + result.slice(1);\n}\n\nexport function toToolReferenceName(input: string): string {\n const base = toCamelCase(input);\n return base.endsWith('Tool') ? base : `${base}Tool`;\n}\n\nexport function toCredentialReferenceName(input: string): string {\n const base = toCamelCase(input);\n return base.endsWith('Credential') ? base : `${base}Credential`;\n}\n\nexport function toTriggerReferenceName(input: string): string {\n const base = toCamelCase(input);\n return base.endsWith('Trigger') ? base : `${base}Trigger`;\n}\n\nexport function toKebabCase(input: string): string {\n return input\n .trim()\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[^a-zA-Z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .toLowerCase();\n}\n\nconst UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nconst CUID_RE = /^c[a-z0-9]{24,}$/;\nconst NANOID_RE = /^[a-z0-9]{16,}$/;\n\nexport function isHumanReadableId(id: string): boolean {\n if (UUID_RE.test(id) || CUID_RE.test(id) || NANOID_RE.test(id)) {\n return false;\n }\n\n const segments = id.split(/[-_]/);\n if (segments.length === 1 && id.length > 8) {\n const hasLetters = /[a-zA-Z]/.test(id);\n const hasDigits = /[0-9]/.test(id);\n if (hasLetters && hasDigits) {\n return false;\n }\n }\n\n const wordLikeSegments = segments.filter((s) => /^[a-zA-Z]+\\d{0,2}$/.test(s));\n return wordLikeSegments.length / segments.length >= 0.5;\n}\n\nconst ID_SUFFIX_LENGTH = 8;\n\nexport function buildComponentFileName(id: string, name?: string): string {\n if (!name || isHumanReadableId(id)) {\n return `${id}.ts`;\n }\n\n const kebabName = toKebabCase(name);\n if (!kebabName || kebabName === id) {\n return `${id}.ts`;\n }\n\n const shortId = id.slice(-ID_SUFFIX_LENGTH);\n return `${kebabName}-${shortId}.ts`;\n}\n\nexport function createUniqueReferenceName(\n baseName: string,\n reservedNames: Set<string>,\n conflictSuffix: string\n): string {\n if (!reservedNames.has(baseName)) {\n reservedNames.add(baseName);\n return baseName;\n }\n\n const baseCandidate = `${baseName}${conflictSuffix}`;\n if (!reservedNames.has(baseCandidate)) {\n reservedNames.add(baseCandidate);\n return baseCandidate;\n }\n\n return resolveNonCollidingName(baseCandidate, reservedNames, 2);\n}\n\nexport function resolveImportedReference(\n importName: string,\n reservedNames: Set<string>,\n conflictSuffix: string,\n isLocal = false\n): {\n referenceName: string;\n namedImport?: string | { name: string; alias: string };\n} {\n if (isLocal) {\n reservedNames.add(importName);\n return { referenceName: importName };\n }\n\n const referenceName = createUniqueReferenceName(importName, reservedNames, conflictSuffix);\n return {\n referenceName,\n namedImport:\n importName === referenceName ? importName : { name: importName, alias: referenceName },\n };\n}\n\ninterface NamedTemplateReference {\n name: string;\n local?: boolean;\n}\n\nexport function resolveContextTemplateImports(options: {\n reservedNames: Set<string>;\n shouldResolveContextReference: boolean;\n shouldResolveHeadersReference: boolean;\n contextConfigReference?: NamedTemplateReference;\n contextConfigHeadersReference?: NamedTemplateReference;\n defaultContextImportName?: string;\n defaultHeadersImportName?: string;\n}): {\n contextReferenceName?: string;\n headersReferenceName?: string;\n namedImports: Array<string | { name: string; alias: string }>;\n} {\n const namedImports: Array<string | { name: string; alias: string }> = [];\n let contextReferenceName: string | undefined;\n let headersReferenceName: string | undefined;\n\n if (options.shouldResolveContextReference) {\n const contextImportName =\n options.contextConfigReference?.name ?? options.defaultContextImportName;\n if (contextImportName) {\n const contextImportRef = resolveImportedReference(\n contextImportName,\n options.reservedNames,\n 'ContextConfig',\n options.contextConfigReference?.local === true\n );\n contextReferenceName = contextImportRef.referenceName;\n if (contextImportRef.namedImport) {\n namedImports.push(contextImportRef.namedImport);\n }\n }\n }\n\n if (options.shouldResolveHeadersReference) {\n const headersImportName =\n options.contextConfigHeadersReference?.name ?? options.defaultHeadersImportName;\n if (headersImportName) {\n const headersImportRef = resolveImportedReference(\n headersImportName,\n options.reservedNames,\n 'Headers',\n options.contextConfigHeadersReference?.local === true\n );\n headersReferenceName = headersImportRef.referenceName;\n if (headersImportRef.namedImport) {\n namedImports.push(headersImportRef.namedImport);\n }\n }\n }\n\n return {\n contextReferenceName,\n headersReferenceName,\n namedImports,\n };\n}\n\ntype ReferenceOverrideMap = Record<string, string>;\n\nexport function resolveReferenceName(\n referenceId: string,\n referenceOverrides: Array<ReferenceOverrideMap | undefined>\n): string {\n for (const overrideMap of referenceOverrides) {\n const overrideName = overrideMap?.[referenceId];\n if (overrideName) {\n return overrideName;\n }\n }\n\n return toCamelCase(referenceId);\n}\n\nexport function convertJsonSchemaToZodSafe(\n schema: unknown,\n options?: { conversionOptions?: Parameters<typeof jsonSchemaToZod>[1] }\n): string {\n if (!isPlainObject(schema)) {\n console.warn('Schema conversion skipped: non-object schema provided, using z.any()');\n return 'z.any()';\n }\n try {\n return jsonSchemaToZod(schema, options?.conversionOptions);\n } catch (error) {\n console.warn(\n `Schema conversion failed: ${error instanceof Error ? error.message : String(error)}. Falling back to z.any()`\n );\n return 'z.any()';\n }\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nconst QUOTE = Object.freeze({\n single: \"'\",\n double: '\"',\n template: '`',\n});\n\ntype Quote = (typeof QUOTE)[keyof typeof QUOTE];\n\nexport const TEMPLATE_VARIABLE_REGEX = /\\{\\{(?!\\{)(?<variableName>[^{}]+)}}/g;\n\ninterface TemplateReplacementReferences {\n contextReference?: string;\n headersReference?: string;\n}\n\nexport function formatStringLiteral(value: string): string {\n const hasSingleQuote = value.includes(QUOTE.single);\n const hasDoubleQuote = value.includes(QUOTE.double);\n const quote =\n value.includes('\\n') || value.includes('${') || (hasSingleQuote && hasDoubleQuote)\n ? QUOTE.template\n : hasSingleQuote\n ? QUOTE.double\n : QUOTE.single;\n return escapeStringLiteral(value, quote);\n}\n\nexport function collectTemplateVariableNames(value: string): string[] {\n const variables: string[] = [];\n for (const match of value.matchAll(TEMPLATE_VARIABLE_REGEX)) {\n const variableName = match.groups?.variableName?.trim();\n if (variableName) {\n variables.push(variableName);\n }\n }\n return variables;\n}\n\nexport function formatTemplate(value: string, references: TemplateReplacementReferences): string {\n if (!value.length) {\n return value;\n }\n\n let didReplace = false;\n const rewrittenValue = value.replace(\n TEMPLATE_VARIABLE_REGEX,\n (match: string, ...args: unknown[]): string => {\n const maybeGroups = args.at(-1);\n const variableName =\n isPlainObject(maybeGroups) && typeof maybeGroups.variableName === 'string'\n ? maybeGroups.variableName.trim()\n : undefined;\n\n if (!variableName) {\n return match;\n }\n\n if (variableName.startsWith('headers.')) {\n const headerPath = variableName.slice('headers.'.length);\n if (!headerPath || !references.headersReference) {\n return match;\n }\n didReplace = true;\n return `\\${${references.headersReference}.toTemplate(${JSON.stringify(headerPath)})}`;\n }\n\n if (!references.contextReference) {\n return match;\n }\n\n didReplace = true;\n return `\\${${references.contextReference}.toTemplate(${JSON.stringify(variableName)})}`;\n }\n );\n\n return didReplace ? rewrittenValue : value;\n}\n\nfunction escapeStringLiteral(value: string, quote: Quote): string {\n return [\n quote, //\n value.replaceAll('\\\\', '\\\\\\\\').replaceAll(quote, `\\\\${quote}`),\n quote,\n ].join('');\n}\n\nexport function formatPropertyName(key: string): string {\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n return key;\n }\n return formatStringLiteral(key);\n}\n\nexport function formatInlineLiteral(value: unknown): string {\n if (typeof value === 'string') {\n return formatStringLiteral(value);\n }\n if (typeof value === 'number' || typeof value === 'bigint') {\n return String(value);\n }\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n }\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return `[${value.map((item) => formatInlineLiteral(item)).join(', ')}]`;\n }\n if (isPlainObject(value)) {\n const entries = Object.entries(value).filter(([, entryValue]) => entryValue !== undefined);\n if (!entries.length) {\n return '{}';\n }\n return `{ ${entries\n .map(([key, entryValue]) => `${formatPropertyName(key)}: ${formatInlineLiteral(entryValue)}`)\n .join(', ')} }`;\n }\n return 'undefined';\n}\n\nexport function addReferenceGetterProperty(\n configObject: ObjectLiteralExpression,\n key: string,\n refs: string[]\n): void {\n const property = configObject.addPropertyAssignment({\n name: key,\n initializer: '() => []',\n });\n const getter = property.getInitializerIfKindOrThrow(SyntaxKind.ArrowFunction);\n const body = getter.getBody().asKindOrThrow(SyntaxKind.ArrayLiteralExpression);\n body.addElements(refs);\n}\n\nexport function addStringProperty(\n configObject: ObjectLiteralExpression,\n key: string,\n value: string\n): void {\n configObject.addPropertyAssignment({\n name: key,\n initializer: formatStringLiteral(value),\n });\n}\n\nexport function addValueToObject(obj: ObjectLiteralExpression, key: string, value: unknown): void {\n if (value === undefined) return;\n\n if (isPlainObject(value)) {\n const p = obj.addPropertyAssignment({ name: formatPropertyName(key), initializer: '{}' });\n const child = p.getInitializerIfKindOrThrow(SyntaxKind.ObjectLiteralExpression);\n for (const [k, v] of Object.entries(value)) addValueToObject(child, k, v);\n return;\n }\n\n if (Array.isArray(value)) {\n const p = obj.addPropertyAssignment({ name: formatPropertyName(key), initializer: '[]' });\n const arr = p.getInitializerIfKindOrThrow(SyntaxKind.ArrayLiteralExpression);\n for (const item of value) {\n addValueToArray(arr, item);\n }\n return;\n }\n\n obj.addPropertyAssignment({\n name: formatPropertyName(key),\n initializer: formatInlineLiteral(value),\n });\n}\n\nfunction addValueToArray(arr: ArrayLiteralExpression, value: unknown) {\n if (isPlainObject(value)) {\n const expr = arr.addElement('{}');\n const child = expr.asKindOrThrow(SyntaxKind.ObjectLiteralExpression);\n for (const [k, v] of Object.entries(value)) {\n addValueToObject(child, k, v);\n }\n return;\n }\n\n if (Array.isArray(value)) {\n const expr = arr.addElement('[]');\n const child = expr.asKindOrThrow(SyntaxKind.ArrayLiteralExpression);\n for (const item of value) {\n addValueToArray(child, item);\n }\n return;\n }\n\n arr.addElement(formatInlineLiteral(value));\n}\n\nexport async function expectSnapshots(definitionV4: string): Promise<void> {\n const { currentTestName, snapshotState } = expect.getState();\n\n const snapshotDir = path.basename(snapshotState.testFilePath).replace('-generator.test.ts', '');\n await expect(definitionV4).toMatchFileSnapshot(\n `__snapshots__/${snapshotDir}/${currentTestName}-v4.txt`\n );\n}\n\nexport function hasReferences<T>(references?: T[]): references is T[] {\n return Array.isArray(references) && references.length > 0;\n}\n"],"mappings":"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"}
|