language-operator 0.1.30 → 0.1.35

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -8
  3. data/CHANGELOG.md +49 -0
  4. data/CI_STATUS.md +56 -0
  5. data/Gemfile.lock +2 -2
  6. data/Makefile +28 -7
  7. data/Rakefile +29 -0
  8. data/docs/dsl/SCHEMA_VERSION.md +250 -0
  9. data/docs/dsl/agent-reference.md +13 -0
  10. data/lib/language_operator/agent/base.rb +10 -6
  11. data/lib/language_operator/agent/executor.rb +19 -97
  12. data/lib/language_operator/agent/safety/ast_validator.rb +62 -43
  13. data/lib/language_operator/agent/safety/safe_executor.rb +39 -2
  14. data/lib/language_operator/agent/scheduler.rb +60 -0
  15. data/lib/language_operator/agent/task_executor.rb +548 -0
  16. data/lib/language_operator/agent.rb +90 -27
  17. data/lib/language_operator/cli/base_command.rb +117 -0
  18. data/lib/language_operator/cli/commands/agent.rb +351 -466
  19. data/lib/language_operator/cli/commands/cluster.rb +276 -256
  20. data/lib/language_operator/cli/commands/install.rb +110 -119
  21. data/lib/language_operator/cli/commands/model.rb +284 -184
  22. data/lib/language_operator/cli/commands/persona.rb +220 -289
  23. data/lib/language_operator/cli/commands/quickstart.rb +4 -5
  24. data/lib/language_operator/cli/commands/status.rb +36 -53
  25. data/lib/language_operator/cli/commands/system.rb +760 -0
  26. data/lib/language_operator/cli/commands/tool.rb +356 -422
  27. data/lib/language_operator/cli/commands/use.rb +19 -22
  28. data/lib/language_operator/cli/formatters/code_formatter.rb +3 -7
  29. data/lib/language_operator/cli/formatters/log_formatter.rb +3 -5
  30. data/lib/language_operator/cli/formatters/progress_formatter.rb +3 -7
  31. data/lib/language_operator/cli/formatters/status_formatter.rb +37 -0
  32. data/lib/language_operator/cli/formatters/table_formatter.rb +10 -26
  33. data/lib/language_operator/cli/helpers/pastel_helper.rb +24 -0
  34. data/lib/language_operator/cli/helpers/resource_dependency_checker.rb +0 -18
  35. data/lib/language_operator/cli/main.rb +4 -0
  36. data/lib/language_operator/cli/wizards/quickstart_wizard.rb +0 -1
  37. data/lib/language_operator/client/config.rb +20 -21
  38. data/lib/language_operator/config.rb +115 -3
  39. data/lib/language_operator/constants.rb +54 -0
  40. data/lib/language_operator/dsl/agent_context.rb +7 -7
  41. data/lib/language_operator/dsl/agent_definition.rb +111 -26
  42. data/lib/language_operator/dsl/config.rb +30 -66
  43. data/lib/language_operator/dsl/main_definition.rb +114 -0
  44. data/lib/language_operator/dsl/schema.rb +1143 -0
  45. data/lib/language_operator/dsl/task_definition.rb +315 -0
  46. data/lib/language_operator/dsl.rb +1 -1
  47. data/lib/language_operator/instrumentation/task_tracer.rb +285 -0
  48. data/lib/language_operator/logger.rb +4 -4
  49. data/lib/language_operator/synthesis_test_harness.rb +324 -0
  50. data/lib/language_operator/templates/README.md +23 -0
  51. data/lib/language_operator/templates/examples/agent_synthesis.tmpl +133 -0
  52. data/lib/language_operator/templates/examples/persona_distillation.tmpl +19 -0
  53. data/lib/language_operator/templates/schema/.gitkeep +0 -0
  54. data/lib/language_operator/templates/schema/CHANGELOG.md +119 -0
  55. data/lib/language_operator/templates/schema/agent_dsl_openapi.yaml +306 -0
  56. data/lib/language_operator/templates/schema/agent_dsl_schema.json +494 -0
  57. data/lib/language_operator/type_coercion.rb +250 -0
  58. data/lib/language_operator/ux/base.rb +81 -0
  59. data/lib/language_operator/ux/concerns/README.md +155 -0
  60. data/lib/language_operator/ux/concerns/headings.rb +90 -0
  61. data/lib/language_operator/ux/concerns/input_validation.rb +146 -0
  62. data/lib/language_operator/ux/concerns/provider_helpers.rb +167 -0
  63. data/lib/language_operator/ux/create_agent.rb +252 -0
  64. data/lib/language_operator/ux/create_model.rb +267 -0
  65. data/lib/language_operator/ux/quickstart.rb +594 -0
  66. data/lib/language_operator/version.rb +1 -1
  67. data/lib/language_operator.rb +2 -0
  68. data/requirements/ARCHITECTURE.md +1 -0
  69. data/requirements/SCRATCH.md +153 -0
  70. data/requirements/dsl.md +0 -0
  71. data/requirements/features +1 -0
  72. data/requirements/personas +1 -0
  73. data/requirements/proposals +1 -0
  74. data/requirements/tasks/iterate.md +14 -15
  75. data/requirements/tasks/optimize.md +13 -4
  76. data/synth/001/Makefile +90 -0
  77. data/synth/001/agent.rb +26 -0
  78. data/synth/001/agent.yaml +7 -0
  79. data/synth/001/output.log +44 -0
  80. data/synth/Makefile +39 -0
  81. data/synth/README.md +342 -0
  82. metadata +49 -18
  83. data/examples/README.md +0 -569
  84. data/examples/agent_example.rb +0 -86
  85. data/examples/chat_endpoint_agent.rb +0 -118
  86. data/examples/github_webhook_agent.rb +0 -171
  87. data/examples/mcp_agent.rb +0 -158
  88. data/examples/oauth_callback_agent.rb +0 -296
  89. data/examples/stripe_webhook_agent.rb +0 -219
  90. data/examples/webhook_agent.rb +0 -80
  91. data/lib/language_operator/dsl/workflow_definition.rb +0 -259
  92. data/test_agent_dsl.rb +0 -108
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'thor'
3
+ require_relative '../base_command'
4
4
  require_relative '../formatters/progress_formatter'
5
5
  require_relative '../formatters/table_formatter'
6
+ require_relative '../formatters/status_formatter'
7
+ require_relative '../helpers/pastel_helper'
6
8
  require_relative '../../config/cluster_config'
7
9
  require_relative '../../kubernetes/client'
8
10
  require_relative '../helpers/cluster_validator'
@@ -11,26 +13,26 @@ module LanguageOperator
11
13
  module CLI
12
14
  module Commands
13
15
  # System status and overview command
14
- class Status < Thor
16
+ class Status < BaseCommand
17
+ include Helpers::PastelHelper
18
+
15
19
  desc 'overview', 'Show system status and overview'
16
20
  def overview
17
- current_cluster = Config::ClusterConfig.current_cluster
18
- clusters = Config::ClusterConfig.list_clusters
19
-
20
- pastel = Pastel.new
21
-
22
- # Current cluster context
23
- if current_cluster
24
- cluster_config = Config::ClusterConfig.get_cluster(current_cluster)
25
-
26
- puts "\nCluster Details"
27
- puts '----------------'
28
- puts "Name: #{pastel.bold.white(current_cluster)}"
29
- puts "Namespace: #{pastel.bold.white(cluster_config[:namespace])}"
30
- puts
21
+ handle_command_error('retrieve cluster status') do
22
+ current_cluster = Config::ClusterConfig.current_cluster
23
+ clusters = Config::ClusterConfig.list_clusters
24
+
25
+ # Current cluster context
26
+ if current_cluster
27
+ cluster_config = Config::ClusterConfig.get_cluster(current_cluster)
28
+
29
+ puts "\nCluster Details"
30
+ puts '----------------'
31
+ puts "Name: #{pastel.bold.white(current_cluster)}"
32
+ puts "Namespace: #{pastel.bold.white(cluster_config[:namespace])}"
33
+ puts
31
34
 
32
- # Check cluster health
33
- begin
35
+ # Check cluster health
34
36
  k8s = Helpers::ClusterValidator.kubernetes_client(current_cluster)
35
37
 
36
38
  # Operator status
@@ -94,29 +96,25 @@ module LanguageOperator
94
96
  else
95
97
  puts ' (none)'
96
98
  end
97
- rescue StandardError => e
98
- Formatters::ProgressFormatter.error("Connection failed: #{e.message}")
99
+ else
100
+ Formatters::ProgressFormatter.warn('No cluster selected')
99
101
  puts
100
- puts 'Check your cluster connection and try again'
101
- end
102
- else
103
- Formatters::ProgressFormatter.warn('No cluster selected')
104
- puts
105
- if clusters.any?
106
- puts 'Available clusters:'
107
- clusters.each do |cluster|
108
- puts " - #{cluster[:name]}"
102
+ if clusters.any?
103
+ puts 'Available clusters:'
104
+ clusters.each do |cluster|
105
+ puts " - #{cluster[:name]}"
106
+ end
107
+ puts
108
+ puts 'Select a cluster with:'
109
+ puts ' aictl use <cluster>'
110
+ else
111
+ puts 'No clusters found. Create one with:'
112
+ puts ' aictl cluster create <name>'
109
113
  end
110
- puts
111
- puts 'Select a cluster with:'
112
- puts ' aictl use <cluster>'
113
- else
114
- puts 'No clusters found. Create one with:'
115
- puts ' aictl cluster create <name>'
116
114
  end
117
- end
118
115
 
119
- puts
116
+ puts
117
+ end
120
118
  end
121
119
 
122
120
  default_task :overview
@@ -124,22 +122,7 @@ module LanguageOperator
124
122
  private
125
123
 
126
124
  def format_status(status)
127
- require 'pastel'
128
- pastel = Pastel.new
129
-
130
- status_str = status.to_s
131
- case status_str.downcase
132
- when 'ready', 'running', 'active'
133
- "#{pastel.green('●')} #{status_str}"
134
- when 'pending', 'creating', 'synthesizing'
135
- "#{pastel.yellow('●')} #{status_str}"
136
- when 'failed', 'error'
137
- "#{pastel.red('●')} #{status_str}"
138
- when 'paused', 'stopped'
139
- "#{pastel.dim('●')} #{status_str}"
140
- else
141
- "#{pastel.dim('●')} #{status_str}"
142
- end
125
+ Formatters::StatusFormatter.format(status)
143
126
  end
144
127
 
145
128
  def categorize_by_status(resources)