@inkeep/agents-cli 0.21.1 → 0.22.1

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.
Files changed (2) hide show
  1. package/dist/index.js +402 -132
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -1620,7 +1620,6 @@ var init_schema = __esm({
1620
1620
  ...uiProperties,
1621
1621
  models: text("models", { mode: "json" }).$type(),
1622
1622
  stopWhen: text("stop_when", { mode: "json" }).$type(),
1623
- sandboxConfig: text("sandbox_config", { mode: "json" }).$type(),
1624
1623
  ...timestamps
1625
1624
  },
1626
1625
  (table) => [primaryKey({ columns: [table.tenantId, table.id] })]
@@ -2452,7 +2451,7 @@ var init_utility = __esm({
2452
2451
  });
2453
2452
 
2454
2453
  // ../packages/agents-core/src/validation/schemas.ts
2455
- var StopWhenSchema, AgentStopWhenSchema, SubAgentStopWhenSchema, MIN_ID_LENGTH, MAX_ID_LENGTH, URL_SAFE_ID_PATTERN, resourceIdSchema, ModelSettingsSchema, ModelSchema, ProjectModelSchema, SandboxConfigSchema, FunctionToolConfigSchema, createApiSchema, createApiInsertSchema, createApiUpdateSchema, createAgentScopedApiSchema, createAgentScopedApiInsertSchema, createAgentScopedApiUpdateSchema, SubAgentSelectSchema, SubAgentInsertSchema, SubAgentUpdateSchema, SubAgentApiSelectSchema, SubAgentApiInsertSchema, SubAgentApiUpdateSchema, SubAgentRelationSelectSchema, SubAgentRelationInsertSchema, SubAgentRelationUpdateSchema, SubAgentRelationApiSelectSchema, SubAgentRelationApiInsertSchema, SubAgentRelationApiUpdateSchema, SubAgentRelationQuerySchema, ExternalSubAgentRelationInsertSchema, ExternalSubAgentRelationApiInsertSchema, AgentSelectSchema, AgentInsertSchema, AgentUpdateSchema, AgentApiSelectSchema, AgentApiInsertSchema, AgentApiUpdateSchema, TaskSelectSchema, TaskInsertSchema, TaskUpdateSchema, TaskApiSelectSchema, TaskApiInsertSchema, TaskApiUpdateSchema, TaskRelationSelectSchema, TaskRelationInsertSchema, TaskRelationUpdateSchema, TaskRelationApiSelectSchema, TaskRelationApiInsertSchema, TaskRelationApiUpdateSchema, imageUrlSchema, McpTransportConfigSchema, ToolStatusSchema, McpToolDefinitionSchema, ToolSelectSchema, ToolInsertSchema, ConversationSelectSchema, ConversationInsertSchema, ConversationUpdateSchema, ConversationApiSelectSchema, ConversationApiInsertSchema, ConversationApiUpdateSchema, MessageSelectSchema, MessageInsertSchema, MessageUpdateSchema, MessageApiSelectSchema, MessageApiInsertSchema, MessageApiUpdateSchema, ContextCacheSelectSchema, ContextCacheInsertSchema, ContextCacheUpdateSchema, ContextCacheApiSelectSchema, ContextCacheApiInsertSchema, ContextCacheApiUpdateSchema, DataComponentSelectSchema, DataComponentInsertSchema, DataComponentBaseSchema, DataComponentUpdateSchema, DataComponentApiSelectSchema, DataComponentApiInsertSchema, DataComponentApiUpdateSchema, SubAgentDataComponentSelectSchema, SubAgentDataComponentInsertSchema, SubAgentDataComponentUpdateSchema, SubAgentDataComponentApiSelectSchema, SubAgentDataComponentApiInsertSchema, SubAgentDataComponentApiUpdateSchema, ArtifactComponentSelectSchema, ArtifactComponentInsertSchema, ArtifactComponentUpdateSchema, ArtifactComponentApiSelectSchema, ArtifactComponentApiInsertSchema, ArtifactComponentApiUpdateSchema, SubAgentArtifactComponentSelectSchema, SubAgentArtifactComponentInsertSchema, SubAgentArtifactComponentUpdateSchema, SubAgentArtifactComponentApiSelectSchema, SubAgentArtifactComponentApiInsertSchema, SubAgentArtifactComponentApiUpdateSchema, ExternalAgentSelectSchema, ExternalAgentInsertSchema, ExternalAgentUpdateSchema, ExternalAgentApiSelectSchema, ExternalAgentApiInsertSchema, ExternalAgentApiUpdateSchema, AllAgentSchema, ApiKeySelectSchema, ApiKeyInsertSchema, ApiKeyUpdateSchema, ApiKeyApiSelectSchema, ApiKeyApiCreationResponseSchema, ApiKeyApiInsertSchema, ApiKeyApiUpdateSchema, CredentialReferenceSelectSchema, CredentialReferenceInsertSchema, CredentialReferenceUpdateSchema, CredentialReferenceApiSelectSchema, CredentialReferenceApiInsertSchema, CredentialReferenceApiUpdateSchema, McpToolSchema, MCPToolConfigSchema, ToolUpdateSchema, ToolApiSelectSchema, ToolApiInsertSchema, ToolApiUpdateSchema, FunctionToolSelectSchema, FunctionToolInsertSchema, FunctionToolUpdateSchema, FunctionToolApiSelectSchema, FunctionToolApiInsertSchema, FunctionToolApiUpdateSchema, FunctionSelectSchema, FunctionInsertSchema, FunctionUpdateSchema, FunctionApiSelectSchema, FunctionApiInsertSchema, FunctionApiUpdateSchema, FetchConfigSchema, FetchDefinitionSchema, ContextConfigSelectSchema, ContextConfigInsertSchema, ContextConfigUpdateSchema, ContextConfigApiSelectSchema, ContextConfigApiInsertSchema, ContextConfigApiUpdateSchema, SubAgentToolRelationSelectSchema, SubAgentToolRelationInsertSchema, SubAgentToolRelationUpdateSchema, SubAgentToolRelationApiSelectSchema, SubAgentToolRelationApiInsertSchema, SubAgentToolRelationApiUpdateSchema, LedgerArtifactSelectSchema, LedgerArtifactInsertSchema, LedgerArtifactUpdateSchema, LedgerArtifactApiSelectSchema, LedgerArtifactApiInsertSchema, LedgerArtifactApiUpdateSchema, StatusComponentSchema, StatusUpdateSchema, CanUseItemSchema, FullAgentAgentInsertSchema, AgentWithinContextOfProjectSchema, PaginationSchema, ErrorResponseSchema, ExistsResponseSchema, RemovedResponseSchema, ProjectSelectSchema, ProjectInsertSchema, ProjectUpdateSchema, ProjectApiSelectSchema, ProjectApiInsertSchema, ProjectApiUpdateSchema, FullProjectDefinitionSchema, ProjectResponse, SubAgentResponse, AgentResponse, ToolResponse, ExternalAgentResponse, ContextConfigResponse, ApiKeyResponse, CredentialReferenceResponse, FunctionResponse, FunctionToolResponse, DataComponentResponse, ArtifactComponentResponse, SubAgentRelationResponse, SubAgentToolRelationResponse, ConversationResponse, MessageResponse, ProjectListResponse, SubAgentListResponse, AgentListResponse, ToolListResponse, ExternalAgentListResponse, ContextConfigListResponse, ApiKeyListResponse, CredentialReferenceListResponse, FunctionListResponse, FunctionToolListResponse, DataComponentListResponse, ArtifactComponentListResponse, SubAgentRelationListResponse, SubAgentToolRelationListResponse, ConversationListResponse, MessageListResponse, SubAgentDataComponentResponse, SubAgentArtifactComponentResponse, SubAgentDataComponentListResponse, SubAgentArtifactComponentListResponse, HeadersScopeSchema, TenantId, ProjectId, AgentId, SubAgentId, TenantParamsSchema, TenantIdParamsSchema, TenantProjectParamsSchema, TenantProjectIdParamsSchema, TenantProjectAgentParamsSchema, TenantProjectAgentIdParamsSchema, TenantProjectAgentSubAgentParamsSchema, TenantProjectAgentSubAgentIdParamsSchema, PaginationQueryParamsSchema;
2454
+ var StopWhenSchema, AgentStopWhenSchema, SubAgentStopWhenSchema, MIN_ID_LENGTH, MAX_ID_LENGTH, URL_SAFE_ID_PATTERN, resourceIdSchema, ModelSettingsSchema, ModelSchema, ProjectModelSchema, FunctionToolConfigSchema, createApiSchema, createApiInsertSchema, createApiUpdateSchema, createAgentScopedApiSchema, createAgentScopedApiInsertSchema, createAgentScopedApiUpdateSchema, SubAgentSelectSchema, SubAgentInsertSchema, SubAgentUpdateSchema, SubAgentApiSelectSchema, SubAgentApiInsertSchema, SubAgentApiUpdateSchema, SubAgentRelationSelectSchema, SubAgentRelationInsertSchema, SubAgentRelationUpdateSchema, SubAgentRelationApiSelectSchema, SubAgentRelationApiInsertSchema, SubAgentRelationApiUpdateSchema, SubAgentRelationQuerySchema, ExternalSubAgentRelationInsertSchema, ExternalSubAgentRelationApiInsertSchema, AgentSelectSchema, AgentInsertSchema, AgentUpdateSchema, AgentApiSelectSchema, AgentApiInsertSchema, AgentApiUpdateSchema, TaskSelectSchema, TaskInsertSchema, TaskUpdateSchema, TaskApiSelectSchema, TaskApiInsertSchema, TaskApiUpdateSchema, TaskRelationSelectSchema, TaskRelationInsertSchema, TaskRelationUpdateSchema, TaskRelationApiSelectSchema, TaskRelationApiInsertSchema, TaskRelationApiUpdateSchema, imageUrlSchema, McpTransportConfigSchema, ToolStatusSchema, McpToolDefinitionSchema, ToolSelectSchema, ToolInsertSchema, ConversationSelectSchema, ConversationInsertSchema, ConversationUpdateSchema, ConversationApiSelectSchema, ConversationApiInsertSchema, ConversationApiUpdateSchema, MessageSelectSchema, MessageInsertSchema, MessageUpdateSchema, MessageApiSelectSchema, MessageApiInsertSchema, MessageApiUpdateSchema, ContextCacheSelectSchema, ContextCacheInsertSchema, ContextCacheUpdateSchema, ContextCacheApiSelectSchema, ContextCacheApiInsertSchema, ContextCacheApiUpdateSchema, DataComponentSelectSchema, DataComponentInsertSchema, DataComponentBaseSchema, DataComponentUpdateSchema, DataComponentApiSelectSchema, DataComponentApiInsertSchema, DataComponentApiUpdateSchema, SubAgentDataComponentSelectSchema, SubAgentDataComponentInsertSchema, SubAgentDataComponentUpdateSchema, SubAgentDataComponentApiSelectSchema, SubAgentDataComponentApiInsertSchema, SubAgentDataComponentApiUpdateSchema, ArtifactComponentSelectSchema, ArtifactComponentInsertSchema, ArtifactComponentUpdateSchema, ArtifactComponentApiSelectSchema, ArtifactComponentApiInsertSchema, ArtifactComponentApiUpdateSchema, SubAgentArtifactComponentSelectSchema, SubAgentArtifactComponentInsertSchema, SubAgentArtifactComponentUpdateSchema, SubAgentArtifactComponentApiSelectSchema, SubAgentArtifactComponentApiInsertSchema, SubAgentArtifactComponentApiUpdateSchema, ExternalAgentSelectSchema, ExternalAgentInsertSchema, ExternalAgentUpdateSchema, ExternalAgentApiSelectSchema, ExternalAgentApiInsertSchema, ExternalAgentApiUpdateSchema, AllAgentSchema, ApiKeySelectSchema, ApiKeyInsertSchema, ApiKeyUpdateSchema, ApiKeyApiSelectSchema, ApiKeyApiCreationResponseSchema, ApiKeyApiInsertSchema, ApiKeyApiUpdateSchema, CredentialReferenceSelectSchema, CredentialReferenceInsertSchema, CredentialReferenceUpdateSchema, CredentialReferenceApiSelectSchema, CredentialReferenceApiInsertSchema, CredentialReferenceApiUpdateSchema, McpToolSchema, MCPToolConfigSchema, ToolUpdateSchema, ToolApiSelectSchema, ToolApiInsertSchema, ToolApiUpdateSchema, FunctionToolSelectSchema, FunctionToolInsertSchema, FunctionToolUpdateSchema, FunctionToolApiSelectSchema, FunctionToolApiInsertSchema, FunctionToolApiUpdateSchema, FunctionSelectSchema, FunctionInsertSchema, FunctionUpdateSchema, FunctionApiSelectSchema, FunctionApiInsertSchema, FunctionApiUpdateSchema, FetchConfigSchema, FetchDefinitionSchema, ContextConfigSelectSchema, ContextConfigInsertSchema, ContextConfigUpdateSchema, ContextConfigApiSelectSchema, ContextConfigApiInsertSchema, ContextConfigApiUpdateSchema, SubAgentToolRelationSelectSchema, SubAgentToolRelationInsertSchema, SubAgentToolRelationUpdateSchema, SubAgentToolRelationApiSelectSchema, SubAgentToolRelationApiInsertSchema, SubAgentToolRelationApiUpdateSchema, LedgerArtifactSelectSchema, LedgerArtifactInsertSchema, LedgerArtifactUpdateSchema, LedgerArtifactApiSelectSchema, LedgerArtifactApiInsertSchema, LedgerArtifactApiUpdateSchema, StatusComponentSchema, StatusUpdateSchema, CanUseItemSchema, FullAgentAgentInsertSchema, AgentWithinContextOfProjectSchema, PaginationSchema, ErrorResponseSchema, ExistsResponseSchema, RemovedResponseSchema, ProjectSelectSchema, ProjectInsertSchema, ProjectUpdateSchema, ProjectApiSelectSchema, ProjectApiInsertSchema, ProjectApiUpdateSchema, FullProjectDefinitionSchema, ProjectResponse, SubAgentResponse, AgentResponse, ToolResponse, ExternalAgentResponse, ContextConfigResponse, ApiKeyResponse, CredentialReferenceResponse, FunctionResponse, FunctionToolResponse, DataComponentResponse, ArtifactComponentResponse, SubAgentRelationResponse, SubAgentToolRelationResponse, ConversationResponse, MessageResponse, ProjectListResponse, SubAgentListResponse, AgentListResponse, ToolListResponse, ExternalAgentListResponse, ContextConfigListResponse, ApiKeyListResponse, CredentialReferenceListResponse, FunctionListResponse, FunctionToolListResponse, DataComponentListResponse, ArtifactComponentListResponse, SubAgentRelationListResponse, SubAgentToolRelationListResponse, ConversationListResponse, MessageListResponse, SubAgentDataComponentResponse, SubAgentArtifactComponentResponse, SubAgentDataComponentListResponse, SubAgentArtifactComponentListResponse, HeadersScopeSchema, TenantId, ProjectId, AgentId, SubAgentId, TenantParamsSchema, TenantIdParamsSchema, TenantProjectParamsSchema, TenantProjectIdParamsSchema, TenantProjectAgentParamsSchema, TenantProjectAgentIdParamsSchema, TenantProjectAgentSubAgentParamsSchema, TenantProjectAgentSubAgentIdParamsSchema, PaginationQueryParamsSchema;
2456
2455
  var init_schemas = __esm({
2457
2456
  "../packages/agents-core/src/validation/schemas.ts"() {
2458
2457
  "use strict";
@@ -2494,12 +2493,6 @@ var init_schemas = __esm({
2494
2493
  structuredOutput: ModelSettingsSchema.optional(),
2495
2494
  summarizer: ModelSettingsSchema.optional()
2496
2495
  }).openapi("ProjectModel");
2497
- SandboxConfigSchema = z2.object({
2498
- provider: z2.enum(["vercel", "local"]),
2499
- runtime: z2.enum(["node22", "typescript"]),
2500
- timeout: z2.number().min(1e3).max(3e5).optional(),
2501
- vcpus: z2.number().min(1).max(8).optional()
2502
- }).openapi("SandboxConfig");
2503
2496
  FunctionToolConfigSchema = z2.object({
2504
2497
  name: z2.string(),
2505
2498
  description: z2.string(),
@@ -2519,15 +2512,9 @@ var init_schemas = __esm({
2519
2512
  models: ModelSchema.optional()
2520
2513
  });
2521
2514
  SubAgentUpdateSchema = SubAgentInsertSchema.partial();
2522
- SubAgentApiSelectSchema = createAgentScopedApiSchema(SubAgentSelectSchema).openapi(
2523
- "SubAgent"
2524
- );
2525
- SubAgentApiInsertSchema = createAgentScopedApiInsertSchema(
2526
- SubAgentInsertSchema
2527
- ).openapi("SubAgentCreate");
2528
- SubAgentApiUpdateSchema = createAgentScopedApiUpdateSchema(
2529
- SubAgentUpdateSchema
2530
- ).openapi("SubAgentUpdate");
2515
+ SubAgentApiSelectSchema = createAgentScopedApiSchema(SubAgentSelectSchema).openapi("SubAgent");
2516
+ SubAgentApiInsertSchema = createAgentScopedApiInsertSchema(SubAgentInsertSchema).openapi("SubAgentCreate");
2517
+ SubAgentApiUpdateSchema = createAgentScopedApiUpdateSchema(SubAgentUpdateSchema).openapi("SubAgentUpdate");
2531
2518
  SubAgentRelationSelectSchema = createSelectSchema(subAgentRelations);
2532
2519
  SubAgentRelationInsertSchema = createInsertSchema(subAgentRelations).extend({
2533
2520
  id: resourceIdSchema,
@@ -2596,9 +2583,7 @@ var init_schemas = __esm({
2596
2583
  AgentApiInsertSchema = createApiInsertSchema(AgentInsertSchema).extend({
2597
2584
  id: resourceIdSchema
2598
2585
  }).openapi("AgentCreate");
2599
- AgentApiUpdateSchema = createApiUpdateSchema(AgentUpdateSchema).openapi(
2600
- "AgentUpdate"
2601
- );
2586
+ AgentApiUpdateSchema = createApiUpdateSchema(AgentUpdateSchema).openapi("AgentUpdate");
2602
2587
  TaskSelectSchema = createSelectSchema(tasks);
2603
2588
  TaskInsertSchema = createInsertSchema(tasks).extend({
2604
2589
  id: resourceIdSchema,
@@ -2683,15 +2668,9 @@ var init_schemas = __esm({
2683
2668
  contextConfigId: resourceIdSchema.optional()
2684
2669
  });
2685
2670
  ConversationUpdateSchema = ConversationInsertSchema.partial();
2686
- ConversationApiSelectSchema = createApiSchema(ConversationSelectSchema).openapi(
2687
- "Conversation"
2688
- );
2689
- ConversationApiInsertSchema = createApiInsertSchema(ConversationInsertSchema).openapi(
2690
- "ConversationCreate"
2691
- );
2692
- ConversationApiUpdateSchema = createApiUpdateSchema(ConversationUpdateSchema).openapi(
2693
- "ConversationUpdate"
2694
- );
2671
+ ConversationApiSelectSchema = createApiSchema(ConversationSelectSchema).openapi("Conversation");
2672
+ ConversationApiInsertSchema = createApiInsertSchema(ConversationInsertSchema).openapi("ConversationCreate");
2673
+ ConversationApiUpdateSchema = createApiUpdateSchema(ConversationUpdateSchema).openapi("ConversationUpdate");
2695
2674
  MessageSelectSchema = createSelectSchema(messages);
2696
2675
  MessageInsertSchema = createInsertSchema(messages).extend({
2697
2676
  id: resourceIdSchema,
@@ -2700,12 +2679,8 @@ var init_schemas = __esm({
2700
2679
  });
2701
2680
  MessageUpdateSchema = MessageInsertSchema.partial();
2702
2681
  MessageApiSelectSchema = createApiSchema(MessageSelectSchema).openapi("Message");
2703
- MessageApiInsertSchema = createApiInsertSchema(MessageInsertSchema).openapi(
2704
- "MessageCreate"
2705
- );
2706
- MessageApiUpdateSchema = createApiUpdateSchema(MessageUpdateSchema).openapi(
2707
- "MessageUpdate"
2708
- );
2682
+ MessageApiInsertSchema = createApiInsertSchema(MessageInsertSchema).openapi("MessageCreate");
2683
+ MessageApiUpdateSchema = createApiUpdateSchema(MessageUpdateSchema).openapi("MessageUpdate");
2709
2684
  ContextCacheSelectSchema = createSelectSchema(contextCache);
2710
2685
  ContextCacheInsertSchema = createInsertSchema(contextCache);
2711
2686
  ContextCacheUpdateSchema = ContextCacheInsertSchema.partial();
@@ -2721,15 +2696,9 @@ var init_schemas = __esm({
2721
2696
  updatedAt: true
2722
2697
  });
2723
2698
  DataComponentUpdateSchema = DataComponentInsertSchema.partial();
2724
- DataComponentApiSelectSchema = createApiSchema(
2725
- DataComponentSelectSchema
2726
- ).openapi("DataComponent");
2727
- DataComponentApiInsertSchema = createApiInsertSchema(
2728
- DataComponentInsertSchema
2729
- ).openapi("DataComponentCreate");
2730
- DataComponentApiUpdateSchema = createApiUpdateSchema(
2731
- DataComponentUpdateSchema
2732
- ).openapi("DataComponentUpdate");
2699
+ DataComponentApiSelectSchema = createApiSchema(DataComponentSelectSchema).openapi("DataComponent");
2700
+ DataComponentApiInsertSchema = createApiInsertSchema(DataComponentInsertSchema).openapi("DataComponentCreate");
2701
+ DataComponentApiUpdateSchema = createApiUpdateSchema(DataComponentUpdateSchema).openapi("DataComponentUpdate");
2733
2702
  SubAgentDataComponentSelectSchema = createSelectSchema(subAgentDataComponents);
2734
2703
  SubAgentDataComponentInsertSchema = createInsertSchema(subAgentDataComponents);
2735
2704
  SubAgentDataComponentUpdateSchema = SubAgentDataComponentInsertSchema.partial();
@@ -2791,15 +2760,9 @@ var init_schemas = __esm({
2791
2760
  id: resourceIdSchema
2792
2761
  });
2793
2762
  ExternalAgentUpdateSchema = ExternalAgentInsertSchema.partial();
2794
- ExternalAgentApiSelectSchema = createAgentScopedApiSchema(
2795
- ExternalAgentSelectSchema
2796
- ).openapi("ExternalAgent");
2797
- ExternalAgentApiInsertSchema = createAgentScopedApiInsertSchema(
2798
- ExternalAgentInsertSchema
2799
- ).openapi("ExternalAgentCreate");
2800
- ExternalAgentApiUpdateSchema = createAgentScopedApiUpdateSchema(
2801
- ExternalAgentUpdateSchema
2802
- ).openapi("ExternalAgentUpdate");
2763
+ ExternalAgentApiSelectSchema = createAgentScopedApiSchema(ExternalAgentSelectSchema).openapi("ExternalAgent");
2764
+ ExternalAgentApiInsertSchema = createAgentScopedApiInsertSchema(ExternalAgentInsertSchema).openapi("ExternalAgentCreate");
2765
+ ExternalAgentApiUpdateSchema = createAgentScopedApiUpdateSchema(ExternalAgentUpdateSchema).openapi("ExternalAgentUpdate");
2803
2766
  AllAgentSchema = z2.discriminatedUnion("type", [
2804
2767
  SubAgentApiSelectSchema.extend({ type: z2.literal("internal") }),
2805
2768
  ExternalAgentApiSelectSchema.extend({ type: z2.literal("external") })
@@ -2862,9 +2825,7 @@ var init_schemas = __esm({
2862
2825
  retrievalParams: z2.record(z2.string(), z2.unknown()).nullish()
2863
2826
  });
2864
2827
  CredentialReferenceUpdateSchema = CredentialReferenceInsertSchema.partial();
2865
- CredentialReferenceApiSelectSchema = createApiSchema(
2866
- CredentialReferenceSelectSchema
2867
- ).extend({
2828
+ CredentialReferenceApiSelectSchema = createApiSchema(CredentialReferenceSelectSchema).extend({
2868
2829
  type: z2.enum(CredentialStoreType),
2869
2830
  tools: z2.array(ToolSelectSchema).optional()
2870
2831
  }).openapi("CredentialReference");
@@ -2914,27 +2875,17 @@ var init_schemas = __esm({
2914
2875
  id: resourceIdSchema
2915
2876
  });
2916
2877
  FunctionToolUpdateSchema = FunctionToolInsertSchema.partial();
2917
- FunctionToolApiSelectSchema = createApiSchema(FunctionToolSelectSchema).openapi(
2918
- "FunctionTool"
2919
- );
2920
- FunctionToolApiInsertSchema = createAgentScopedApiInsertSchema(
2921
- FunctionToolInsertSchema
2922
- ).openapi("FunctionToolCreate");
2923
- FunctionToolApiUpdateSchema = createApiUpdateSchema(
2924
- FunctionToolUpdateSchema
2925
- ).openapi("FunctionToolUpdate");
2878
+ FunctionToolApiSelectSchema = createApiSchema(FunctionToolSelectSchema).openapi("FunctionTool");
2879
+ FunctionToolApiInsertSchema = createAgentScopedApiInsertSchema(FunctionToolInsertSchema).openapi("FunctionToolCreate");
2880
+ FunctionToolApiUpdateSchema = createApiUpdateSchema(FunctionToolUpdateSchema).openapi("FunctionToolUpdate");
2926
2881
  FunctionSelectSchema = createSelectSchema(functions);
2927
2882
  FunctionInsertSchema = createInsertSchema(functions).extend({
2928
2883
  id: resourceIdSchema
2929
2884
  });
2930
2885
  FunctionUpdateSchema = FunctionInsertSchema.partial();
2931
2886
  FunctionApiSelectSchema = createApiSchema(FunctionSelectSchema).openapi("Function");
2932
- FunctionApiInsertSchema = createApiInsertSchema(FunctionInsertSchema).openapi(
2933
- "FunctionCreate"
2934
- );
2935
- FunctionApiUpdateSchema = createApiUpdateSchema(FunctionUpdateSchema).openapi(
2936
- "FunctionUpdate"
2937
- );
2887
+ FunctionApiInsertSchema = createApiInsertSchema(FunctionInsertSchema).openapi("FunctionCreate");
2888
+ FunctionApiUpdateSchema = createApiUpdateSchema(FunctionUpdateSchema).openapi("FunctionUpdate");
2938
2889
  FetchConfigSchema = z2.object({
2939
2890
  url: z2.string().min(1, "URL is required"),
2940
2891
  method: z2.enum(["GET", "POST", "PUT", "DELETE", "PATCH"]).optional().default("GET"),
@@ -3082,8 +3033,7 @@ var init_schemas = __esm({
3082
3033
  ProjectSelectSchema = createSelectSchema(projects);
3083
3034
  ProjectInsertSchema = createInsertSchema(projects).extend({
3084
3035
  models: ProjectModelSchema,
3085
- stopWhen: StopWhenSchema.optional(),
3086
- sandboxConfig: SandboxConfigSchema.optional()
3036
+ stopWhen: StopWhenSchema.optional()
3087
3037
  }).omit({
3088
3038
  createdAt: true,
3089
3039
  updatedAt: true
@@ -234088,10 +234038,10 @@ function maskSensitiveConfig(config) {
234088
234038
  if (!config) return config;
234089
234039
  const masked = { ...config };
234090
234040
  if (masked.agentsManageApiKey) {
234091
- masked.agentsManageApiKey = "***" + masked.agentsManageApiKey.slice(-4);
234041
+ masked.agentsManageApiKey = `***${masked.agentsManageApiKey.slice(-4)}`;
234092
234042
  }
234093
234043
  if (masked.agentsRunApiKey) {
234094
- masked.agentsRunApiKey = "***" + masked.agentsRunApiKey.slice(-4);
234044
+ masked.agentsRunApiKey = `***${masked.agentsRunApiKey.slice(-4)}`;
234095
234045
  }
234096
234046
  return masked;
234097
234047
  }
@@ -234535,6 +234485,9 @@ function isJsonSchemaPath(path3) {
234535
234485
  if (path3.includes("dataComponents") && path3.endsWith("props")) {
234536
234486
  return true;
234537
234487
  }
234488
+ if (path3.includes("statusComponents") && path3.endsWith("detailsSchema")) {
234489
+ return true;
234490
+ }
234538
234491
  return false;
234539
234492
  }
234540
234493
  function updateTracker(tracker, placeholder, value) {
@@ -234613,7 +234566,7 @@ function restorePlaceholders(generatedCode, replacements) {
234613
234566
  const sortedPlaceholders = Object.keys(replacements).sort((a, b2) => b2.length - a.length);
234614
234567
  for (const placeholder of sortedPlaceholders) {
234615
234568
  let originalValue = replacements[placeholder];
234616
- originalValue = originalValue.replace(/`/g, "\\`");
234569
+ originalValue = originalValue.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
234617
234570
  const escapedPlaceholder = placeholder.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
234618
234571
  const regex = new RegExp(escapedPlaceholder, "g");
234619
234572
  restoredCode = restoredCode.replace(regex, originalValue);
@@ -234653,6 +234606,7 @@ __export(pull_llm_generate_exports, {
234653
234606
  generateDataComponentFile: () => generateDataComponentFile,
234654
234607
  generateEnvironmentFiles: () => generateEnvironmentFiles,
234655
234608
  generateIndexFile: () => generateIndexFile,
234609
+ generateStatusComponentFile: () => generateStatusComponentFile,
234656
234610
  generateTextWithPlaceholders: () => generateTextWithPlaceholders,
234657
234611
  generateToolFile: () => generateToolFile,
234658
234612
  generateTypeScriptFileWithLLM: () => generateTypeScriptFileWithLLM,
@@ -234818,22 +234772,48 @@ ${NAMING_CONVENTION_RULES}
234818
234772
  ${IMPORT_INSTRUCTIONS}
234819
234773
 
234820
234774
  REQUIREMENTS:
234821
- 1. Import { agent, subAgent } from '@inkeep/agents-sdk'
234775
+ 1. IMPORTS (CRITICAL):
234776
+ - ALWAYS import { agent, subAgent } from '@inkeep/agents-sdk'
234777
+ - ALWAYS import { z } from 'zod' when using ANY Zod schemas (responseSchema, headersSchema, etc.)
234778
+ - ALWAYS import { contextConfig, fetchDefinition, headers } from '@inkeep/agents-core' when agent has contextConfig
234779
+ - Import status components from '../status-components/' when needed
234822
234780
  2. Define each agent using the agent() function following the type definitions provided above
234823
234781
  3. Create the agent using agent() with proper structure
234824
234782
  - IMPORTANT: If description is null, undefined, or empty string, omit the description field entirely
234825
- 4. CRITICAL: For multi-line strings (especially prompts), ALWAYS use template literals with backticks:
234826
- - Single-line strings: use regular quotes 'short string'
234827
- - Multi-line strings: MUST use template literals starting and ending with backticks
234783
+ 4. CRITICAL: Template Literals vs Raw Code:
234784
+ - For STRING VALUES: ALWAYS use template literals with backticks: \`string content\`
234785
+ - This includes: prompt, description, query, url, method, body, defaultValue, etc.
234786
+ - This prevents TypeScript syntax errors with apostrophes (user's, don't, etc.)
234828
234787
  - IMPORTANT: ANY placeholder that starts with < and ends with > MUST be wrapped in template literals (backticks)
234829
- - Placeholders contain multi-line content and require template literals
234830
- - This prevents TypeScript syntax errors with newlines and special characters
234831
- - you must import { z } from 'zod' if you are using zod schemas in the agent file.
234832
- - you must import { headers } from '@inkeep/agents-core' and use it to create the headers schema if you are using headers in a contextConfig.
234788
+ - For object keys: use quotes only for keys with hyphens ('Content-Type'), omit for simple identifiers (Authorization)
234789
+
234790
+ EXCEPTION - Schema Fields (NO template literals):
234791
+ - headersSchema: z.object({ ... }) (raw Zod code, NOT a string)
234792
+ - responseSchema: z.object({ ... }) (raw Zod code, NOT a string)
234793
+ - These are TypeScript expressions, not string values
234794
+
234795
+ Examples:
234796
+ \u2705 prompt: \`You are a helpful assistant.\` (string value, use backticks)
234797
+ \u2705 query: \`query GetData { field }\` (string value, use backticks)
234798
+ \u2705 responseSchema: z.object({ name: z.string() }) (Zod code, NO backticks)
234799
+ \u2705 headersSchema: z.object({ 'inkeep_api_key': z.string() }) (Zod code, NO backticks)
234800
+ \u274C responseSchema: \`z.object({ name: z.string() })\` (WRONG - don't wrap Zod in backticks)
234801
+
234833
234802
  - convert template literals to use the appropriate headers schema or context config toTemplate method. a template literal is a substring that starts with {{ and ends with }}.
234834
234803
  - if you see a template literal with {{headers.}}, convert it to use the headers schema toTemplate method.
234835
234804
  - if you see a template literal with {{contextVariableKey.field_name}}, convert it to use the context config toTemplate method.
234836
- 6. If you are writing zod schemas make them clean. For example if you see z.union([z.string(), z.null()]) write it as z.string().nullable()
234805
+ 5. For contextConfig (CRITICAL):
234806
+ - NEVER use plain objects for contextConfig
234807
+ - ALWAYS use helper functions: headers(), fetchDefinition(), contextConfig()
234808
+ - Create separate const variables for each helper before the agent definition
234809
+ - Pattern: const myHeaders = headers({ schema: z.object({ api_key: z.string() }) });
234810
+ - Pattern: const myFetch = fetchDefinition({ id: '...', fetchConfig: {...}, responseSchema: z.object({...}) });
234811
+ - Pattern: const myContext = contextConfig({ headers: myHeaders, contextVariables: { data: myFetch } });
234812
+ - Then use: export const myAgent = agent({ contextConfig: myContext });
234813
+ - Use myHeaders.toTemplate('key_name') for header interpolation in fetch configs
234814
+ - Use myContext.toTemplate('variable.field') for context variable interpolation
234815
+
234816
+ 7. If you are writing zod schemas make them clean. For example if you see z.union([z.string(), z.null()]) write it as z.string().nullable()
234837
234817
 
234838
234818
  PLACEHOLDER HANDLING EXAMPLES:
234839
234819
  // CORRECT - Placeholder wrapped in template literals:
@@ -234848,6 +234828,8 @@ import { contextConfig, fetchDefinition, headers } from '@inkeep/agents-core';
234848
234828
  import { userProfile } from '../data-components/user-profile';
234849
234829
  import { searchTool } from '../tools/search-tool';
234850
234830
  import { weatherTool } from '../tools/weather-tool';
234831
+ import { toolSummary } from '../status-components/tool-summary';
234832
+ import { progressStatus } from '../status-components/progress-status';
234851
234833
  import { z } from 'zod';
234852
234834
 
234853
234835
  const supportAgentHeaders = headers({
@@ -234912,7 +234894,16 @@ export const supportAgent = agent({
234912
234894
  name: 'Support Agent',
234913
234895
  description: 'Multi-agent support system', // Only include if description has a value
234914
234896
  defaultSubAgent: routerAgent,
234915
- subAgents: () => [routerAgent, qaAgent]
234897
+ subAgents: () => [routerAgent, qaAgent],
234898
+ models: {
234899
+ base: { model: 'gpt-4' },
234900
+ summarizer: { model: 'gpt-4' },
234901
+ },
234902
+ statusUpdates: {
234903
+ numEvents: 3,
234904
+ timeInSeconds: 15,
234905
+ statusComponents: [toolSummary.config, progressStatus.config],
234906
+ },
234916
234907
  });
234917
234908
 
234918
234909
  Generate ONLY the TypeScript code without any markdown or explanations.`;
@@ -235196,6 +235187,75 @@ Generate ONLY the TypeScript code without any markdown or explanations.`;
235196
235187
  });
235197
235188
  writeFileSync3(outputPath, cleanGeneratedCode(text2));
235198
235189
  }
235190
+ async function generateStatusComponentFile(componentData, componentId, outputPath, modelSettings) {
235191
+ const model = createModel(modelSettings);
235192
+ const promptTemplate = `Generate a TypeScript file for an Inkeep status component.
235193
+
235194
+ STATUS COMPONENT DATA:
235195
+ {{DATA}}
235196
+
235197
+ COMPONENT ID: ${componentId}
235198
+
235199
+ ${getTypeDefinitions()}
235200
+
235201
+ ${NAMING_CONVENTION_RULES}
235202
+
235203
+ ${IMPORT_INSTRUCTIONS}
235204
+
235205
+ REQUIREMENTS:
235206
+ 1. Import statusComponent from '@inkeep/agents-sdk'
235207
+ 2. Import z from 'zod' for schema definitions
235208
+ 3. Create the status component using statusComponent()
235209
+ 4. Export following naming convention rules (camelCase version of ID)
235210
+ 5. Use 'type' field as the identifier (like 'tool_summary')
235211
+ 6. CRITICAL: All imports must be alphabetically sorted to comply with Biome linting
235212
+ 7. If you are writing zod schemas make them clean. For example if you see z.union([z.string(), z.null()]) write it as z.string().nullable()
235213
+ 8. The statusComponent() function handles conversion to .config automatically
235214
+
235215
+ EXAMPLE:
235216
+ import { statusComponent } from '@inkeep/agents-sdk';
235217
+ import { z } from 'zod';
235218
+
235219
+ export const toolSummary = statusComponent({
235220
+ type: 'tool_summary',
235221
+ description: 'Summary of tool calls and their purpose',
235222
+ detailsSchema: z.object({
235223
+ tool_name: z.string().describe('Name of tool used'),
235224
+ summary: z.string().describe('What was discovered or accomplished'),
235225
+ }),
235226
+ });
235227
+
235228
+ EXAMPLE WITH HYPHEN TYPE:
235229
+ import { statusComponent } from '@inkeep/agents-sdk';
235230
+ import { z } from 'zod';
235231
+
235232
+ // Component type 'search-progress' becomes export name 'searchProgress'
235233
+ export const searchProgress = statusComponent({
235234
+ type: 'search-progress',
235235
+ description: 'Progress of search operation',
235236
+ detailsSchema: z.object({
235237
+ query: z.string().describe('Search query being executed'),
235238
+ results_found: z.number().describe('Number of results found'),
235239
+ time_elapsed: z.number().optional().describe('Time elapsed in milliseconds'),
235240
+ }),
235241
+ });
235242
+
235243
+ EXAMPLE WITHOUT DETAILS SCHEMA:
235244
+ import { statusComponent } from '@inkeep/agents-sdk';
235245
+
235246
+ export const simpleStatus = statusComponent({
235247
+ type: 'simple_status',
235248
+ description: 'A simple status with no additional details',
235249
+ });
235250
+
235251
+ Generate ONLY the TypeScript code without any markdown or explanations.`;
235252
+ const text2 = await generateTextWithPlaceholders(model, componentData, promptTemplate, {
235253
+ temperature: 0.1,
235254
+ maxOutputTokens: 4e3,
235255
+ abortSignal: AbortSignal.timeout(6e4)
235256
+ });
235257
+ writeFileSync3(outputPath, cleanGeneratedCode(text2));
235258
+ }
235199
235259
  async function generateEnvironmentFiles(environmentsDir, credentials, environment = "development") {
235200
235260
  const generateCredentialCode = (cred) => {
235201
235261
  const params = [
@@ -235642,6 +235702,18 @@ function collectAllEntities(projectData) {
235642
235702
  entities.push({ id: compId, type: "artifactComponent" });
235643
235703
  }
235644
235704
  }
235705
+ if (projectData.agents) {
235706
+ for (const [_agentId, agentData] of Object.entries(projectData.agents)) {
235707
+ const agentObj = agentData;
235708
+ if (agentObj.statusUpdates?.statusComponents) {
235709
+ for (const statusComp of agentObj.statusUpdates.statusComponents) {
235710
+ if (statusComp.type) {
235711
+ entities.push({ id: statusComp.type, type: "statusComponent" });
235712
+ }
235713
+ }
235714
+ }
235715
+ }
235716
+ }
235645
235717
  if (projectData.credentialReferences) {
235646
235718
  for (const credId of Object.keys(projectData.credentialReferences)) {
235647
235719
  entities.push({ id: credId, type: "credential" });
@@ -235661,6 +235733,7 @@ var init_variable_name_registry = __esm({
235661
235733
  // Usually no suffix needed
235662
235734
  dataComponentSuffix: null,
235663
235735
  artifactComponentSuffix: null,
235736
+ statusComponentSuffix: null,
235664
235737
  credentialSuffix: null
235665
235738
  };
235666
235739
  VariableNameGenerator = class {
@@ -235674,6 +235747,7 @@ var init_variable_name_registry = __esm({
235674
235747
  tools: /* @__PURE__ */ new Map(),
235675
235748
  dataComponents: /* @__PURE__ */ new Map(),
235676
235749
  artifactComponents: /* @__PURE__ */ new Map(),
235750
+ statusComponents: /* @__PURE__ */ new Map(),
235677
235751
  credentials: /* @__PURE__ */ new Map(),
235678
235752
  usedNames: /* @__PURE__ */ new Map()
235679
235753
  };
@@ -235785,6 +235859,8 @@ var init_variable_name_registry = __esm({
235785
235859
  return this.conventions.dataComponentSuffix || "";
235786
235860
  case "artifactComponent":
235787
235861
  return this.conventions.artifactComponentSuffix || "";
235862
+ case "statusComponent":
235863
+ return this.conventions.statusComponentSuffix || "";
235788
235864
  case "credential":
235789
235865
  return this.conventions.credentialSuffix || "";
235790
235866
  default:
@@ -235806,6 +235882,8 @@ var init_variable_name_registry = __esm({
235806
235882
  return this.registry.dataComponents;
235807
235883
  case "artifactComponent":
235808
235884
  return this.registry.artifactComponents;
235885
+ case "statusComponent":
235886
+ return this.registry.statusComponents;
235809
235887
  case "credential":
235810
235888
  return this.registry.credentials;
235811
235889
  default:
@@ -236120,6 +236198,7 @@ function displayPlanSummary(plan) {
236120
236198
  tool: [],
236121
236199
  dataComponent: [],
236122
236200
  artifactComponent: [],
236201
+ statusComponent: [],
236123
236202
  environment: []
236124
236203
  };
236125
236204
  for (const file of plan.files) {
@@ -236172,6 +236251,15 @@ function displayPlanSummary(plan) {
236172
236251
  }
236173
236252
  }
236174
236253
  }
236254
+ if (filesByType.statusComponent.length > 0) {
236255
+ console.log(chalk7.gray("\n Status Components:"));
236256
+ for (const file of filesByType.statusComponent) {
236257
+ console.log(chalk7.gray(` \u2022 ${file.path}`));
236258
+ for (const entity of file.entities) {
236259
+ console.log(chalk7.gray(` - ${entity.variableName}`));
236260
+ }
236261
+ }
236262
+ }
236175
236263
  if (filesByType.environment.length > 0) {
236176
236264
  console.log(chalk7.gray("\n Environments:"));
236177
236265
  for (const file of filesByType.environment) {
@@ -236193,7 +236281,9 @@ function displayPatternSummary(patterns) {
236193
236281
  console.log(chalk7.gray(` \u2022 Agent suffix: "${patterns.namingConventions.agentSuffix}"`));
236194
236282
  console.log(chalk7.gray(` \u2022 SubAgent suffix: "${patterns.namingConventions.subAgentSuffix}"`));
236195
236283
  if (patterns.examples.mappings && patterns.examples.mappings.length > 0) {
236196
- console.log(chalk7.gray(` Found ${patterns.examples.mappings.length} existing variable mappings`));
236284
+ console.log(
236285
+ chalk7.gray(` Found ${patterns.examples.mappings.length} existing variable mappings`)
236286
+ );
236197
236287
  }
236198
236288
  }
236199
236289
  function displayRecommendedPattern() {
@@ -236300,10 +236390,7 @@ async function generatePlan(projectData, patterns, modelSettings, createModel2)
236300
236390
  nameGenerator.generateVariableName(entity.id, entity.type);
236301
236391
  }
236302
236392
  const model = createModel2(modelSettings);
236303
- const promptTemplate = createPlanningPromptTemplate(
236304
- nameGenerator.getRegistry(),
236305
- allEntities
236306
- );
236393
+ const promptTemplate = createPlanningPromptTemplate(nameGenerator.getRegistry(), allEntities);
236307
236394
  const promptData = {
236308
236395
  projectData,
236309
236396
  patterns
@@ -236353,28 +236440,42 @@ CRITICAL RULES:
236353
236440
  1. TOOL TYPES - VERY IMPORTANT:
236354
236441
  - **Function Tools** (type: "function"): ALWAYS define INLINE within agent files using "inlineContent" array
236355
236442
  - **MCP Tools** (type: "mcp"): Create separate files in tools/ directory
236356
- - VALID FILE TYPES: Only use these exact types: "agent", "tool", "dataComponent", "artifactComponent", "environment", "index"
236443
+ - VALID FILE TYPES: Only use these exact types: "agent", "tool", "dataComponent", "artifactComponent", "statusComponent", "environment", "index"
236357
236444
  - NEVER create file type "functionTool" - function tools go in "inlineContent" of agent files
236358
236445
 
236359
- 2. File Structure:
236446
+ 2. STATUS COMPONENTS - VERY IMPORTANT:
236447
+ - **Status Components**: ALWAYS create separate files in status-components/ directory
236448
+ - Status components are found in agent.statusUpdates.statusComponents array
236449
+ - Each status component should get its own file
236450
+ - Agents must import status components from status-components/ directory
236451
+ - Status components are NEVER inlined in agent files
236452
+
236453
+ 3. File Structure:
236360
236454
  - If patterns show "toolsLocation": "inline", ALL tools should be in "inlineContent" of agent files
236361
236455
  - If patterns show "toolsLocation": "separate", MCP tools get separate files, function tools still inline
236362
236456
  - Follow the detected file naming convention (kebab-case, camelCase, or snake_case)
236363
236457
 
236364
- 3. Variable Names:
236458
+ 4. Variable Names:
236365
236459
  - MUST use the exact variable names from the mappings above
236366
236460
  - If ID "weather" is used by both agent and subAgent, they will have different variable names
236367
236461
  - Do NOT generate new variable names - use what's provided
236368
236462
 
236369
- 4. File Placement:
236463
+ 5. File Placement:
236370
236464
  - agents/ directory: Agent files (with function tools in "inlineContent")
236371
236465
  - tools/ directory: MCP tool files only
236372
236466
  - data-components/ directory: Data component files
236373
236467
  - artifact-components/ directory: Artifact component files
236468
+ - status-components/ directory: Status component files
236374
236469
  - environments/ directory: Environment/credential files
236375
236470
  - index.ts: Main project file
236376
236471
 
236377
- 5. Dependencies:
236472
+ 6. File Paths (CRITICAL):
236473
+ - Paths MUST be relative to the project root directory
236474
+ - DO NOT include the project name in the path
236475
+ - CORRECT: "agents/weather-agent.ts", "tools/inkeep-facts.ts", "status-components/tool-summary.ts"
236476
+ - WRONG: "my-project/agents/weather-agent.ts", "project-name/tools/inkeep-facts.ts"
236477
+
236478
+ 7. Dependencies:
236378
236479
  - Each file should list which variables it needs to import from other files
236379
236480
  - Imports should use relative paths
236380
236481
  - Respect detected import style (named vs default)
@@ -236429,6 +236530,20 @@ OUTPUT FORMAT (JSON):
236429
236530
  "dependencies": [],
236430
236531
  "inlineContent": null
236431
236532
  },
236533
+ {
236534
+ "path": "status-components/tool-summary.ts",
236535
+ "type": "statusComponent",
236536
+ "entities": [
236537
+ {
236538
+ "id": "tool_summary",
236539
+ "variableName": "toolSummary",
236540
+ "entityType": "statusComponent",
236541
+ "exportName": "toolSummary"
236542
+ }
236543
+ ],
236544
+ "dependencies": [],
236545
+ "inlineContent": null
236546
+ },
236432
236547
  {
236433
236548
  "path": "index.ts",
236434
236549
  "type": "index",
@@ -236466,6 +236581,7 @@ function formatVariableMappings(registry2, allEntities) {
236466
236581
  tool: [],
236467
236582
  dataComponent: [],
236468
236583
  artifactComponent: [],
236584
+ statusComponent: [],
236469
236585
  credential: []
236470
236586
  };
236471
236587
  for (const entity of allEntities) {
@@ -236500,6 +236616,8 @@ function getRegistryMap(registry2, entityType) {
236500
236616
  return registry2.dataComponents;
236501
236617
  case "artifactComponent":
236502
236618
  return registry2.artifactComponents;
236619
+ case "statusComponent":
236620
+ return registry2.statusComponents;
236503
236621
  case "credential":
236504
236622
  return registry2.credentials;
236505
236623
  default:
@@ -236582,6 +236700,21 @@ function generateDefaultPlan(registry2) {
236582
236700
  dependencies: []
236583
236701
  });
236584
236702
  }
236703
+ for (const [compId, variableName] of registry2.statusComponents.entries()) {
236704
+ files.push({
236705
+ path: `status-components/${kebabCase(compId)}.ts`,
236706
+ type: "statusComponent",
236707
+ entities: [
236708
+ {
236709
+ id: compId,
236710
+ variableName,
236711
+ entityType: "statusComponent",
236712
+ exportName: variableName
236713
+ }
236714
+ ],
236715
+ dependencies: []
236716
+ });
236717
+ }
236585
236718
  files.push({
236586
236719
  path: "index.ts",
236587
236720
  type: "index",
@@ -236617,14 +236750,18 @@ async function generateFilesFromPlan(plan, projectData, dirs, modelSettings, deb
236617
236750
  (fileInfo, index2) => generateFile(fileInfo, projectData, plan, dirs, modelSettings, debug).then(() => {
236618
236751
  if (debug) {
236619
236752
  const elapsed = ((Date.now() - startTime) / 1e3).toFixed(1);
236620
- console.log(`[DEBUG] \u2713 Completed ${index2 + 1}/${plan.files.length}: ${fileInfo.path} (${elapsed}s elapsed)`);
236753
+ console.log(
236754
+ `[DEBUG] \u2713 Completed ${index2 + 1}/${plan.files.length}: ${fileInfo.path} (${elapsed}s elapsed)`
236755
+ );
236621
236756
  }
236622
236757
  })
236623
236758
  );
236624
236759
  await Promise.all(tasks2);
236625
236760
  const totalTime = ((Date.now() - startTime) / 1e3).toFixed(1);
236626
236761
  if (debug) {
236627
- console.log(`[DEBUG] All files generated in ${totalTime}s (${plan.files.length} files in parallel)`);
236762
+ console.log(
236763
+ `[DEBUG] All files generated in ${totalTime}s (${plan.files.length} files in parallel)`
236764
+ );
236628
236765
  }
236629
236766
  }
236630
236767
  async function generateFile(fileInfo, projectData, plan, dirs, modelSettings, debug) {
@@ -236662,7 +236799,9 @@ async function generateFile(fileInfo, projectData, plan, dirs, modelSettings, de
236662
236799
  writeFileSync4(outputPath, cleanedCode);
236663
236800
  const totalDuration = ((Date.now() - fileStartTime) / 1e3).toFixed(1);
236664
236801
  if (debug) {
236665
- console.log(`[DEBUG] \u2713 Completed: ${fileInfo.path} (LLM: ${llmDuration}s, Total: ${totalDuration}s)`);
236802
+ console.log(
236803
+ `[DEBUG] \u2713 Completed: ${fileInfo.path} (LLM: ${llmDuration}s, Total: ${totalDuration}s)`
236804
+ );
236666
236805
  }
236667
236806
  } catch (error) {
236668
236807
  console.error(`[ERROR] Failed to generate ${fileInfo.path}:`, error.message);
@@ -236701,6 +236840,21 @@ function extractDataForFile(fileInfo, projectData) {
236701
236840
  }
236702
236841
  return {};
236703
236842
  }
236843
+ case "statusComponent": {
236844
+ const statusType = fileInfo.entities[0]?.id;
236845
+ if (statusType && projectData.agents) {
236846
+ for (const agentData of Object.values(projectData.agents)) {
236847
+ const agent = agentData;
236848
+ if (agent.statusUpdates?.statusComponents) {
236849
+ const found = agent.statusUpdates.statusComponents.find(
236850
+ (sc) => sc.type === statusType
236851
+ );
236852
+ if (found) return found;
236853
+ }
236854
+ }
236855
+ }
236856
+ return {};
236857
+ }
236704
236858
  case "environment":
236705
236859
  return projectData.credentialReferences || {};
236706
236860
  default:
@@ -236756,11 +236910,13 @@ CRITICAL RULES:
236756
236910
  return createDataComponentPrompt(fileData, context, registryInfo, commonInstructions);
236757
236911
  case "artifactComponent":
236758
236912
  return createArtifactComponentPrompt(fileData, context, registryInfo, commonInstructions);
236913
+ case "statusComponent":
236914
+ return createStatusComponentPrompt(fileData, context, registryInfo, commonInstructions);
236759
236915
  default:
236760
236916
  throw new Error(`Unknown file type: ${fileInfo.type}`);
236761
236917
  }
236762
236918
  }
236763
- function createIndexPrompt(projectData, context, registryInfo, commonInstructions) {
236919
+ function createIndexPrompt(_projectData, context, _registryInfo, commonInstructions) {
236764
236920
  const importMappings = generateImportMappings(context.plan);
236765
236921
  return `Generate index.ts for Inkeep project.
236766
236922
 
@@ -236787,7 +236943,7 @@ export const myProject = project({
236787
236943
 
236788
236944
  Generate ONLY the TypeScript code without markdown.`;
236789
236945
  }
236790
- function createAgentPrompt(agentData, context, registryInfo, commonInstructions) {
236946
+ function createAgentPrompt(_agentData, context, _registryInfo, commonInstructions) {
236791
236947
  const inlineTools = context.fileInfo.inlineContent || [];
236792
236948
  const hasInlineTools = inlineTools.length > 0;
236793
236949
  return `Generate TypeScript file for Inkeep agent.
@@ -236841,17 +236997,62 @@ const calculateBMI = functionTool({
236841
236997
  ` : ""}
236842
236998
 
236843
236999
  IMPORTS (CRITICAL - MUST BE FIRST):
236844
- ALWAYS import these from '@inkeep/agents-sdk' at the TOP of the file:
236845
- import { agent, subAgent, functionTool } from '@inkeep/agents-sdk';
237000
+ ALWAYS import these at the TOP of the file:
237001
+ - import { agent, subAgent, functionTool } from '@inkeep/agents-sdk';
237002
+ - import { z } from 'zod'; (REQUIRED when using ANY Zod schemas like responseSchema, headersSchema)
237003
+ - import { contextConfig, fetchDefinition, headers } from '@inkeep/agents-core'; (REQUIRED when agent has contextConfig)
237004
+ - import status components from '../status-components/' when needed
236846
237005
 
236847
237006
  SUBAGENT AND AGENT API (CRITICAL):
236848
237007
  - Use 'canUse' (NOT 'tools') - must be a FUNCTION returning array
236849
237008
  - Use 'canDelegateTo' - must be a FUNCTION returning array
236850
237009
  - Use 'dataComponents' - must be a FUNCTION returning array
236851
237010
  - Use 'subAgents' in agent() - must be a FUNCTION returning array
236852
- - For multi-line strings (like 'prompt'), ALWAYS use template literals (backticks \`...\`)
237011
+
237012
+ CONTEXT CONFIG (CRITICAL - NO PLAIN OBJECTS):
237013
+ - NEVER use plain objects for contextConfig
237014
+ - ALWAYS use helper functions: headers(), fetchDefinition(), contextConfig()
237015
+ - Create separate const variables for each helper before the agent definition
237016
+ - Pattern:
237017
+ const myHeaders = headers({ schema: z.object({ api_key: z.string() }) });
237018
+ const myFetch = fetchDefinition({ id: '...', fetchConfig: {...}, responseSchema: z.object({...}) });
237019
+ const myContext = contextConfig({ headers: myHeaders, contextVariables: { data: myFetch } });
237020
+ export const myAgent = agent({ contextConfig: myContext });
237021
+ - Use myHeaders.toTemplate('key_name') for header values in fetchConfig
237022
+ - Use myContext.toTemplate('variable.field') for prompt interpolation
237023
+
237024
+ STRING LITERALS (CRITICAL - MUST FOLLOW):
237025
+ - For STRING VALUES: ALWAYS use template literals (backticks \`)
237026
+ - This includes: prompt, description, query, url, method, body, defaultValue, etc.
237027
+ - Template literals prevent syntax errors with apostrophes (don't, user's, it's)
237028
+ - For object keys that are identifiers (no hyphens), omit quotes: Authorization not 'Authorization'
237029
+ - For object keys with hyphens, use quotes: 'Content-Type'
237030
+
237031
+ EXCEPTION - Schema Fields (NO template literals):
237032
+ - headersSchema: z.object({ ... }) (raw Zod code, NOT a string)
237033
+ - responseSchema: z.object({ ... }) (raw Zod code, NOT a string)
237034
+ - These are TypeScript expressions, not string values
237035
+
237036
+ CORRECT EXAMPLES:
237037
+ \u2705 prompt: \`You are a helpful assistant.\` (string value)
237038
+ \u2705 query: \`query GetData { field }\` (string value)
237039
+ \u2705 responseSchema: z.object({ name: z.string() }) (Zod code, NO backticks)
237040
+ \u2705 headersSchema: z.object({ 'inkeep_api_key': z.string() }) (Zod code, NO backticks)
237041
+
237042
+ WRONG EXAMPLES:
237043
+ \u274C prompt: 'You are a helpful assistant.' (use backticks not single quotes)
237044
+ \u274C responseSchema: \`z.object({ name: z.string() })\` (don't wrap Zod in backticks)
237045
+
237046
+ STATUS COMPONENTS (CRITICAL):
237047
+ - Status components are ALWAYS imported from '../status-components/' directory
237048
+ - In statusUpdates.statusComponents array, use statusComponent.config to get the config object
237049
+ - NEVER inline status component definitions in the agent file
237050
+ - Example: import { toolSummary } from '../status-components/tool-summary'
237051
+ - Then use: statusComponents: [toolSummary.config]
236853
237052
 
236854
237053
  \u2705 CORRECT:
237054
+ import { toolSummary } from '../status-components/tool-summary';
237055
+
236855
237056
  const weatherSubAgent = subAgent({
236856
237057
  id: 'weather',
236857
237058
  name: 'Weather Sub',
@@ -236868,7 +237069,12 @@ const weatherAgent = agent({
236868
237069
  id: 'weather',
236869
237070
  name: 'Weather Agent',
236870
237071
  defaultSubAgent: weatherSubAgent,
236871
- subAgents: () => [weatherSubAgent] // FUNCTION returning array
237072
+ subAgents: () => [weatherSubAgent], // FUNCTION returning array
237073
+ statusUpdates: {
237074
+ numEvents: 1,
237075
+ timeInSeconds: 1,
237076
+ statusComponents: [toolSummary.config] // Use .config
237077
+ }
236872
237078
  });
236873
237079
 
236874
237080
  \u274C WRONG:
@@ -236877,10 +237083,11 @@ string', // NO - use backticks for multi-line
236877
237083
  tools: [tool1, tool2], // NO - use 'canUse' not 'tools'
236878
237084
  canUse: [tool1, tool2], // NO - must be a function
236879
237085
  subAgents: [weatherSubAgent], // NO - must be a function
237086
+ statusComponents: [{ type: '...', ... }], // NO - import from files
236880
237087
 
236881
237088
  Generate ONLY the TypeScript code without markdown.`;
236882
237089
  }
236883
- function createToolPrompt(toolData, context, registryInfo, commonInstructions) {
237090
+ function createToolPrompt(_toolData, _context, _registryInfo, commonInstructions) {
236884
237091
  return `Generate TypeScript file for Inkeep tool.
236885
237092
 
236886
237093
  TOOL DATA:
@@ -236896,7 +237103,7 @@ REQUIREMENTS:
236896
237103
 
236897
237104
  Generate ONLY the TypeScript code without markdown.`;
236898
237105
  }
236899
- function createDataComponentPrompt(componentData, context, registryInfo, commonInstructions) {
237106
+ function createDataComponentPrompt(_componentData, _context, _registryInfo, commonInstructions) {
236900
237107
  return `Generate TypeScript file for Inkeep data component.
236901
237108
 
236902
237109
  COMPONENT DATA:
@@ -236952,7 +237159,7 @@ REQUIREMENTS:
236952
237159
 
236953
237160
  Generate ONLY the TypeScript code without markdown.`;
236954
237161
  }
236955
- function createArtifactComponentPrompt(componentData, context, registryInfo, commonInstructions) {
237162
+ function createArtifactComponentPrompt(_componentData, _context, _registryInfo, commonInstructions) {
236956
237163
  return `Generate TypeScript file for Inkeep artifact component.
236957
237164
 
236958
237165
  COMPONENT DATA:
@@ -236969,7 +237176,38 @@ REQUIREMENTS:
236969
237176
 
236970
237177
  Generate ONLY the TypeScript code without markdown.`;
236971
237178
  }
236972
- function formatRegistryForFile(fileInfo, registry2) {
237179
+ function createStatusComponentPrompt(_componentData, _context, _registryInfo, commonInstructions) {
237180
+ return `Generate TypeScript file for Inkeep status component.
237181
+
237182
+ COMPONENT DATA:
237183
+ {{DATA}}
237184
+
237185
+ ${commonInstructions}
237186
+
237187
+ REQUIREMENTS:
237188
+ 1. Import statusComponent from '@inkeep/agents-sdk'
237189
+ 2. Import z from 'zod' for schema definitions if detailsSchema is present
237190
+ 3. Use exact variable name from registry
237191
+ 4. Convert any JSON Schema in detailsSchema to Zod schema
237192
+ 5. Use 'type' field as the identifier
237193
+ 6. The statusComponent() function handles .config conversion automatically
237194
+
237195
+ EXAMPLE:
237196
+ import { statusComponent } from '@inkeep/agents-sdk';
237197
+ import { z } from 'zod';
237198
+
237199
+ export const toolSummary = statusComponent({
237200
+ type: 'tool_summary',
237201
+ description: 'Summary of tool calls',
237202
+ detailsSchema: z.object({
237203
+ tool_name: z.string().describe('Name of tool used'),
237204
+ summary: z.string().describe('What was accomplished'),
237205
+ }),
237206
+ });
237207
+
237208
+ Generate ONLY the TypeScript code without markdown.`;
237209
+ }
237210
+ function formatRegistryForFile(fileInfo, _registry) {
236973
237211
  let result = "Entities in this file:\n";
236974
237212
  for (const entity of fileInfo.entities) {
236975
237213
  result += ` - ${entity.entityType} "${entity.id}" \u2192 variable: ${entity.variableName}
@@ -237635,9 +237873,7 @@ async function configGetCommand(key, options) {
237635
237873
  if (!existsSync(configPath)) {
237636
237874
  console.error(chalk2.red("No configuration file found."));
237637
237875
  console.log(
237638
- chalk2.gray(
237639
- 'Run "inkeep init" to create one, or specify a config file with --config'
237640
- )
237876
+ chalk2.gray('Run "inkeep init" to create one, or specify a config file with --config')
237641
237877
  );
237642
237878
  process.exit(1);
237643
237879
  }
@@ -238264,7 +238500,9 @@ async function detectCurrentProject(debug = false) {
238264
238500
  if (typeof value.getId === "function") {
238265
238501
  const projectId = value.getId();
238266
238502
  if (debug) {
238267
- console.log(chalk8.gray(` \u2022 Project detected: ${projectId} (from export: ${exportKey})`));
238503
+ console.log(
238504
+ chalk8.gray(` \u2022 Project detected: ${projectId} (from export: ${exportKey})`)
238505
+ );
238268
238506
  }
238269
238507
  return projectId;
238270
238508
  }
@@ -238282,7 +238520,7 @@ async function detectCurrentProject(debug = false) {
238282
238520
  try {
238283
238521
  const content = readFileSync5(indexPath, "utf-8");
238284
238522
  const projectIdMatch = content.match(/project\s*\(\s*\{\s*id\s*:\s*['"]([^'"]+)['"]/);
238285
- if (projectIdMatch && projectIdMatch[1]) {
238523
+ if (projectIdMatch?.[1]) {
238286
238524
  const projectId = projectIdMatch[1];
238287
238525
  if (debug) {
238288
238526
  console.log(chalk8.gray(` \u2022 Project ID extracted from static parse: ${projectId}`));
@@ -238315,7 +238553,7 @@ async function verifyGeneratedFiles(projectDir, originalProjectData, debug = fal
238315
238553
  errors.push("index.ts does not contain a project() call");
238316
238554
  }
238317
238555
  const projectIdMatch = indexContent.match(/project\s*\(\s*\{\s*id\s*:\s*['"]([^'"]+)['"]/);
238318
- if (projectIdMatch && projectIdMatch[1]) {
238556
+ if (projectIdMatch?.[1]) {
238319
238557
  const extractedProjectId = projectIdMatch[1];
238320
238558
  if (extractedProjectId !== originalProjectData.id) {
238321
238559
  warnings.push(
@@ -238332,31 +238570,36 @@ async function verifyGeneratedFiles(projectDir, originalProjectData, debug = fal
238332
238570
  const agentsDir = join9(projectDir, "agents");
238333
238571
  const expectedAgents = Object.keys(originalProjectData.agents || {});
238334
238572
  for (const agentId of expectedAgents) {
238335
- const agentPath = join9(agentsDir, `${agentId}.ts`);
238573
+ const kebabCaseId = agentId.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
238574
+ const agentPath = join9(agentsDir, `${kebabCaseId}.ts`);
238336
238575
  if (!existsSync8(agentPath)) {
238337
- errors.push(`Agent file not found: agents/${agentId}.ts`);
238576
+ errors.push(`Agent file not found: agents/${kebabCaseId}.ts`);
238338
238577
  } else if (debug) {
238339
- console.log(chalk8.gray(` \u2713 Agent file exists: agents/${agentId}.ts`));
238578
+ console.log(chalk8.gray(` \u2713 Agent file exists: agents/${kebabCaseId}.ts`));
238340
238579
  }
238341
238580
  }
238342
238581
  const toolsDir = join9(projectDir, "tools");
238343
238582
  const expectedTools = Object.keys(originalProjectData.tools || {});
238344
238583
  for (const toolId of expectedTools) {
238345
- const toolPath = join9(toolsDir, `${toolId}.ts`);
238584
+ const kebabCaseId = toolId.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
238585
+ const toolPath = join9(toolsDir, `${kebabCaseId}.ts`);
238346
238586
  if (!existsSync8(toolPath)) {
238347
- errors.push(`Tool file not found: tools/${toolId}.ts`);
238587
+ errors.push(`Tool file not found: tools/${kebabCaseId}.ts`);
238348
238588
  } else if (debug) {
238349
- console.log(chalk8.gray(` \u2713 Tool file exists: tools/${toolId}.ts`));
238589
+ console.log(chalk8.gray(` \u2713 Tool file exists: tools/${kebabCaseId}.ts`));
238350
238590
  }
238351
238591
  }
238352
238592
  const dataComponentsDir = join9(projectDir, "data-components");
238353
238593
  const expectedDataComponents = Object.keys(originalProjectData.dataComponents || {});
238354
238594
  for (const componentId of expectedDataComponents) {
238355
- const componentPath = join9(dataComponentsDir, `${componentId}.ts`);
238595
+ const kebabCaseId = componentId.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
238596
+ const componentPath = join9(dataComponentsDir, `${kebabCaseId}.ts`);
238356
238597
  if (!existsSync8(componentPath)) {
238357
- errors.push(`Data component file not found: data-components/${componentId}.ts`);
238598
+ errors.push(`Data component file not found: data-components/${kebabCaseId}.ts`);
238358
238599
  } else if (debug) {
238359
- console.log(chalk8.gray(` \u2713 Data component file exists: data-components/${componentId}.ts`));
238600
+ console.log(
238601
+ chalk8.gray(` \u2713 Data component file exists: data-components/${kebabCaseId}.ts`)
238602
+ );
238360
238603
  }
238361
238604
  }
238362
238605
  const environmentsDir = join9(projectDir, "environments");
@@ -238382,8 +238625,12 @@ async function verifyGeneratedFiles(projectDir, originalProjectData, debug = fal
238382
238625
  if (debug) {
238383
238626
  console.log(chalk8.gray("\n\u{1F50D} Verification Summary:"));
238384
238627
  console.log(chalk8.gray(` \u2022 index.ts: ${existsSync8(indexPath) ? "\u2713" : "\u2717"}`));
238385
- console.log(chalk8.gray(` \u2022 Agent files: ${expectedAgents.length}/${expectedAgents.length} found`));
238386
- console.log(chalk8.gray(` \u2022 Tool files: ${expectedTools.length}/${expectedTools.length} found`));
238628
+ console.log(
238629
+ chalk8.gray(` \u2022 Agent files: ${expectedAgents.length}/${expectedAgents.length} found`)
238630
+ );
238631
+ console.log(
238632
+ chalk8.gray(` \u2022 Tool files: ${expectedTools.length}/${expectedTools.length} found`)
238633
+ );
238387
238634
  console.log(
238388
238635
  chalk8.gray(
238389
238636
  ` \u2022 Data component files: ${expectedDataComponents.length}/${expectedDataComponents.length} found`
@@ -238439,12 +238686,14 @@ function createProjectStructure(projectDir, projectId, useCurrentDirectory = fal
238439
238686
  const toolsDir = join9(projectRoot, "tools");
238440
238687
  const dataComponentsDir = join9(projectRoot, "data-components");
238441
238688
  const artifactComponentsDir = join9(projectRoot, "artifact-components");
238689
+ const statusComponentsDir = join9(projectRoot, "status-components");
238442
238690
  const environmentsDir = join9(projectRoot, "environments");
238443
238691
  ensureDirectoryExists(projectRoot);
238444
238692
  ensureDirectoryExists(agentsDir);
238445
238693
  ensureDirectoryExists(toolsDir);
238446
238694
  ensureDirectoryExists(dataComponentsDir);
238447
238695
  ensureDirectoryExists(artifactComponentsDir);
238696
+ ensureDirectoryExists(statusComponentsDir);
238448
238697
  ensureDirectoryExists(environmentsDir);
238449
238698
  return {
238450
238699
  projectRoot,
@@ -238452,6 +238701,7 @@ function createProjectStructure(projectDir, projectId, useCurrentDirectory = fal
238452
238701
  toolsDir,
238453
238702
  dataComponentsDir,
238454
238703
  artifactComponentsDir,
238704
+ statusComponentsDir,
238455
238705
  environmentsDir
238456
238706
  };
238457
238707
  }
@@ -238628,6 +238878,11 @@ async function pullProjectCommand(options) {
238628
238878
  }, 0);
238629
238879
  const dataComponentCount = Object.keys(projectData.dataComponents || {}).length;
238630
238880
  const artifactComponentCount = Object.keys(projectData.artifactComponents || {}).length;
238881
+ const statusComponentCount = Object.values(projectData.agents || {}).reduce((total, agent) => {
238882
+ const agentObj = agent;
238883
+ const statusComponents = agentObj.statusUpdates?.statusComponents || [];
238884
+ return total + statusComponents.length;
238885
+ }, 0);
238631
238886
  console.log(chalk8.cyan("\n\u{1F4CA} Project Summary:"));
238632
238887
  console.log(chalk8.gray(` \u2022 Name: ${projectData.name}`));
238633
238888
  console.log(chalk8.gray(` \u2022 Description: ${projectData.description || "No description"}`));
@@ -238640,6 +238895,9 @@ async function pullProjectCommand(options) {
238640
238895
  if (artifactComponentCount > 0) {
238641
238896
  console.log(chalk8.gray(` \u2022 Artifact Components: ${artifactComponentCount}`));
238642
238897
  }
238898
+ if (statusComponentCount > 0) {
238899
+ console.log(chalk8.gray(` \u2022 Status Components: ${statusComponentCount}`));
238900
+ }
238643
238901
  const credentialReferences2 = projectData.credentialReferences || {};
238644
238902
  const credentialCount = Object.keys(credentialReferences2).length;
238645
238903
  if (credentialCount > 0) {
@@ -238738,13 +238996,19 @@ async function pullProjectCommand(options) {
238738
238996
  if (options.debug) {
238739
238997
  console.log(chalk8.gray("\n\u{1F4CD} Plan saved to .inkeep/generation-plan.json"));
238740
238998
  }
238999
+ const statusComponentsCount = Object.values(projectData.agents || {}).reduce((total, agent) => {
239000
+ const agentObj = agent;
239001
+ const statusComponents = agentObj.statusUpdates?.statusComponents || [];
239002
+ return total + statusComponents.length;
239003
+ }, 0);
238741
239004
  const fileCount = {
238742
239005
  agents: Object.keys(projectData.agents || {}).length,
238743
239006
  tools: Object.keys(projectData.tools || {}).length,
238744
239007
  dataComponents: Object.keys(projectData.dataComponents || {}).length,
238745
- artifactComponents: Object.keys(projectData.artifactComponents || {}).length
239008
+ artifactComponents: Object.keys(projectData.artifactComponents || {}).length,
239009
+ statusComponents: statusComponentsCount
238746
239010
  };
238747
- const totalFiles = fileCount.agents + fileCount.tools + fileCount.dataComponents + fileCount.artifactComponents + 5;
239011
+ const totalFiles = fileCount.agents + fileCount.tools + fileCount.dataComponents + fileCount.artifactComponents + fileCount.statusComponents + 5;
238748
239012
  spinner.succeed(`Project files generated (${totalFiles} files created)`);
238749
239013
  spinner.start("Verifying generated files...");
238750
239014
  try {
@@ -238801,6 +239065,9 @@ async function pullProjectCommand(options) {
238801
239065
  if (fileCount.artifactComponents > 0) {
238802
239066
  console.log(chalk8.gray(` \u251C\u2500\u2500 artifact-components/ (${fileCount.artifactComponents} files)`));
238803
239067
  }
239068
+ if (fileCount.statusComponents > 0) {
239069
+ console.log(chalk8.gray(` \u251C\u2500\u2500 status-components/ (${fileCount.statusComponents} files)`));
239070
+ }
238804
239071
  console.log(chalk8.gray(" \u2514\u2500\u2500 environments/ (4 files)"));
238805
239072
  console.log(chalk8.cyan("\n\u{1F4DD} Next steps:"));
238806
239073
  console.log(chalk8.gray(` \u2022 cd ${dirs.projectRoot}`));
@@ -238964,9 +239231,12 @@ async function pushCommand(options) {
238964
239231
  console.log(chalk9.gray(` \u2022 Size: ${JSON.stringify(projectDefinition).length} bytes`));
238965
239232
  const agentCount = Object.keys(projectDefinition.agents || {}).length;
238966
239233
  const toolCount = Object.keys(projectDefinition.tools || {}).length;
238967
- const subAgentCount = Object.values(projectDefinition.agents || {}).reduce((total, agent) => {
238968
- return total + Object.keys(agent.subAgents || {}).length;
238969
- }, 0);
239234
+ const subAgentCount = Object.values(projectDefinition.agents || {}).reduce(
239235
+ (total, agent) => {
239236
+ return total + Object.keys(agent.subAgents || {}).length;
239237
+ },
239238
+ 0
239239
+ );
238970
239240
  console.log(chalk9.cyan("\n\u{1F4CA} Project Data Summary:"));
238971
239241
  console.log(chalk9.gray(` \u2022 Agent: ${agentCount}`));
238972
239242
  console.log(chalk9.gray(` \u2022 Tools: ${toolCount}`));
@@ -239088,7 +239358,7 @@ program.command("chat [agent-id]").description(
239088
239358
  const config = options.config || options.configFilePath;
239089
239359
  await chatCommandEnhanced2(agentId, { ...options, config });
239090
239360
  });
239091
- program.command("list-agent").description("List all available agent for a specific project").requiredOption("--project <project-id>", "Project ID to list agent for").option("--tenant-id <tenant-id>", "Tenant ID").option("--agents-manage-api-url <url>", "Agents manage API URL").option("--config <path>", "Path to configuration file").option("--config-file-path <path>", "Path to configuration file (deprecated, use --config)").action(async (options) => {
239361
+ program.command("list-agent").description("List all available agents for a specific project").requiredOption("--project <project-id>", "Project ID to list agent for").option("--tenant-id <tenant-id>", "Tenant ID").option("--agents-manage-api-url <url>", "Agents manage API URL").option("--config <path>", "Path to configuration file").option("--config-file-path <path>", "Path to configuration file (deprecated, use --config)").action(async (options) => {
239092
239362
  const config = options.config || options.configFilePath;
239093
239363
  await listAgentsCommand({ ...options, config });
239094
239364
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-cli",
3
- "version": "0.21.1",
3
+ "version": "0.22.1",
4
4
  "description": "Inkeep CLI tool",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -46,8 +46,8 @@
46
46
  "recast": "^0.23.0",
47
47
  "ts-morph": "^26.0.0",
48
48
  "tsx": "^4.20.5",
49
- "@inkeep/agents-core": "^0.21.1",
50
- "@inkeep/agents-sdk": "^0.21.1"
49
+ "@inkeep/agents-core": "^0.22.1",
50
+ "@inkeep/agents-sdk": "^0.22.1"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/degit": "^2.8.6",