struere 0.12.6 → 0.12.7

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.
@@ -1735,11 +1735,32 @@ function defineTools(tools) {
1735
1735
  })
1736
1736
  }
1737
1737
 
1738
+ function defineRouter(config) {
1739
+ const VALID_OPERATORS = ['eq', 'neq', 'in', 'contains', 'regex', 'gt', 'lt', 'exists']
1740
+ if (!config.name) throw new Error('Router name is required')
1741
+ if (!config.slug) throw new Error('Router slug is required')
1742
+ if (!config.agents || config.agents.length === 0) throw new Error('Router must have at least one agent')
1743
+ var agentSlugs = new Set(config.agents.map(function(a) { return a.slug }))
1744
+ if (!agentSlugs.has(config.fallback)) throw new Error('Router fallback "' + config.fallback + '" must reference an agent slug in the agents array')
1745
+ if (config.mode === 'rules') {
1746
+ if (!config.rules || config.rules.length === 0) throw new Error('Router with mode "rules" must have at least one rule')
1747
+ for (var rule of config.rules) {
1748
+ if (!rule.conditions || rule.conditions.length === 0) throw new Error('Each router rule must have at least one condition')
1749
+ if (!agentSlugs.has(rule.route)) throw new Error('Router rule route "' + rule.route + '" must reference an agent slug in the agents array')
1750
+ for (var condition of rule.conditions) {
1751
+ if (!condition.field) throw new Error('Router rule condition field is required')
1752
+ if (!VALID_OPERATORS.includes(condition.operator)) throw new Error('Router rule condition operator must be one of: ' + VALID_OPERATORS.join(', '))
1753
+ }
1754
+ }
1755
+ }
1756
+ return config
1757
+ }
1758
+
1738
1759
  function defineEntityType() {
1739
1760
  throw new Error('defineEntityType has been renamed to defineData. Please update your imports: import { defineData } from "struere"')
1740
1761
  }
1741
1762
 
1742
- export { defineAgent, defineRole, defineData, defineEntityType, defineTrigger, defineTools }
1763
+ export { defineAgent, defineRole, defineData, defineEntityType, defineTrigger, defineTools, defineRouter }
1743
1764
  `;
1744
1765
  function registerStruerePlugin() {
1745
1766
  if (registered)
@@ -1956,12 +1977,43 @@ export interface TriggerConfig {
1956
1977
  }
1957
1978
  }
1958
1979
 
1980
+ export interface RouterAgentRef {
1981
+ slug: string
1982
+ description: string
1983
+ }
1984
+
1985
+ export interface RouterRuleCondition {
1986
+ field: string
1987
+ operator: 'eq' | 'neq' | 'in' | 'contains' | 'regex' | 'gt' | 'lt' | 'exists'
1988
+ value?: unknown
1989
+ }
1990
+
1991
+ export interface RouterRule {
1992
+ conditions: RouterRuleCondition[]
1993
+ route: string
1994
+ }
1995
+
1996
+ export interface RouterConfig {
1997
+ name: string
1998
+ slug: string
1999
+ description?: string
2000
+ mode: 'rules' | 'classify'
2001
+ agents: RouterAgentRef[]
2002
+ rules?: RouterRule[]
2003
+ fallback: string
2004
+ classifyModel?: { model: string; temperature?: number; maxTokens?: number }
2005
+ contextMessages?: number
2006
+ maxTransfers?: number
2007
+ inactivityResetMs?: number
2008
+ }
2009
+
1959
2010
  export function defineAgent(config: AgentConfig): AgentConfig
1960
2011
  export function defineRole(config: RoleConfig): RoleConfig
1961
2012
  export function defineData(config: EntityTypeConfig): EntityTypeConfig
1962
2013
  export function defineEntityType(config: EntityTypeConfig): never
1963
2014
  export function defineTrigger(config: TriggerConfig): TriggerConfig
1964
2015
  export function defineTools(tools: ToolDefinition[]): ToolReference[]
2016
+ export function defineRouter(config: RouterConfig): RouterConfig
1965
2017
  `;
1966
2018
  function generateTypeDeclarations(cwd) {
1967
2019
  const struereDir = join4(cwd, ".struere");
@@ -3700,6 +3752,7 @@ var deployCommand = new Command7("deploy").description("Deploy all resources to
3700
3752
  entityTypes: payload.entityTypes,
3701
3753
  roles: payload.roles,
3702
3754
  triggers: payload.triggers,
3755
+ tools: payload.tools,
3703
3756
  organizationId: project.organization.id,
3704
3757
  environment: "production"
3705
3758
  });
@@ -7918,7 +7971,7 @@ import { Command as Command19 } from "commander";
7918
7971
  import chalk21 from "chalk";
7919
7972
  import ora15 from "ora";
7920
7973
  init_convex();
7921
- var compilePromptCommand = new Command19("compile-prompt").description("Compile and preview an agent's system prompt after template processing").argument("<agent-slug>", "Agent slug to compile prompt for").option("--env <env>", "Environment: development | production", "development").option("--message <msg>", "Sample message for template context").option("--channel <channel>", "Sample channel (whatsapp, widget, api, dashboard)").option("--param <key=value...>", "Custom thread param (repeatable)", (val, acc) => {
7974
+ var compilePromptCommand = new Command19("compile-prompt").description("Compile and preview an agent's system prompt after template processing").argument("<agent-slug>", "Agent slug to compile prompt for").option("--env <env>", "Environment: development | production | eval", "development").option("--message <msg>", "Sample message for template context").option("--channel <channel>", "Sample channel (whatsapp, widget, api, dashboard)").option("--param <key=value...>", "Custom thread param (repeatable)", (val, acc) => {
7922
7975
  acc.push(val);
7923
7976
  return acc;
7924
7977
  }, []).option("--json", "Output full JSON (raw + compiled + context)").option("--raw", "Show raw uncompiled template instead of compiled").action(async (agentSlug, options) => {
@@ -8710,7 +8763,7 @@ whatsappCommand.command("set-agent <connection> <agent-slug>").description("Assi
8710
8763
  // package.json
8711
8764
  var package_default = {
8712
8765
  name: "struere",
8713
- version: "0.12.6",
8766
+ version: "0.12.7",
8714
8767
  description: "Build, test, and deploy AI agents",
8715
8768
  keywords: [
8716
8769
  "ai",
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,eAAO,MAAM,aAAa,SAsUtB,CAAA"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,eAAO,MAAM,aAAa,SAuUtB,CAAA"}
package/dist/cli/index.js CHANGED
@@ -1735,11 +1735,32 @@ function defineTools(tools) {
1735
1735
  })
1736
1736
  }
1737
1737
 
1738
+ function defineRouter(config) {
1739
+ const VALID_OPERATORS = ['eq', 'neq', 'in', 'contains', 'regex', 'gt', 'lt', 'exists']
1740
+ if (!config.name) throw new Error('Router name is required')
1741
+ if (!config.slug) throw new Error('Router slug is required')
1742
+ if (!config.agents || config.agents.length === 0) throw new Error('Router must have at least one agent')
1743
+ var agentSlugs = new Set(config.agents.map(function(a) { return a.slug }))
1744
+ if (!agentSlugs.has(config.fallback)) throw new Error('Router fallback "' + config.fallback + '" must reference an agent slug in the agents array')
1745
+ if (config.mode === 'rules') {
1746
+ if (!config.rules || config.rules.length === 0) throw new Error('Router with mode "rules" must have at least one rule')
1747
+ for (var rule of config.rules) {
1748
+ if (!rule.conditions || rule.conditions.length === 0) throw new Error('Each router rule must have at least one condition')
1749
+ if (!agentSlugs.has(rule.route)) throw new Error('Router rule route "' + rule.route + '" must reference an agent slug in the agents array')
1750
+ for (var condition of rule.conditions) {
1751
+ if (!condition.field) throw new Error('Router rule condition field is required')
1752
+ if (!VALID_OPERATORS.includes(condition.operator)) throw new Error('Router rule condition operator must be one of: ' + VALID_OPERATORS.join(', '))
1753
+ }
1754
+ }
1755
+ }
1756
+ return config
1757
+ }
1758
+
1738
1759
  function defineEntityType() {
1739
1760
  throw new Error('defineEntityType has been renamed to defineData. Please update your imports: import { defineData } from "struere"')
1740
1761
  }
1741
1762
 
1742
- export { defineAgent, defineRole, defineData, defineEntityType, defineTrigger, defineTools }
1763
+ export { defineAgent, defineRole, defineData, defineEntityType, defineTrigger, defineTools, defineRouter }
1743
1764
  `;
1744
1765
  function registerStruerePlugin() {
1745
1766
  if (registered)
@@ -1956,12 +1977,43 @@ export interface TriggerConfig {
1956
1977
  }
1957
1978
  }
1958
1979
 
1980
+ export interface RouterAgentRef {
1981
+ slug: string
1982
+ description: string
1983
+ }
1984
+
1985
+ export interface RouterRuleCondition {
1986
+ field: string
1987
+ operator: 'eq' | 'neq' | 'in' | 'contains' | 'regex' | 'gt' | 'lt' | 'exists'
1988
+ value?: unknown
1989
+ }
1990
+
1991
+ export interface RouterRule {
1992
+ conditions: RouterRuleCondition[]
1993
+ route: string
1994
+ }
1995
+
1996
+ export interface RouterConfig {
1997
+ name: string
1998
+ slug: string
1999
+ description?: string
2000
+ mode: 'rules' | 'classify'
2001
+ agents: RouterAgentRef[]
2002
+ rules?: RouterRule[]
2003
+ fallback: string
2004
+ classifyModel?: { model: string; temperature?: number; maxTokens?: number }
2005
+ contextMessages?: number
2006
+ maxTransfers?: number
2007
+ inactivityResetMs?: number
2008
+ }
2009
+
1959
2010
  export function defineAgent(config: AgentConfig): AgentConfig
1960
2011
  export function defineRole(config: RoleConfig): RoleConfig
1961
2012
  export function defineData(config: EntityTypeConfig): EntityTypeConfig
1962
2013
  export function defineEntityType(config: EntityTypeConfig): never
1963
2014
  export function defineTrigger(config: TriggerConfig): TriggerConfig
1964
2015
  export function defineTools(tools: ToolDefinition[]): ToolReference[]
2016
+ export function defineRouter(config: RouterConfig): RouterConfig
1965
2017
  `;
1966
2018
  function generateTypeDeclarations(cwd) {
1967
2019
  const struereDir = join4(cwd, ".struere");
@@ -3700,6 +3752,7 @@ var deployCommand = new Command7("deploy").description("Deploy all resources to
3700
3752
  entityTypes: payload.entityTypes,
3701
3753
  roles: payload.roles,
3702
3754
  triggers: payload.triggers,
3755
+ tools: payload.tools,
3703
3756
  organizationId: project.organization.id,
3704
3757
  environment: "production"
3705
3758
  });
@@ -7918,7 +7971,7 @@ import { Command as Command19 } from "commander";
7918
7971
  import chalk21 from "chalk";
7919
7972
  import ora15 from "ora";
7920
7973
  init_convex();
7921
- var compilePromptCommand = new Command19("compile-prompt").description("Compile and preview an agent's system prompt after template processing").argument("<agent-slug>", "Agent slug to compile prompt for").option("--env <env>", "Environment: development | production", "development").option("--message <msg>", "Sample message for template context").option("--channel <channel>", "Sample channel (whatsapp, widget, api, dashboard)").option("--param <key=value...>", "Custom thread param (repeatable)", (val, acc) => {
7974
+ var compilePromptCommand = new Command19("compile-prompt").description("Compile and preview an agent's system prompt after template processing").argument("<agent-slug>", "Agent slug to compile prompt for").option("--env <env>", "Environment: development | production | eval", "development").option("--message <msg>", "Sample message for template context").option("--channel <channel>", "Sample channel (whatsapp, widget, api, dashboard)").option("--param <key=value...>", "Custom thread param (repeatable)", (val, acc) => {
7922
7975
  acc.push(val);
7923
7976
  return acc;
7924
7977
  }, []).option("--json", "Output full JSON (raw + compiled + context)").option("--raw", "Show raw uncompiled template instead of compiled").action(async (agentSlug, options) => {
@@ -8710,7 +8763,7 @@ whatsappCommand.command("set-agent <connection> <agent-slug>").description("Assi
8710
8763
  // package.json
8711
8764
  var package_default = {
8712
8765
  name: "struere",
8713
- version: "0.12.6",
8766
+ version: "0.12.7",
8714
8767
  description: "Build, test, and deploy AI agents",
8715
8768
  keywords: [
8716
8769
  "ai",
@@ -1,4 +1,4 @@
1
- export declare const VIRTUAL_MODULE_SOURCE = "\nfunction defineAgent(config) {\n if (!config.name) throw new Error('Agent name is required')\n if (!config.version) throw new Error('Agent version is required')\n if (!config.systemPrompt) throw new Error('System prompt is required')\n return {\n model: {\n model: 'openai/gpt-5-mini',\n temperature: 0.7,\n maxTokens: 4096,\n },\n ...config,\n }\n}\n\nfunction defineRole(config) {\n if (!config.name) throw new Error('Role name is required')\n if (!config.policies || config.policies.length === 0) throw new Error('Role must have at least one policy')\n for (const policy of config.policies) {\n if (!policy.resource) throw new Error('Policy resource is required')\n if (!policy.actions || policy.actions.length === 0) throw new Error('Policy must have at least one action')\n if (!policy.effect) throw new Error('Policy effect is required')\n }\n return {\n ...config,\n scopeRules: config.scopeRules || [],\n fieldMasks: config.fieldMasks || [],\n }\n}\n\nfunction validateObjectProperties(schema, path) {\n if (schema.type === 'object' && !schema.properties) {\n throw new Error('Schema field \"' + path + '\" has type \"object\" but is missing \"properties\". All object fields must declare their properties.')\n }\n if (schema.properties) {\n for (const [key, value] of Object.entries(schema.properties)) {\n validateObjectProperties(value, path ? path + '.' + key : key)\n }\n }\n if (schema.items) {\n validateObjectProperties(schema.items, path + '[]')\n }\n}\n\nfunction defineData(config) {\n if (!config.name) throw new Error('Data type name is required')\n if (!config.slug) throw new Error('Data type slug is required')\n if (!config.schema) throw new Error('Data type schema is required')\n if (config.schema.type !== 'object') throw new Error('Data type schema must be an object type')\n if (config.schema.properties) {\n for (const [key, value] of Object.entries(config.schema.properties)) {\n validateObjectProperties(value, key)\n }\n }\n if (config.boundToRole !== undefined && config.boundToRole === '') throw new Error('boundToRole cannot be an empty string')\n if (config.userIdField !== undefined && !config.boundToRole) throw new Error('userIdField requires boundToRole to be set')\n const userIdField = config.boundToRole && !config.userIdField ? 'userId' : config.userIdField\n return {\n ...config,\n searchFields: config.searchFields || [],\n userIdField,\n }\n}\n\nfunction defineTrigger(config) {\n const VALID_ACTIONS = ['created', 'updated', 'deleted']\n if (!config.name) throw new Error('Trigger name is required')\n if (!config.slug) throw new Error('Trigger slug is required')\n if (!config.on) throw new Error('Trigger \"on\" configuration is required')\n if (config.on.schedule) {\n const parts = config.on.schedule.trim().split(/s+/)\n if (parts.length !== 5) throw new Error('Invalid cron expression: expected 5 fields, got ' + parts.length)\n } else {\n if (!config.on.entityType) throw new Error('Trigger entityType is required')\n if (!config.on.action || !VALID_ACTIONS.includes(config.on.action)) throw new Error('Trigger action must be one of: ' + VALID_ACTIONS.join(', '))\n }\n if (!config.actions || config.actions.length === 0) throw new Error('Trigger must have at least one action')\n for (const action of config.actions) {\n if (!action.tool) throw new Error('Trigger action tool is required')\n if (!action.args || typeof action.args !== 'object') throw new Error('Trigger action args must be an object')\n }\n if (config.schedule) {\n if (config.schedule.delay !== undefined && config.schedule.at !== undefined) throw new Error('Trigger schedule cannot have both \"delay\" and \"at\"')\n if (config.schedule.delay !== undefined && typeof config.schedule.delay !== 'number') throw new Error('Trigger schedule.delay must be a number')\n if (config.schedule.at !== undefined && typeof config.schedule.at !== 'string') throw new Error('Trigger schedule.at must be a string')\n }\n if (config.retry) {\n if (config.retry.maxAttempts !== undefined && (typeof config.retry.maxAttempts !== 'number' || config.retry.maxAttempts < 1)) throw new Error('Trigger retry.maxAttempts must be a positive number')\n if (config.retry.backoffMs !== undefined && (typeof config.retry.backoffMs !== 'number' || config.retry.backoffMs < 0)) throw new Error('Trigger retry.backoffMs must be a non-negative number')\n }\n return config\n}\n\nfunction wrapHandler(name, handler) {\n return async (params, context, struere, fetch) => {\n try {\n return await handler(params, context, struere, fetch)\n } catch (error) {\n console.error('Tool \"' + name + '\" execution error:', error)\n throw error\n }\n }\n}\n\nfunction defineTools(tools) {\n return tools.map((tool) => {\n if (!tool.name) throw new Error('Tool name is required')\n if (!tool.description) throw new Error('Tool \"' + tool.name + '\" requires a description')\n if (!tool.parameters) throw new Error('Tool \"' + tool.name + '\" requires parameters definition')\n if (typeof tool.handler !== 'function') throw new Error('Tool \"' + tool.name + '\" requires a handler function')\n return {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n handler: wrapHandler(tool.name, tool.handler),\n _originalHandler: tool.handler,\n templateOnly: tool.templateOnly,\n }\n })\n}\n\nfunction defineEntityType() {\n throw new Error('defineEntityType has been renamed to defineData. Please update your imports: import { defineData } from \"struere\"')\n}\n\nexport { defineAgent, defineRole, defineData, defineEntityType, defineTrigger, defineTools }\n";
1
+ export declare const VIRTUAL_MODULE_SOURCE = "\nfunction defineAgent(config) {\n if (!config.name) throw new Error('Agent name is required')\n if (!config.version) throw new Error('Agent version is required')\n if (!config.systemPrompt) throw new Error('System prompt is required')\n return {\n model: {\n model: 'openai/gpt-5-mini',\n temperature: 0.7,\n maxTokens: 4096,\n },\n ...config,\n }\n}\n\nfunction defineRole(config) {\n if (!config.name) throw new Error('Role name is required')\n if (!config.policies || config.policies.length === 0) throw new Error('Role must have at least one policy')\n for (const policy of config.policies) {\n if (!policy.resource) throw new Error('Policy resource is required')\n if (!policy.actions || policy.actions.length === 0) throw new Error('Policy must have at least one action')\n if (!policy.effect) throw new Error('Policy effect is required')\n }\n return {\n ...config,\n scopeRules: config.scopeRules || [],\n fieldMasks: config.fieldMasks || [],\n }\n}\n\nfunction validateObjectProperties(schema, path) {\n if (schema.type === 'object' && !schema.properties) {\n throw new Error('Schema field \"' + path + '\" has type \"object\" but is missing \"properties\". All object fields must declare their properties.')\n }\n if (schema.properties) {\n for (const [key, value] of Object.entries(schema.properties)) {\n validateObjectProperties(value, path ? path + '.' + key : key)\n }\n }\n if (schema.items) {\n validateObjectProperties(schema.items, path + '[]')\n }\n}\n\nfunction defineData(config) {\n if (!config.name) throw new Error('Data type name is required')\n if (!config.slug) throw new Error('Data type slug is required')\n if (!config.schema) throw new Error('Data type schema is required')\n if (config.schema.type !== 'object') throw new Error('Data type schema must be an object type')\n if (config.schema.properties) {\n for (const [key, value] of Object.entries(config.schema.properties)) {\n validateObjectProperties(value, key)\n }\n }\n if (config.boundToRole !== undefined && config.boundToRole === '') throw new Error('boundToRole cannot be an empty string')\n if (config.userIdField !== undefined && !config.boundToRole) throw new Error('userIdField requires boundToRole to be set')\n const userIdField = config.boundToRole && !config.userIdField ? 'userId' : config.userIdField\n return {\n ...config,\n searchFields: config.searchFields || [],\n userIdField,\n }\n}\n\nfunction defineTrigger(config) {\n const VALID_ACTIONS = ['created', 'updated', 'deleted']\n if (!config.name) throw new Error('Trigger name is required')\n if (!config.slug) throw new Error('Trigger slug is required')\n if (!config.on) throw new Error('Trigger \"on\" configuration is required')\n if (config.on.schedule) {\n const parts = config.on.schedule.trim().split(/s+/)\n if (parts.length !== 5) throw new Error('Invalid cron expression: expected 5 fields, got ' + parts.length)\n } else {\n if (!config.on.entityType) throw new Error('Trigger entityType is required')\n if (!config.on.action || !VALID_ACTIONS.includes(config.on.action)) throw new Error('Trigger action must be one of: ' + VALID_ACTIONS.join(', '))\n }\n if (!config.actions || config.actions.length === 0) throw new Error('Trigger must have at least one action')\n for (const action of config.actions) {\n if (!action.tool) throw new Error('Trigger action tool is required')\n if (!action.args || typeof action.args !== 'object') throw new Error('Trigger action args must be an object')\n }\n if (config.schedule) {\n if (config.schedule.delay !== undefined && config.schedule.at !== undefined) throw new Error('Trigger schedule cannot have both \"delay\" and \"at\"')\n if (config.schedule.delay !== undefined && typeof config.schedule.delay !== 'number') throw new Error('Trigger schedule.delay must be a number')\n if (config.schedule.at !== undefined && typeof config.schedule.at !== 'string') throw new Error('Trigger schedule.at must be a string')\n }\n if (config.retry) {\n if (config.retry.maxAttempts !== undefined && (typeof config.retry.maxAttempts !== 'number' || config.retry.maxAttempts < 1)) throw new Error('Trigger retry.maxAttempts must be a positive number')\n if (config.retry.backoffMs !== undefined && (typeof config.retry.backoffMs !== 'number' || config.retry.backoffMs < 0)) throw new Error('Trigger retry.backoffMs must be a non-negative number')\n }\n return config\n}\n\nfunction wrapHandler(name, handler) {\n return async (params, context, struere, fetch) => {\n try {\n return await handler(params, context, struere, fetch)\n } catch (error) {\n console.error('Tool \"' + name + '\" execution error:', error)\n throw error\n }\n }\n}\n\nfunction defineTools(tools) {\n return tools.map((tool) => {\n if (!tool.name) throw new Error('Tool name is required')\n if (!tool.description) throw new Error('Tool \"' + tool.name + '\" requires a description')\n if (!tool.parameters) throw new Error('Tool \"' + tool.name + '\" requires parameters definition')\n if (typeof tool.handler !== 'function') throw new Error('Tool \"' + tool.name + '\" requires a handler function')\n return {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n handler: wrapHandler(tool.name, tool.handler),\n _originalHandler: tool.handler,\n templateOnly: tool.templateOnly,\n }\n })\n}\n\nfunction defineRouter(config) {\n const VALID_OPERATORS = ['eq', 'neq', 'in', 'contains', 'regex', 'gt', 'lt', 'exists']\n if (!config.name) throw new Error('Router name is required')\n if (!config.slug) throw new Error('Router slug is required')\n if (!config.agents || config.agents.length === 0) throw new Error('Router must have at least one agent')\n var agentSlugs = new Set(config.agents.map(function(a) { return a.slug }))\n if (!agentSlugs.has(config.fallback)) throw new Error('Router fallback \"' + config.fallback + '\" must reference an agent slug in the agents array')\n if (config.mode === 'rules') {\n if (!config.rules || config.rules.length === 0) throw new Error('Router with mode \"rules\" must have at least one rule')\n for (var rule of config.rules) {\n if (!rule.conditions || rule.conditions.length === 0) throw new Error('Each router rule must have at least one condition')\n if (!agentSlugs.has(rule.route)) throw new Error('Router rule route \"' + rule.route + '\" must reference an agent slug in the agents array')\n for (var condition of rule.conditions) {\n if (!condition.field) throw new Error('Router rule condition field is required')\n if (!VALID_OPERATORS.includes(condition.operator)) throw new Error('Router rule condition operator must be one of: ' + VALID_OPERATORS.join(', '))\n }\n }\n }\n return config\n}\n\nfunction defineEntityType() {\n throw new Error('defineEntityType has been renamed to defineData. Please update your imports: import { defineData } from \"struere\"')\n}\n\nexport { defineAgent, defineRole, defineData, defineEntityType, defineTrigger, defineTools, defineRouter }\n";
2
2
  export declare function registerStruerePlugin(): void;
3
3
  export declare function generateTypeDeclarations(cwd: string): void;
4
4
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/plugin.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,+qLA8HjC,CAAA;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAkB5C;AA+MD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkB1D"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/plugin.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,0jOAmJjC,CAAA;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAkB5C;AA8OD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAkB1D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "struere",
3
- "version": "0.12.6",
3
+ "version": "0.12.7",
4
4
  "description": "Build, test, and deploy AI agents",
5
5
  "keywords": [
6
6
  "ai",