@open-mercato/cli 0.6.5-develop.5309.1.be1df535b3 → 0.6.5-develop.5382.1.f542de69af
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/generators/extensions/ai-agents.ts"],
|
|
4
|
-
"sourcesContent": ["import { VariableDeclarationKind, type WriterFunction } from 'ts-morph'\nimport type { GeneratorExtension } from '../extension'\nimport {\n arrayLiteral,\n arrowFunction,\n binaryExpression,\n identifier,\n methodCall,\n objectLiteral,\n parenthesized,\n propertyAccess,\n writeValue,\n} from '../ast'\nimport {\n emptyArray,\n emptyObject,\n moduleEntry,\n namespaceFallback,\n namespaceImportSpec,\n renderGeneratedTsSource,\n} from './shared'\n\n/**\n * Generator extension for `<module>/ai-agents.ts` files.\n *\n * Each module's `ai-agents.ts` may export both base agent contributions\n * (`aiAgents`), additive extensions for existing agents\n * (`aiAgentExtensions`), AND cross-module override declarations\n * (`aiAgentOverrides`). The generator scans the file once, emits the\n * configuration entry with all fields, and produces filtered\n * exports inside `ai-agents.generated.ts`:\n *\n * - `aiAgentConfigEntries` (entries that declare base agents)\n * - `aiAgentExtensionEntries` / `allAiAgentExtensions` (entries that append to agents)\n * - `aiAgentOverrideEntries` (entries that declare overrides)\n *\n * The runtime (`@open-mercato/ai-assistant`) reads\n * `aiAgentConfigEntries` to populate the agent registry,\n * `aiAgentOverrideEntries` to apply cross-module replacements, and\n * `allAiAgentExtensions` to append safe metadata after the base load. See spec\n * `.ai/specs/2026-04-30-ai-overrides-and-module-disable.md`.\n */\nexport function createAiAgentsExtension(): GeneratorExtension {\n const imports = [] as Array<ReturnType<typeof namespaceImportSpec>>\n const entries: WriterFunction[] = []\n\n return {\n id: 'registry.ai-agents',\n outputFiles: ['ai-agents.generated.ts'],\n scanModule(ctx) {\n ctx.processStandaloneConfig({\n roots: ctx.roots,\n imps: ctx.imps,\n modId: ctx.moduleId,\n relativePath: 'ai-agents.ts',\n prefix: 'AI_AGENTS',\n importIdRef: ctx.importIdRef,\n standaloneImports: imports,\n standaloneEntries: entries,\n writeConfig: ({ importName, moduleId }) =>\n moduleEntry(moduleId, [\n {\n name: 'agents',\n value: namespaceFallback({\n importName,\n members: ['aiAgents', 'default'],\n fallback: emptyArray(),\n castType: 'unknown[]',\n }),\n },\n {\n name: 'overrides',\n value: namespaceFallback({\n importName,\n members: ['aiAgentOverrides'],\n fallback: emptyObject(),\n castType: 'Record<string, unknown>',\n }),\n },\n {\n name: 'extensions',\n value: namespaceFallback({\n importName,\n members: ['aiAgentExtensions'],\n fallback: emptyArray(),\n castType: 'unknown[]',\n }),\n },\n ]),\n })\n },\n generateOutput() {\n const output = renderGeneratedTsSource({\n fileName: 'ai-agents.generated.ts',\n imports,\n build(sourceFile) {\n sourceFile.addTypeAlias({\n name: 'AiAgentConfigEntry',\n type: '{ moduleId: string; agents: unknown[]; overrides: Record<string, unknown>; extensions: unknown[] }',\n })\n sourceFile.addTypeAlias({\n name: 'AiAgentOverrideConfigEntry',\n type: '{ moduleId: string; overrides: Record<string, unknown> }',\n })\n sourceFile.addTypeAlias({\n name: 'AiAgentExtensionConfigEntry',\n type: '{ moduleId: string; extensions: unknown[] }',\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: 'aiAgentConfigEntriesRaw',\n type: 'AiAgentConfigEntry[]',\n initializer: arrayLiteral(entries, writeValue),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiAgentConfigEntries',\n type: 'AiAgentConfigEntry[]',\n initializer: methodCall(identifier('aiAgentConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(propertyAccess(propertyAccess(identifier('entry'), 'agents'), 'length'), '>', 0),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiAgentExtensionEntries',\n type: 'AiAgentExtensionConfigEntry[]',\n initializer: methodCall(\n methodCall(identifier('aiAgentConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(propertyAccess(propertyAccess(identifier('entry'), 'extensions'), 'length'), '>', 0),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['entry'],\n body: parenthesized(\n objectLiteral([\n { name: 'moduleId', value: propertyAccess(identifier('entry'), 'moduleId') },\n { name: 'extensions', value: propertyAccess(identifier('entry'), 'extensions') },\n ]),\n ),\n }),\n ],\n ),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'allAiAgentExtensions',\n initializer: methodCall(identifier('aiAgentExtensionEntries'), 'flatMap', [\n arrowFunction({\n parameters: ['entry'],\n body: propertyAccess(identifier('entry'), 'extensions'),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'allAiAgents',\n initializer: methodCall(identifier('aiAgentConfigEntries'), 'flatMap', [\n arrowFunction({\n parameters: ['entry'],\n body: propertyAccess(identifier('entry'), 'agents'),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiAgentOverrideEntries',\n type: 'AiAgentOverrideConfigEntry[]',\n initializer: methodCall(\n methodCall(identifier('aiAgentConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(\n propertyAccess(\n methodCall(identifier('Object'), 'keys', [\n propertyAccess(identifier('entry'), 'overrides'),\n ]),\n 'length',\n ),\n '>',\n 0,\n ),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['entry'],\n body: parenthesized(\n objectLiteral([\n { name: 'moduleId', value: propertyAccess(identifier('entry'), 'moduleId') },\n { name: 'overrides', value: propertyAccess(identifier('entry'), 'overrides') },\n ]),\n ),\n }),\n ],\n ),\n },\n ],\n })\n },\n })\n\n return new Map([['ai-agents.generated.ts', output]])\n },\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { VariableDeclarationKind, type WriterFunction } from 'ts-morph'\nimport type { GeneratorExtension } from '../extension'\nimport {\n arrayLiteral,\n arrowFunction,\n binaryExpression,\n identifier,\n methodCall,\n objectLiteral,\n parenthesized,\n propertyAccess,\n writeValue,\n} from '../ast'\nimport {\n emptyArray,\n emptyObject,\n moduleEntry,\n namespaceFallback,\n namespaceImportSpec,\n renderGeneratedTsSource,\n} from './shared'\n\n/**\n * Generator extension for `<module>/ai-agents.ts` files.\n *\n * Each module's `ai-agents.ts` may export both base agent contributions\n * (`aiAgents`), additive extensions for existing agents\n * (`aiAgentExtensions`), AND cross-module override declarations\n * (`aiAgentOverrides`). The generator scans the file once, emits the\n * configuration entry with all fields, and produces filtered\n * exports inside `ai-agents.generated.ts`:\n *\n * - `aiAgentConfigEntries` (entries that declare base agents)\n * - `aiAgentExtensionEntries` / `allAiAgentExtensions` (entries that append to agents)\n * - `aiAgentOverrideEntries` (entries that declare overrides)\n *\n * The runtime (`@open-mercato/ai-assistant`) reads\n * `aiAgentConfigEntries` to populate the agent registry,\n * `aiAgentOverrideEntries` to apply cross-module replacements, and\n * `allAiAgentExtensions` to append safe metadata after the base load. See spec\n * `.ai/specs/implemented/2026-04-30-ai-overrides-and-module-disable.md`.\n */\nexport function createAiAgentsExtension(): GeneratorExtension {\n const imports = [] as Array<ReturnType<typeof namespaceImportSpec>>\n const entries: WriterFunction[] = []\n\n return {\n id: 'registry.ai-agents',\n outputFiles: ['ai-agents.generated.ts'],\n scanModule(ctx) {\n ctx.processStandaloneConfig({\n roots: ctx.roots,\n imps: ctx.imps,\n modId: ctx.moduleId,\n relativePath: 'ai-agents.ts',\n prefix: 'AI_AGENTS',\n importIdRef: ctx.importIdRef,\n standaloneImports: imports,\n standaloneEntries: entries,\n writeConfig: ({ importName, moduleId }) =>\n moduleEntry(moduleId, [\n {\n name: 'agents',\n value: namespaceFallback({\n importName,\n members: ['aiAgents', 'default'],\n fallback: emptyArray(),\n castType: 'unknown[]',\n }),\n },\n {\n name: 'overrides',\n value: namespaceFallback({\n importName,\n members: ['aiAgentOverrides'],\n fallback: emptyObject(),\n castType: 'Record<string, unknown>',\n }),\n },\n {\n name: 'extensions',\n value: namespaceFallback({\n importName,\n members: ['aiAgentExtensions'],\n fallback: emptyArray(),\n castType: 'unknown[]',\n }),\n },\n ]),\n })\n },\n generateOutput() {\n const output = renderGeneratedTsSource({\n fileName: 'ai-agents.generated.ts',\n imports,\n build(sourceFile) {\n sourceFile.addTypeAlias({\n name: 'AiAgentConfigEntry',\n type: '{ moduleId: string; agents: unknown[]; overrides: Record<string, unknown>; extensions: unknown[] }',\n })\n sourceFile.addTypeAlias({\n name: 'AiAgentOverrideConfigEntry',\n type: '{ moduleId: string; overrides: Record<string, unknown> }',\n })\n sourceFile.addTypeAlias({\n name: 'AiAgentExtensionConfigEntry',\n type: '{ moduleId: string; extensions: unknown[] }',\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: 'aiAgentConfigEntriesRaw',\n type: 'AiAgentConfigEntry[]',\n initializer: arrayLiteral(entries, writeValue),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiAgentConfigEntries',\n type: 'AiAgentConfigEntry[]',\n initializer: methodCall(identifier('aiAgentConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(propertyAccess(propertyAccess(identifier('entry'), 'agents'), 'length'), '>', 0),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiAgentExtensionEntries',\n type: 'AiAgentExtensionConfigEntry[]',\n initializer: methodCall(\n methodCall(identifier('aiAgentConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(propertyAccess(propertyAccess(identifier('entry'), 'extensions'), 'length'), '>', 0),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['entry'],\n body: parenthesized(\n objectLiteral([\n { name: 'moduleId', value: propertyAccess(identifier('entry'), 'moduleId') },\n { name: 'extensions', value: propertyAccess(identifier('entry'), 'extensions') },\n ]),\n ),\n }),\n ],\n ),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'allAiAgentExtensions',\n initializer: methodCall(identifier('aiAgentExtensionEntries'), 'flatMap', [\n arrowFunction({\n parameters: ['entry'],\n body: propertyAccess(identifier('entry'), 'extensions'),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'allAiAgents',\n initializer: methodCall(identifier('aiAgentConfigEntries'), 'flatMap', [\n arrowFunction({\n parameters: ['entry'],\n body: propertyAccess(identifier('entry'), 'agents'),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiAgentOverrideEntries',\n type: 'AiAgentOverrideConfigEntry[]',\n initializer: methodCall(\n methodCall(identifier('aiAgentConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(\n propertyAccess(\n methodCall(identifier('Object'), 'keys', [\n propertyAccess(identifier('entry'), 'overrides'),\n ]),\n 'length',\n ),\n '>',\n 0,\n ),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['entry'],\n body: parenthesized(\n objectLiteral([\n { name: 'moduleId', value: propertyAccess(identifier('entry'), 'moduleId') },\n { name: 'overrides', value: propertyAccess(identifier('entry'), 'overrides') },\n ]),\n ),\n }),\n ],\n ),\n },\n ],\n })\n },\n })\n\n return new Map([['ai-agents.generated.ts', output]])\n },\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/generators/extensions/ai-tools.ts"],
|
|
4
|
-
"sourcesContent": ["import { VariableDeclarationKind, type WriterFunction } from 'ts-morph'\nimport type { GeneratorExtension } from '../extension'\nimport {\n arrayLiteral,\n arrowFunction,\n binaryExpression,\n identifier,\n methodCall,\n objectLiteral,\n parenthesized,\n propertyAccess,\n writeValue,\n} from '../ast'\nimport {\n emptyArray,\n emptyObject,\n moduleEntry,\n namespaceFallback,\n namespaceImportSpec,\n renderGeneratedTsSource,\n} from './shared'\n\n/**\n * Generator extension for `<module>/ai-tools.ts` files.\n *\n * Each module's `ai-tools.ts` may export both base tool contributions\n * (`aiTools`) AND cross-module override declarations (`aiToolOverrides`).\n * The generator scans the file once and emits two filtered exports\n * inside `ai-tools.generated.ts`:\n *\n * - `aiToolConfigEntries` (entries that declare base tools)\n * - `aiToolOverrideEntries` (entries that declare overrides)\n *\n * The runtime (`@open-mercato/ai-assistant`) reads `aiToolConfigEntries`\n * to populate the tool registry and `aiToolOverrideEntries` to apply\n * cross-module replacements after the base load. See spec\n * `.ai/specs/2026-04-30-ai-overrides-and-module-disable.md`.\n */\nexport function createAiToolsExtension(): GeneratorExtension {\n const imports = [] as Array<ReturnType<typeof namespaceImportSpec>>\n const entries: WriterFunction[] = []\n\n return {\n id: 'registry.ai-tools',\n outputFiles: ['ai-tools.generated.ts'],\n scanModule(ctx) {\n ctx.processStandaloneConfig({\n roots: ctx.roots,\n imps: ctx.imps,\n modId: ctx.moduleId,\n relativePath: 'ai-tools.ts',\n prefix: 'AI_TOOLS',\n importIdRef: ctx.importIdRef,\n standaloneImports: imports,\n standaloneEntries: entries,\n writeConfig: ({ importName, moduleId }) =>\n moduleEntry(moduleId, [\n {\n name: 'tools',\n value: namespaceFallback({\n importName,\n members: ['aiTools', 'default'],\n fallback: emptyArray(),\n castType: 'unknown[]',\n }),\n },\n {\n name: 'overrides',\n value: namespaceFallback({\n importName,\n members: ['aiToolOverrides'],\n fallback: emptyObject(),\n castType: 'Record<string, unknown>',\n }),\n },\n ]),\n })\n },\n generateOutput() {\n const output = renderGeneratedTsSource({\n fileName: 'ai-tools.generated.ts',\n imports,\n build(sourceFile) {\n sourceFile.addTypeAlias({\n name: 'AiToolConfigEntry',\n type: '{ moduleId: string; tools: unknown[]; overrides: Record<string, unknown> }',\n })\n sourceFile.addTypeAlias({\n name: 'AiToolOverrideConfigEntry',\n type: '{ moduleId: string; overrides: Record<string, unknown> }',\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: 'aiToolConfigEntriesRaw',\n type: 'AiToolConfigEntry[]',\n initializer: arrayLiteral(entries, writeValue),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiToolConfigEntries',\n type: 'AiToolConfigEntry[]',\n initializer: methodCall(identifier('aiToolConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(propertyAccess(propertyAccess(identifier('entry'), 'tools'), 'length'), '>', 0),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'allAiTools',\n initializer: methodCall(identifier('aiToolConfigEntries'), 'flatMap', [\n arrowFunction({\n parameters: ['entry'],\n body: propertyAccess(identifier('entry'), 'tools'),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiToolOverrideEntries',\n type: 'AiToolOverrideConfigEntry[]',\n initializer: methodCall(\n methodCall(identifier('aiToolConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(\n propertyAccess(\n methodCall(identifier('Object'), 'keys', [\n propertyAccess(identifier('entry'), 'overrides'),\n ]),\n 'length',\n ),\n '>',\n 0,\n ),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['entry'],\n body: parenthesized(\n objectLiteral([\n { name: 'moduleId', value: propertyAccess(identifier('entry'), 'moduleId') },\n { name: 'overrides', value: propertyAccess(identifier('entry'), 'overrides') },\n ]),\n ),\n }),\n ],\n ),\n },\n ],\n })\n },\n })\n\n return new Map([['ai-tools.generated.ts', output]])\n },\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { VariableDeclarationKind, type WriterFunction } from 'ts-morph'\nimport type { GeneratorExtension } from '../extension'\nimport {\n arrayLiteral,\n arrowFunction,\n binaryExpression,\n identifier,\n methodCall,\n objectLiteral,\n parenthesized,\n propertyAccess,\n writeValue,\n} from '../ast'\nimport {\n emptyArray,\n emptyObject,\n moduleEntry,\n namespaceFallback,\n namespaceImportSpec,\n renderGeneratedTsSource,\n} from './shared'\n\n/**\n * Generator extension for `<module>/ai-tools.ts` files.\n *\n * Each module's `ai-tools.ts` may export both base tool contributions\n * (`aiTools`) AND cross-module override declarations (`aiToolOverrides`).\n * The generator scans the file once and emits two filtered exports\n * inside `ai-tools.generated.ts`:\n *\n * - `aiToolConfigEntries` (entries that declare base tools)\n * - `aiToolOverrideEntries` (entries that declare overrides)\n *\n * The runtime (`@open-mercato/ai-assistant`) reads `aiToolConfigEntries`\n * to populate the tool registry and `aiToolOverrideEntries` to apply\n * cross-module replacements after the base load. See spec\n * `.ai/specs/implemented/2026-04-30-ai-overrides-and-module-disable.md`.\n */\nexport function createAiToolsExtension(): GeneratorExtension {\n const imports = [] as Array<ReturnType<typeof namespaceImportSpec>>\n const entries: WriterFunction[] = []\n\n return {\n id: 'registry.ai-tools',\n outputFiles: ['ai-tools.generated.ts'],\n scanModule(ctx) {\n ctx.processStandaloneConfig({\n roots: ctx.roots,\n imps: ctx.imps,\n modId: ctx.moduleId,\n relativePath: 'ai-tools.ts',\n prefix: 'AI_TOOLS',\n importIdRef: ctx.importIdRef,\n standaloneImports: imports,\n standaloneEntries: entries,\n writeConfig: ({ importName, moduleId }) =>\n moduleEntry(moduleId, [\n {\n name: 'tools',\n value: namespaceFallback({\n importName,\n members: ['aiTools', 'default'],\n fallback: emptyArray(),\n castType: 'unknown[]',\n }),\n },\n {\n name: 'overrides',\n value: namespaceFallback({\n importName,\n members: ['aiToolOverrides'],\n fallback: emptyObject(),\n castType: 'Record<string, unknown>',\n }),\n },\n ]),\n })\n },\n generateOutput() {\n const output = renderGeneratedTsSource({\n fileName: 'ai-tools.generated.ts',\n imports,\n build(sourceFile) {\n sourceFile.addTypeAlias({\n name: 'AiToolConfigEntry',\n type: '{ moduleId: string; tools: unknown[]; overrides: Record<string, unknown> }',\n })\n sourceFile.addTypeAlias({\n name: 'AiToolOverrideConfigEntry',\n type: '{ moduleId: string; overrides: Record<string, unknown> }',\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: 'aiToolConfigEntriesRaw',\n type: 'AiToolConfigEntry[]',\n initializer: arrayLiteral(entries, writeValue),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiToolConfigEntries',\n type: 'AiToolConfigEntry[]',\n initializer: methodCall(identifier('aiToolConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(propertyAccess(propertyAccess(identifier('entry'), 'tools'), 'length'), '>', 0),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'allAiTools',\n initializer: methodCall(identifier('aiToolConfigEntries'), 'flatMap', [\n arrowFunction({\n parameters: ['entry'],\n body: propertyAccess(identifier('entry'), 'tools'),\n }),\n ]),\n },\n ],\n })\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n isExported: true,\n declarations: [\n {\n name: 'aiToolOverrideEntries',\n type: 'AiToolOverrideConfigEntry[]',\n initializer: methodCall(\n methodCall(identifier('aiToolConfigEntriesRaw'), 'filter', [\n arrowFunction({\n parameters: ['entry'],\n body: binaryExpression(\n propertyAccess(\n methodCall(identifier('Object'), 'keys', [\n propertyAccess(identifier('entry'), 'overrides'),\n ]),\n 'length',\n ),\n '>',\n 0,\n ),\n }),\n ]),\n 'map',\n [\n arrowFunction({\n parameters: ['entry'],\n body: parenthesized(\n objectLiteral([\n { name: 'moduleId', value: propertyAccess(identifier('entry'), 'moduleId') },\n { name: 'overrides', value: propertyAccess(identifier('entry'), 'overrides') },\n ]),\n ),\n }),\n ],\n ),\n },\n ],\n })\n },\n })\n\n return new Map([['ai-tools.generated.ts', output]])\n },\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-mercato/cli",
|
|
3
|
-
"version": "0.6.5-develop.
|
|
3
|
+
"version": "0.6.5-develop.5382.1.f542de69af",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -59,8 +59,8 @@
|
|
|
59
59
|
"@mikro-orm/decorators": "^7.1.4",
|
|
60
60
|
"@mikro-orm/migrations": "^7.1.4",
|
|
61
61
|
"@mikro-orm/postgresql": "^7.1.4",
|
|
62
|
-
"@open-mercato/queue": "0.6.5-develop.
|
|
63
|
-
"@open-mercato/shared": "0.6.5-develop.
|
|
62
|
+
"@open-mercato/queue": "0.6.5-develop.5382.1.f542de69af",
|
|
63
|
+
"@open-mercato/shared": "0.6.5-develop.5382.1.f542de69af",
|
|
64
64
|
"cross-spawn": "^7.0.6",
|
|
65
65
|
"pg": "8.21.0",
|
|
66
66
|
"semver": "^7.8.3",
|
|
@@ -70,10 +70,10 @@
|
|
|
70
70
|
"typescript": "^6.0.3"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
|
-
"@open-mercato/shared": "0.6.5-develop.
|
|
73
|
+
"@open-mercato/shared": "0.6.5-develop.5382.1.f542de69af"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@open-mercato/shared": "0.6.5-develop.
|
|
76
|
+
"@open-mercato/shared": "0.6.5-develop.5382.1.f542de69af",
|
|
77
77
|
"@types/jest": "^30.0.0",
|
|
78
78
|
"jest": "^30.4.2",
|
|
79
79
|
"ts-jest": "^29.4.11"
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
* `aiAgentConfigEntries` to populate the agent registry,
|
|
39
39
|
* `aiAgentOverrideEntries` to apply cross-module replacements, and
|
|
40
40
|
* `allAiAgentExtensions` to append safe metadata after the base load. See spec
|
|
41
|
-
* `.ai/specs/2026-04-30-ai-overrides-and-module-disable.md`.
|
|
41
|
+
* `.ai/specs/implemented/2026-04-30-ai-overrides-and-module-disable.md`.
|
|
42
42
|
*/
|
|
43
43
|
export function createAiAgentsExtension(): GeneratorExtension {
|
|
44
44
|
const imports = [] as Array<ReturnType<typeof namespaceImportSpec>>
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
* The runtime (`@open-mercato/ai-assistant`) reads `aiToolConfigEntries`
|
|
35
35
|
* to populate the tool registry and `aiToolOverrideEntries` to apply
|
|
36
36
|
* cross-module replacements after the base load. See spec
|
|
37
|
-
* `.ai/specs/2026-04-30-ai-overrides-and-module-disable.md`.
|
|
37
|
+
* `.ai/specs/implemented/2026-04-30-ai-overrides-and-module-disable.md`.
|
|
38
38
|
*/
|
|
39
39
|
export function createAiToolsExtension(): GeneratorExtension {
|
|
40
40
|
const imports = [] as Array<ReturnType<typeof namespaceImportSpec>>
|