aias 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +7 -0
  2. data/.envrc +1 -0
  3. data/.github/workflows/deploy-github-pages.yml +52 -0
  4. data/.ruby-version +1 -0
  5. data/CHANGELOG.md +140 -0
  6. data/COMMITS.md +196 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +249 -0
  9. data/Rakefile +27 -0
  10. data/aia_schedule_idea.md +256 -0
  11. data/docs/assets/images/logo.jpg +0 -0
  12. data/docs/cli/add.md +101 -0
  13. data/docs/cli/check.md +70 -0
  14. data/docs/cli/clear.md +45 -0
  15. data/docs/cli/dry-run.md +57 -0
  16. data/docs/cli/index.md +51 -0
  17. data/docs/cli/install.md +198 -0
  18. data/docs/cli/last.md +49 -0
  19. data/docs/cli/list.md +40 -0
  20. data/docs/cli/next.md +49 -0
  21. data/docs/cli/remove.md +87 -0
  22. data/docs/cli/show.md +54 -0
  23. data/docs/cli/uninstall.md +29 -0
  24. data/docs/cli/update.md +75 -0
  25. data/docs/getting-started/installation.md +69 -0
  26. data/docs/getting-started/quick-start.md +105 -0
  27. data/docs/guides/configuration-layering.md +168 -0
  28. data/docs/guides/cron-environment.md +112 -0
  29. data/docs/guides/scheduling-prompts.md +319 -0
  30. data/docs/guides/understanding-cron.md +134 -0
  31. data/docs/guides/validation.md +114 -0
  32. data/docs/index.md +100 -0
  33. data/docs/reference/api.md +409 -0
  34. data/docs/reference/architecture.md +122 -0
  35. data/docs/reference/environment.md +67 -0
  36. data/docs/reference/logging.md +73 -0
  37. data/example_prompts/code_health_check.md +51 -0
  38. data/example_prompts/daily_digest.md +19 -0
  39. data/example_prompts/morning_standup.md +19 -0
  40. data/example_prompts/reports/monthly_review.md +44 -0
  41. data/example_prompts/reports/weekly_summary.md +22 -0
  42. data/example_prompts/you_are_good.md +22 -0
  43. data/exe/aias +5 -0
  44. data/lib/aias/block_parser.rb +42 -0
  45. data/lib/aias/cli/add.rb +30 -0
  46. data/lib/aias/cli/check.rb +50 -0
  47. data/lib/aias/cli/clear.rb +11 -0
  48. data/lib/aias/cli/dry_run.rb +24 -0
  49. data/lib/aias/cli/install.rb +57 -0
  50. data/lib/aias/cli/last.rb +26 -0
  51. data/lib/aias/cli/list.rb +20 -0
  52. data/lib/aias/cli/next.rb +28 -0
  53. data/lib/aias/cli/remove.rb +14 -0
  54. data/lib/aias/cli/show.rb +18 -0
  55. data/lib/aias/cli/uninstall.rb +15 -0
  56. data/lib/aias/cli/update.rb +30 -0
  57. data/lib/aias/cli/version.rb +10 -0
  58. data/lib/aias/cli.rb +91 -0
  59. data/lib/aias/cron_describer.rb +142 -0
  60. data/lib/aias/crontab_manager.rb +140 -0
  61. data/lib/aias/env_file.rb +75 -0
  62. data/lib/aias/job_builder.rb +56 -0
  63. data/lib/aias/paths.rb +14 -0
  64. data/lib/aias/prompt_scanner.rb +111 -0
  65. data/lib/aias/schedule_config.rb +31 -0
  66. data/lib/aias/validator.rb +101 -0
  67. data/lib/aias/version.rb +5 -0
  68. data/lib/aias.rb +17 -0
  69. data/mkdocs.yml +137 -0
  70. data/sig/aias.rbs +4 -0
  71. metadata +191 -0
data/lib/aias.rb ADDED
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "zeitwerk"
4
+ require "thor"
5
+ require "fugit"
6
+ require "pm"
7
+
8
+ require_relative "aias/version"
9
+
10
+ loader = Zeitwerk::Loader.for_gem
11
+ loader.inflector.inflect("cli" => "CLI")
12
+ loader.ignore("#{__dir__}/aias/cli")
13
+ loader.setup
14
+
15
+ module Aias
16
+ class Error < StandardError; end
17
+ end
data/mkdocs.yml ADDED
@@ -0,0 +1,137 @@
1
+ # MkDocs Configuration for aias
2
+ site_name: aias
3
+ site_description: Schedule AIA prompts as cron jobs via frontmatter
4
+ site_author: Dewayne VanHoozer
5
+ site_url: https://madbomber.github.io/aias
6
+ copyright: Copyright &copy; 2025 Dewayne VanHoozer
7
+
8
+ # Repository information
9
+ repo_name: madbomber/aias
10
+ repo_url: https://github.com/madbomber/aias
11
+ edit_uri: edit/main/docs/
12
+
13
+ # Configuration
14
+ theme:
15
+ name: material
16
+
17
+ palette:
18
+ - scheme: default
19
+ primary: deep purple
20
+ accent: purple
21
+ toggle:
22
+ icon: material/brightness-7
23
+ name: Switch to dark mode
24
+
25
+ - scheme: slate
26
+ primary: deep purple
27
+ accent: purple
28
+ toggle:
29
+ icon: material/brightness-4
30
+ name: Switch to light mode
31
+
32
+ font:
33
+ text: Roboto
34
+ code: Roboto Mono
35
+
36
+ icon:
37
+ repo: fontawesome/brands/github
38
+ logo: material/clock-outline
39
+
40
+ features:
41
+ - navigation.instant
42
+ - navigation.tracking
43
+ - navigation.tabs
44
+ - navigation.tabs.sticky
45
+ - navigation.path
46
+ - navigation.indexes
47
+ - navigation.top
48
+ - navigation.footer
49
+ - toc.follow
50
+ - search.suggest
51
+ - search.highlight
52
+ - content.code.copy
53
+ - content.code.annotate
54
+ - content.tabs.link
55
+
56
+ # Plugins
57
+ plugins:
58
+ - search:
59
+ separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
60
+
61
+ # Extensions
62
+ markdown_extensions:
63
+ - abbr
64
+ - admonition
65
+ - attr_list
66
+ - def_list
67
+ - footnotes
68
+ - md_in_html
69
+ - tables
70
+ - toc:
71
+ permalink: true
72
+ title: On this page
73
+ - pymdownx.betterem:
74
+ smart_enable: all
75
+ - pymdownx.caret
76
+ - pymdownx.details
77
+ - pymdownx.emoji:
78
+ emoji_generator: !!python/name:material.extensions.emoji.to_svg
79
+ emoji_index: !!python/name:material.extensions.emoji.twemoji
80
+ - pymdownx.highlight:
81
+ anchor_linenums: true
82
+ line_spans: __span
83
+ pygments_lang_class: true
84
+ - pymdownx.inlinehilite
85
+ - pymdownx.keys
86
+ - pymdownx.magiclink:
87
+ repo_url_shorthand: true
88
+ user: madbomber
89
+ repo: aias
90
+ - pymdownx.mark
91
+ - pymdownx.smartsymbols
92
+ - pymdownx.superfences:
93
+ custom_fences:
94
+ - name: mermaid
95
+ class: mermaid
96
+ format: !!python/name:pymdownx.superfences.fence_code_format
97
+ - pymdownx.tabbed:
98
+ alternate_style: true
99
+ - pymdownx.tasklist:
100
+ custom_checkbox: true
101
+ - pymdownx.tilde
102
+
103
+ # Extra
104
+ extra:
105
+ social:
106
+ - icon: fontawesome/brands/github
107
+ link: https://github.com/madbomber/aias
108
+ name: aias on GitHub
109
+ - icon: fontawesome/solid/gem
110
+ link: https://rubygems.org/gems/aias
111
+ name: aias on RubyGems
112
+
113
+ # Navigation
114
+ nav:
115
+ - Home:
116
+ - Overview: index.md
117
+ - Getting Started:
118
+ - Installation: getting-started/installation.md
119
+ - Quick Start: getting-started/quick-start.md
120
+ - CLI:
121
+ - cli/index.md
122
+ - update: cli/update.md
123
+ - check: cli/check.md
124
+ - list: cli/list.md
125
+ - dry-run: cli/dry-run.md
126
+ - show: cli/show.md
127
+ - next: cli/next.md
128
+ - clear: cli/clear.md
129
+ - Guides:
130
+ - Scheduling Prompts: guides/scheduling-prompts.md
131
+ - Validation: guides/validation.md
132
+ - Cron Environment: guides/cron-environment.md
133
+ - Reference:
134
+ - Architecture: reference/architecture.md
135
+ - API: reference/api.md
136
+ - Environment Variables: reference/environment.md
137
+ - Logging: reference/logging.md
data/sig/aias.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Aias
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aias
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Dewayne VanHoozer
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: aia
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: prompt_manager
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: fugit
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: thor
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: zeitwerk
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ description: |
83
+ aias turns AIA prompt files into unattended cron jobs. Add a schedule: key
84
+ to any prompt's YAML frontmatter and run `aias update` to install the full
85
+ set, or `aias add <path>` to install a single prompt without touching the
86
+ rest. Schedules accept raw cron expressions or natural-language strings
87
+ ("every weekday at 9am"). Run `aias install` once to capture your PATH,
88
+ API keys, and AIA variables into env.sh — every job sources it at runtime.
89
+ Output is written to a per-prompt log under ~/.config/aia/schedule/logs/.
90
+ Prompts are self-describing — no separate configuration file is needed.
91
+ email:
92
+ - dewayne@vanhoozer.me
93
+ executables:
94
+ - aias
95
+ extensions: []
96
+ extra_rdoc_files: []
97
+ files:
98
+ - ".envrc"
99
+ - ".github/workflows/deploy-github-pages.yml"
100
+ - ".ruby-version"
101
+ - CHANGELOG.md
102
+ - COMMITS.md
103
+ - LICENSE.txt
104
+ - README.md
105
+ - Rakefile
106
+ - aia_schedule_idea.md
107
+ - docs/assets/images/logo.jpg
108
+ - docs/cli/add.md
109
+ - docs/cli/check.md
110
+ - docs/cli/clear.md
111
+ - docs/cli/dry-run.md
112
+ - docs/cli/index.md
113
+ - docs/cli/install.md
114
+ - docs/cli/last.md
115
+ - docs/cli/list.md
116
+ - docs/cli/next.md
117
+ - docs/cli/remove.md
118
+ - docs/cli/show.md
119
+ - docs/cli/uninstall.md
120
+ - docs/cli/update.md
121
+ - docs/getting-started/installation.md
122
+ - docs/getting-started/quick-start.md
123
+ - docs/guides/configuration-layering.md
124
+ - docs/guides/cron-environment.md
125
+ - docs/guides/scheduling-prompts.md
126
+ - docs/guides/understanding-cron.md
127
+ - docs/guides/validation.md
128
+ - docs/index.md
129
+ - docs/reference/api.md
130
+ - docs/reference/architecture.md
131
+ - docs/reference/environment.md
132
+ - docs/reference/logging.md
133
+ - example_prompts/code_health_check.md
134
+ - example_prompts/daily_digest.md
135
+ - example_prompts/morning_standup.md
136
+ - example_prompts/reports/monthly_review.md
137
+ - example_prompts/reports/weekly_summary.md
138
+ - example_prompts/you_are_good.md
139
+ - exe/aias
140
+ - lib/aias.rb
141
+ - lib/aias/block_parser.rb
142
+ - lib/aias/cli.rb
143
+ - lib/aias/cli/add.rb
144
+ - lib/aias/cli/check.rb
145
+ - lib/aias/cli/clear.rb
146
+ - lib/aias/cli/dry_run.rb
147
+ - lib/aias/cli/install.rb
148
+ - lib/aias/cli/last.rb
149
+ - lib/aias/cli/list.rb
150
+ - lib/aias/cli/next.rb
151
+ - lib/aias/cli/remove.rb
152
+ - lib/aias/cli/show.rb
153
+ - lib/aias/cli/uninstall.rb
154
+ - lib/aias/cli/update.rb
155
+ - lib/aias/cli/version.rb
156
+ - lib/aias/cron_describer.rb
157
+ - lib/aias/crontab_manager.rb
158
+ - lib/aias/env_file.rb
159
+ - lib/aias/job_builder.rb
160
+ - lib/aias/paths.rb
161
+ - lib/aias/prompt_scanner.rb
162
+ - lib/aias/schedule_config.rb
163
+ - lib/aias/validator.rb
164
+ - lib/aias/version.rb
165
+ - mkdocs.yml
166
+ - sig/aias.rbs
167
+ homepage: https://github.com/madbomber/aias
168
+ licenses:
169
+ - MIT
170
+ metadata:
171
+ homepage_uri: https://github.com/madbomber/aias
172
+ source_code_uri: https://github.com/madbomber/aias
173
+ changelog_uri: https://github.com/madbomber/aias/blob/main/CHANGELOG.md
174
+ rdoc_options: []
175
+ require_paths:
176
+ - lib
177
+ required_ruby_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: 3.2.0
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ requirements: []
188
+ rubygems_version: 4.0.8
189
+ specification_version: 4
190
+ summary: Schedule AIA prompts as cron jobs — no config file, just frontmatter
191
+ test_files: []