aircana 5.0.0 → 5.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d73e49573aa271b613f7ffb7c3b4280831c4e83ecc989df682c950578312177b
4
- data.tar.gz: c2d208809e1ba8edc1670cd6e85fa8b96d9362ece87b3d1607b5a9258c7fcb84
3
+ metadata.gz: 95a938c77f6d8d15d1cba3b11908ab82032e795e25c8dacdbea56f376b614f5f
4
+ data.tar.gz: ec70c8c5b5c068230259acec3e2196e888cb2e5a667f5745d5e003f547bad6a4
5
5
  SHA512:
6
- metadata.gz: 58eabb5e1645467d66ff0bd8fd287b6b4893ea4a312f7887578ab09cba5ee190d290351e50567e113ae1b0c6bc2d5e40f537369035d0607100c258aa2005394b
7
- data.tar.gz: e645fd6edef132a66844919cf3c512d5c296da858a09c161c0d8bbf108e96d393b4acb390001e69af8f20e1ec7b8429ddc333bf66165ebd3a78812417ab8aa1c
6
+ metadata.gz: cdbddc4bbf185b70b50236cd64c7014f2767c0e068d8940bd9e431b1f46df960ec5d42f45470bf0d91d929166d61522ca9d89b16b3efc9eace4d2e2ef114a986
7
+ data.tar.gz: 05b1846d8afdd1a1c3bbf98536fc38a693bd10a252958eab253c9acd4628f22ff96eb8991b0dc144bab06f13b695b66f832d7e0cd5030d8200657537a2000b50
data/.rspec_status CHANGED
@@ -1,187 +1,248 @@
1
1
  example_id | status | run_time |
2
2
  --------------------------------------------------------------- | ------ | --------------- |
3
- ./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.01134 seconds |
4
- ./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.01148 seconds |
5
- ./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00542 seconds |
6
- ./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00345 seconds |
7
- ./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00312 seconds |
8
- ./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00374 seconds |
9
- ./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00369 seconds |
10
- ./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00153 seconds |
11
- ./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00187 seconds |
12
- ./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00148 seconds |
13
- ./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00142 seconds |
14
- ./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00172 seconds |
15
- ./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.0032 seconds |
16
- ./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00419 seconds |
17
- ./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00522 seconds |
18
- ./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00482 seconds |
3
+ ./spec/aircana/checksum_spec.rb[1:1:1] | passed | 0.00411 seconds |
4
+ ./spec/aircana/checksum_spec.rb[1:1:2] | passed | 0.00004 seconds |
5
+ ./spec/aircana/checksum_spec.rb[1:1:3] | passed | 0.00003 seconds |
6
+ ./spec/aircana/checksum_spec.rb[1:1:4] | passed | 0.00057 seconds |
7
+ ./spec/aircana/checksum_spec.rb[1:1:5] | passed | 0.00003 seconds |
8
+ ./spec/aircana/checksum_spec.rb[1:2:1] | passed | 0.00043 seconds |
9
+ ./spec/aircana/checksum_spec.rb[1:2:2] | passed | 0.00003 seconds |
10
+ ./spec/aircana/checksum_spec.rb[1:2:3] | passed | 0.00003 seconds |
11
+ ./spec/aircana/checksum_spec.rb[1:2:4] | passed | 0.00003 seconds |
12
+ ./spec/aircana/checksum_spec.rb[1:2:5] | passed | 0.00002 seconds |
13
+ ./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.00897 seconds |
14
+ ./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00305 seconds |
15
+ ./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00473 seconds |
16
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00341 seconds |
17
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00325 seconds |
18
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00316 seconds |
19
+ ./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00343 seconds |
20
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00424 seconds |
21
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00139 seconds |
22
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00171 seconds |
23
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00126 seconds |
24
+ ./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00176 seconds |
25
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00329 seconds |
26
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00426 seconds |
27
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.0043 seconds |
28
+ ./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00434 seconds |
19
29
  ./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00045 seconds |
20
- ./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00228 seconds |
21
- ./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00199 seconds |
22
- ./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00214 seconds |
23
- ./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00183 seconds |
24
- ./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00034 seconds |
25
- ./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00145 seconds |
26
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00069 seconds |
27
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.00019 seconds |
28
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00017 seconds |
29
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00396 seconds |
30
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00097 seconds |
31
- ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00019 seconds |
32
- ./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00009 seconds |
30
+ ./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00192 seconds |
31
+ ./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00173 seconds |
32
+ ./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00228 seconds |
33
+ ./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00148 seconds |
34
+ ./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00029 seconds |
35
+ ./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00152 seconds |
36
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00067 seconds |
37
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.0002 seconds |
38
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00019 seconds |
39
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00192 seconds |
40
+ ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.0009 seconds |
41
+ ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00018 seconds |
42
+ ./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00008 seconds |
33
43
  ./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00007 seconds |
34
44
  ./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00008 seconds |
35
- ./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00008 seconds |
36
- ./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00008 seconds |
45
+ ./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00007 seconds |
46
+ ./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00007 seconds |
37
47
  ./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00007 seconds |
38
- ./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.00049 seconds |
39
- ./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.00019 seconds |
40
- ./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.00019 seconds |
41
- ./spec/aircana/configuration_spec.rb[1:7:4:1] | passed | 0.00009 seconds |
42
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.0027 seconds |
43
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.0006 seconds |
44
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.0013 seconds |
45
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00024 seconds |
46
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00021 seconds |
47
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00036 seconds |
48
- ./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00041 seconds |
49
- ./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.0004 seconds |
50
- ./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00061 seconds |
51
- ./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00035 seconds |
52
- ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00035 seconds |
53
- ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00035 seconds |
54
- ./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00035 seconds |
55
- ./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00041 seconds |
56
- ./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00074 seconds |
57
- ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00053 seconds |
58
- ./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00117 seconds |
59
- ./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00128 seconds |
60
- ./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00124 seconds |
61
- ./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00103 seconds |
62
- ./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00107 seconds |
63
- ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00026 seconds |
64
- ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00113 seconds |
65
- ./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00108 seconds |
66
- ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00102 seconds |
48
+ ./spec/aircana/configuration_spec.rb[1:7:1] | passed | 0.00007 seconds |
49
+ ./spec/aircana/configuration_spec.rb[1:7:2] | passed | 0.00007 seconds |
50
+ ./spec/aircana/configuration_spec.rb[1:7:3] | passed | 0.00007 seconds |
51
+ ./spec/aircana/configuration_spec.rb[1:7:4] | passed | 0.00007 seconds |
52
+ ./spec/aircana/configuration_spec.rb[1:7:5] | passed | 0.00007 seconds |
53
+ ./spec/aircana/configuration_spec.rb[1:7:6] | passed | 0.00007 seconds |
54
+ ./spec/aircana/configuration_spec.rb[1:8:1:1] | passed | 0.00051 seconds |
55
+ ./spec/aircana/configuration_spec.rb[1:8:2:1] | passed | 0.00028 seconds |
56
+ ./spec/aircana/configuration_spec.rb[1:8:3:1] | passed | 0.00026 seconds |
57
+ ./spec/aircana/configuration_spec.rb[1:8:4:1] | passed | 0.00011 seconds |
58
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00308 seconds |
59
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00065 seconds |
60
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00151 seconds |
61
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00032 seconds |
62
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00029 seconds |
63
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00021 seconds |
64
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00048 seconds |
65
+ ./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00049 seconds |
66
+ ./spec/aircana/contexts/confluence_spec.rb[1:2:1:1] | passed | 0.00048 seconds |
67
+ ./spec/aircana/contexts/confluence_spec.rb[1:2:1:2] | passed | 0.00033 seconds |
68
+ ./spec/aircana/contexts/confluence_spec.rb[1:2:1:3] | passed | 0.00031 seconds |
69
+ ./spec/aircana/contexts/confluence_spec.rb[1:2:1:4] | passed | 0.00061 seconds |
70
+ ./spec/aircana/contexts/confluence_spec.rb[1:2:2:1] | passed | 0.00026 seconds |
71
+ ./spec/aircana/contexts/confluence_spec.rb[1:2:2:2] | passed | 0.00024 seconds |
72
+ ./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00062 seconds |
73
+ ./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00036 seconds |
74
+ ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00038 seconds |
75
+ ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00033 seconds |
76
+ ./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00032 seconds |
77
+ ./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00031 seconds |
78
+ ./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00063 seconds |
79
+ ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00046 seconds |
80
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00108 seconds |
81
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00087 seconds |
82
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.0009 seconds |
83
+ ./spec/aircana/contexts/manifest_spec.rb[1:1:4] | passed | 0.00086 seconds |
84
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00098 seconds |
85
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00089 seconds |
86
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:3] | passed | 0.00098 seconds |
87
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:4] | passed | 0.00111 seconds |
88
+ ./spec/aircana/contexts/manifest_spec.rb[1:2:5] | passed | 0.00131 seconds |
89
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00097 seconds |
90
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.0002 seconds |
91
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00098 seconds |
92
+ ./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00087 seconds |
93
+ ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00088 seconds |
67
94
  ./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00021 seconds |
68
- ./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00086 seconds |
69
- ./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.0002 seconds |
70
- ./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00038 seconds |
71
- ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00019 seconds |
72
- ./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.0002 seconds |
73
- ./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.0002 seconds |
74
- ./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00036 seconds |
75
- ./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00033 seconds |
76
- ./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00022 seconds |
77
- ./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00022 seconds |
78
- ./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00021 seconds |
79
- ./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00022 seconds |
80
- ./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00103 seconds |
81
- ./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.00088 seconds |
82
- ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00022 seconds |
83
- ./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00018 seconds |
95
+ ./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00089 seconds |
96
+ ./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00089 seconds |
97
+ ./spec/aircana/contexts/manifest_spec.rb[1:5:3] | passed | 0.00022 seconds |
98
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00088 seconds |
99
+ ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00022 seconds |
100
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:1] | passed | 0.00023 seconds |
101
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:2] | passed | 0.00022 seconds |
102
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:3] | passed | 0.00022 seconds |
103
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:4] | passed | 0.00022 seconds |
104
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:5] | passed | 0.00028 seconds |
105
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:6] | passed | 0.00021 seconds |
106
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:7] | passed | 0.00019 seconds |
107
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:8] | passed | 0.0002 seconds |
108
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:9] | passed | 0.0002 seconds |
109
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:10] | passed | 0.00017 seconds |
110
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:11] | passed | 0.00082 seconds |
111
+ ./spec/aircana/contexts/manifest_spec.rb[1:7:12] | passed | 0.00081 seconds |
112
+ ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00032 seconds |
113
+ ./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.0002 seconds |
84
114
  ./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00012 seconds |
85
- ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.0001 seconds |
86
- ./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.0001 seconds |
115
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00012 seconds |
116
+ ./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00017 seconds |
87
117
  ./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00015 seconds |
88
118
  ./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00011 seconds |
89
- ./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00017 seconds |
90
- ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00028 seconds |
119
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00015 seconds |
120
+ ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00027 seconds |
91
121
  ./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00023 seconds |
92
122
  ./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00015 seconds |
93
123
  ./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00027 seconds |
94
- ./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00012 seconds |
95
- ./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00011 seconds |
124
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.0002 seconds |
125
+ ./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00012 seconds |
96
126
  ./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00011 seconds |
97
- ./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00078 seconds |
98
- ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00019 seconds |
99
- ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.0004 seconds |
100
- ./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.00024 seconds |
101
- ./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00023 seconds |
102
- ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00022 seconds |
103
- ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00012 seconds |
104
- ./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.0001 seconds |
105
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00018 seconds |
106
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00016 seconds |
107
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.0002 seconds |
108
- ./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00021 seconds |
109
- ./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00021 seconds |
110
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.0001 seconds |
127
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00118 seconds |
128
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00015 seconds |
129
+ ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00041 seconds |
130
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.00025 seconds |
131
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00024 seconds |
132
+ ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00021 seconds |
133
+ ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00011 seconds |
134
+ ./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00023 seconds |
135
+ ./spec/aircana/contexts/web_spec.rb[1:4:1:1] | passed | 0.00023 seconds |
136
+ ./spec/aircana/contexts/web_spec.rb[1:4:1:2] | passed | 0.00028 seconds |
137
+ ./spec/aircana/contexts/web_spec.rb[1:4:1:3] | passed | 0.00022 seconds |
138
+ ./spec/aircana/contexts/web_spec.rb[1:4:1:4] | passed | 0.00022 seconds |
139
+ ./spec/aircana/contexts/web_spec.rb[1:4:2:1] | passed | 0.00018 seconds |
140
+ ./spec/aircana/contexts/web_spec.rb[1:4:2:2] | passed | 0.00017 seconds |
141
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00016 seconds |
142
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00015 seconds |
143
+ ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00018 seconds |
144
+ ./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.0002 seconds |
145
+ ./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.0002 seconds |
146
+ ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00011 seconds |
111
147
  ./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.0001 seconds |
112
148
  ./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.0001 seconds |
113
149
  ./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.0001 seconds |
114
- ./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00008 seconds |
150
+ ./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00007 seconds |
115
151
  ./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00003 seconds |
116
152
  ./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00003 seconds |
117
- ./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00043 seconds |
118
- ./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00018 seconds |
153
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00038 seconds |
154
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.0002 seconds |
119
155
  ./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00009 seconds |
120
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00009 seconds |
121
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00003 seconds |
122
- ./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00057 seconds |
123
- ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00014 seconds |
124
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00056 seconds |
125
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00031 seconds |
126
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00029 seconds |
156
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.0001 seconds |
157
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00004 seconds |
158
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00054 seconds |
159
+ ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00015 seconds |
160
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00054 seconds |
161
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.0003 seconds |
162
+ ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.0003 seconds |
127
163
  ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00009 seconds |
128
164
  ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00007 seconds |
129
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00036 seconds |
130
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00019 seconds |
131
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.00018 seconds |
132
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00029 seconds |
133
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00048 seconds |
134
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00035 seconds |
135
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00022 seconds |
136
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.00032 seconds |
137
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.0003 seconds |
138
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.0002 seconds |
139
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00019 seconds |
140
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00018 seconds |
141
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00017 seconds |
142
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.0002 seconds |
143
- ./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00019 seconds |
144
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00022 seconds |
145
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00022 seconds |
146
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.0002 seconds |
147
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.0002 seconds |
148
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00023 seconds |
149
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00021 seconds |
150
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.0002 seconds |
151
- ./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00152 seconds |
152
- ./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00114 seconds |
153
- ./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00008 seconds |
165
+ ./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00034 seconds |
166
+ ./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00022 seconds |
167
+ ./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.0002 seconds |
168
+ ./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00033 seconds |
169
+ ./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00032 seconds |
170
+ ./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00028 seconds |
171
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00019 seconds |
172
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.0002 seconds |
173
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00021 seconds |
174
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00036 seconds |
175
+ ./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00024 seconds |
176
+ ./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00033 seconds |
177
+ ./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00018 seconds |
178
+ ./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00017 seconds |
179
+ ./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00016 seconds |
180
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00018 seconds |
181
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00017 seconds |
182
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00017 seconds |
183
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00017 seconds |
184
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00021 seconds |
185
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00023 seconds |
186
+ ./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00024 seconds |
187
+ ./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00195 seconds |
188
+ ./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00115 seconds |
189
+ ./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00007 seconds |
154
190
  ./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00004 seconds |
155
- ./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00007 seconds |
191
+ ./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00004 seconds |
156
192
  ./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00004 seconds |
157
193
  ./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00003 seconds |
158
- ./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00004 seconds |
194
+ ./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00003 seconds |
159
195
  ./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00003 seconds |
160
- ./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00006 seconds |
161
- ./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00005 seconds |
196
+ ./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00003 seconds |
197
+ ./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00003 seconds |
162
198
  ./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00003 seconds |
163
- ./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00004 seconds |
199
+ ./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00003 seconds |
164
200
  ./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00003 seconds |
165
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00051 seconds |
166
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00245 seconds |
167
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.00028 seconds |
168
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00067 seconds |
169
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00032 seconds |
170
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00028 seconds |
171
- ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00052 seconds |
172
- ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00028 seconds |
173
- ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00027 seconds |
174
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.0002 seconds |
175
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00018 seconds |
176
- ./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00026 seconds |
177
- ./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00045 seconds |
178
- ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00053 seconds |
179
- ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00025 seconds |
180
- ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00019 seconds |
181
- ./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00017 seconds |
182
- ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00018 seconds |
183
- ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00042 seconds |
184
- ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00034 seconds |
185
- ./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00019 seconds |
186
- ./spec/aircana_spec.rb[1:1] | passed | 0.00004 seconds |
187
- ./spec/aircana_spec.rb[1:2] | passed | 0.00086 seconds |
201
+ ./spec/aircana/llm/base_spec.rb[1:1:1] | passed | 0.00041 seconds |
202
+ ./spec/aircana/llm/base_spec.rb[1:2:1] | passed | 0.00017 seconds |
203
+ ./spec/aircana/llm/base_spec.rb[1:2:2] | passed | 0.00015 seconds |
204
+ ./spec/aircana/llm/base_spec.rb[1:2:3] | passed | 0.00015 seconds |
205
+ ./spec/aircana/llm/base_spec.rb[1:3:1:1] | passed | 0.00025 seconds |
206
+ ./spec/aircana/llm/base_spec.rb[1:3:2:1] | passed | 0.00023 seconds |
207
+ ./spec/aircana/llm/base_spec.rb[1:3:2:2] | passed | 0.00026 seconds |
208
+ ./spec/aircana/llm/base_spec.rb[1:3:3:1] | passed | 0.00021 seconds |
209
+ ./spec/aircana/llm/base_spec.rb[1:3:3:2] | passed | 0.00015 seconds |
210
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:1] | passed | 0.08743 seconds |
211
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:2] | passed | 0.00056 seconds |
212
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:3] | passed | 0.00032 seconds |
213
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:4] | passed | 0.00035 seconds |
214
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:5] | passed | 0.00041 seconds |
215
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:6] | passed | 0.00035 seconds |
216
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:7] | passed | 0.00036 seconds |
217
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:2:1] | passed | 0.00032 seconds |
218
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:2:2] | passed | 0.00027 seconds |
219
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:1:3:1] | passed | 0.00032 seconds |
220
+ ./spec/aircana/llm/bedrock_client_spec.rb[1:2:1] | passed | 0.00016 seconds |
221
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00034 seconds |
222
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00033 seconds |
223
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.0011 seconds |
224
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00118 seconds |
225
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00141 seconds |
226
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.00224 seconds |
227
+ ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00129 seconds |
228
+ ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.0019 seconds |
229
+ ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00238 seconds |
230
+ ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00086 seconds |
231
+ ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00079 seconds |
232
+ ./spec/aircana/llm_spec.rb[1:1:1:1] | passed | 0.00012 seconds |
233
+ ./spec/aircana/llm_spec.rb[1:1:1:2] | passed | 0.00008 seconds |
234
+ ./spec/aircana/llm_spec.rb[1:1:2:1] | passed | 0.00008 seconds |
235
+ ./spec/aircana/llm_spec.rb[1:1:3:1] | passed | 0.00015 seconds |
236
+ ./spec/aircana/llm_spec.rb[1:1:3:2] | passed | 0.00012 seconds |
237
+ ./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00044 seconds |
238
+ ./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.0004 seconds |
239
+ ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00069 seconds |
240
+ ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00022 seconds |
241
+ ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.0002 seconds |
242
+ ./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00036 seconds |
243
+ ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00022 seconds |
244
+ ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00023 seconds |
245
+ ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00027 seconds |
246
+ ./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00016 seconds |
247
+ ./spec/aircana_spec.rb[1:1] | passed | 0.00003 seconds |
248
+ ./spec/aircana_spec.rb[1:2] | passed | 0.00106 seconds |
data/CHANGELOG.md CHANGED
@@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [5.1.1]
9
+
10
+ ### Fixed
11
+ - Fixed agent color changing randomly on KB refresh
12
+ - Colors are now persisted in manifest.json
13
+ - On first refresh after upgrade, the generated color is stored in the manifest
14
+ - Subsequent refreshes read the color from manifest, ensuring consistency
15
+ - Added `color` field to manifest schema (backward compatible)
16
+ - Added `color_from_manifest()` helper method to Manifest class
17
+
18
+ ## [5.1.0]
19
+
20
+ ### Added
21
+ - Configurable LLM provider for summary/title generation
22
+ - New environment variable `AIRCANA_LLM_PROVIDER` to switch between providers
23
+ - Supports `claude` (default) and `bedrock` providers
24
+ - Claude provider uses Claude Code CLI for LLM calls
25
+ - Bedrock provider uses AWS Bedrock Runtime API with configurable region and model
26
+ - AWS Bedrock integration as alternative LLM provider
27
+ - New environment variables: `AIRCANA_BEDROCK_REGION` (default: `us-east-1`), `AIRCANA_BEDROCK_MODEL` (default: `anthropic.claude-3-haiku-20240307-v1:0`)
28
+ - Uses standard AWS credential chain for authentication
29
+ - Added `aws-sdk-bedrockruntime` as a bundled dependency
30
+ - New `Aircana::LLM` module with factory pattern
31
+ - `Aircana::LLM.client` returns configured provider instance
32
+ - Base class with shared functionality (spinner, content truncation)
33
+ - Unknown providers fall back to Claude with warning
34
+
35
+ ### Changed
36
+ - Refactored `ClaudeClient` to inherit from new `LLM::Base` class
37
+ - Web and Confluence contexts now use `Aircana::LLM.client` factory instead of direct `ClaudeClient` instantiation
38
+
8
39
  ## [5.0.0]
9
40
 
10
41
  ### Removed
data/README.md CHANGED
@@ -458,6 +458,40 @@ export CONFLUENCE_USERNAME="your.email@company.com"
458
458
  export CONFLUENCE_API_TOKEN="your-generated-token"
459
459
  ```
460
460
 
461
+ ### LLM Provider Setup (Optional)
462
+
463
+ Aircana uses an LLM to generate summaries and titles for knowledge base content. By default, it uses the Claude Code CLI, but you can configure it to use AWS Bedrock instead.
464
+
465
+ #### Environment Variables
466
+
467
+ ```bash
468
+ # Provider selection (default: claude)
469
+ export AIRCANA_LLM_PROVIDER="claude" # or "bedrock"
470
+
471
+ # Bedrock-specific settings (only used when provider is "bedrock")
472
+ export AIRCANA_BEDROCK_REGION="us-east-1" # default
473
+ export AIRCANA_BEDROCK_MODEL="anthropic.claude-3-haiku-20240307-v1:0" # default
474
+ ```
475
+
476
+ #### Using AWS Bedrock
477
+
478
+ To use Bedrock instead of the Claude Code CLI:
479
+
480
+ 1. **Configure AWS credentials** using any standard method (environment variables, IAM role, credentials file, etc.)
481
+
482
+ 2. **Set the provider:**
483
+ ```bash
484
+ export AIRCANA_LLM_PROVIDER="bedrock"
485
+ ```
486
+
487
+ 3. **Optionally configure region and model:**
488
+ ```bash
489
+ export AIRCANA_BEDROCK_REGION="us-west-2"
490
+ export AIRCANA_BEDROCK_MODEL="anthropic.claude-3-sonnet-20240229-v1:0"
491
+ ```
492
+
493
+ The Bedrock provider is useful in environments where the Claude Code CLI is not available or when you prefer to use your AWS infrastructure for LLM calls.
494
+
461
495
  ### SQS Notifications Setup (Optional)
462
496
 
463
497
  To enable SQS notifications for Claude Code events (useful for Slack/Teams integration):
data/exe/aircana CHANGED
@@ -8,6 +8,9 @@ Aircana.configure do |config|
8
8
  config.confluence_base_url = ENV.fetch("CONFLUENCE_BASE_URL", nil)
9
9
  config.confluence_username = ENV.fetch("CONFLUENCE_USERNAME", nil)
10
10
  config.confluence_api_token = ENV.fetch("CONFLUENCE_API_TOKEN", nil)
11
+ config.llm_provider = ENV.fetch("AIRCANA_LLM_PROVIDER", nil)
12
+ config.bedrock_region = ENV.fetch("AIRCANA_BEDROCK_REGION", nil)
13
+ config.bedrock_model = ENV.fetch("AIRCANA_BEDROCK_MODEL", nil)
11
14
  end
12
15
 
13
16
  Aircana::CLI::App.start(ARGV)
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "digest"
4
+
5
+ module Aircana
6
+ module Checksum
7
+ def self.compute(content)
8
+ return nil if content.nil? || content.empty?
9
+
10
+ "sha256:#{Digest::SHA256.hexdigest(content)}"
11
+ end
12
+
13
+ def self.match?(stored_checksum, content)
14
+ return false if stored_checksum.nil? || content.nil?
15
+
16
+ compute(content) == stored_checksum
17
+ end
18
+ end
19
+ end
@@ -189,15 +189,24 @@ module Aircana
189
189
  def regenerate_agent_md(kb_name)
190
190
  return unless Aircana::Contexts::Manifest.manifest_exists?(kb_name)
191
191
 
192
- # Generate agent from manifest
193
192
  generator = Generators::AgentsGenerator.from_manifest(kb_name)
194
-
195
193
  generator.generate
194
+
195
+ persist_color_if_needed(kb_name, generator.color)
196
+
196
197
  Aircana.human_logger.success "Generated agent for '#{kb_name}'"
197
198
  rescue StandardError => e
198
199
  Aircana.human_logger.warn "Failed to generate agent: #{e.message}"
199
200
  end
200
201
 
202
+ def persist_color_if_needed(kb_name, color)
203
+ existing_color = Aircana::Contexts::Manifest.color_from_manifest(kb_name)
204
+ return if existing_color
205
+
206
+ sources = Aircana::Contexts::Manifest.sources_from_manifest(kb_name)
207
+ Aircana::Contexts::Manifest.update_manifest(kb_name, sources, color: color)
208
+ end
209
+
201
210
  def log_no_pages_found(normalized_kb_name)
202
211
  Aircana.human_logger.info "No pages found for KB '#{normalized_kb_name}'. " \
203
212
  "Make sure pages are labeled with '#{normalized_kb_name}' in Confluence."
@@ -7,7 +7,8 @@ module Aircana
7
7
  attr_accessor :global_dir, :project_dir, :stream, :output_dir,
8
8
  :claude_code_config_path, :claude_code_project_config_path, :kb_knowledge_dir,
9
9
  :hooks_dir, :scripts_dir, :confluence_base_url, :confluence_username, :confluence_api_token,
10
- :plugin_root, :plugin_manifest_dir, :commands_dir, :skills_dir, :agents_dir
10
+ :plugin_root, :plugin_manifest_dir, :commands_dir, :skills_dir, :agents_dir,
11
+ :llm_provider, :bedrock_region, :bedrock_model
11
12
 
12
13
  def initialize
13
14
  setup_directory_paths
@@ -15,6 +16,7 @@ module Aircana
15
16
  setup_claude_code_paths
16
17
  setup_stream
17
18
  setup_confluence_config
19
+ setup_llm_config
18
20
  end
19
21
 
20
22
  # Returns true if the current directory is a plugin (has .claude-plugin/plugin.json)
@@ -116,5 +118,11 @@ module Aircana
116
118
  @confluence_username = nil
117
119
  @confluence_api_token = nil
118
120
  end
121
+
122
+ def setup_llm_config
123
+ @llm_provider = nil
124
+ @bedrock_region = nil
125
+ @bedrock_model = nil
126
+ end
119
127
  end
120
128
  end
@@ -81,10 +81,11 @@ module Aircana
81
81
 
82
82
  def process_pages_with_manifest(pages, kb_name, label = nil)
83
83
  page_metadata = []
84
+ existing_metadata = load_existing_page_metadata(kb_name)
84
85
 
85
86
  ProgressTracker.with_batch_progress(pages, "Processing pages") do |page, _index|
86
87
  store_page_as_markdown(page, kb_name)
87
- page_metadata << extract_page_metadata(page)
88
+ page_metadata << extract_page_metadata(page, existing_metadata: existing_metadata)
88
89
  end
89
90
 
90
91
  build_source_metadata(kb_name, page_metadata, label)
@@ -92,22 +93,46 @@ module Aircana
92
93
 
93
94
  private
94
95
 
95
- def extract_page_metadata(page)
96
+ def load_existing_page_metadata(kb_name)
97
+ sources = Manifest.sources_from_manifest(kb_name)
98
+ confluence_sources = sources.select { |s| s["type"] == "confluence" }
99
+ return {} if confluence_sources.empty?
100
+
101
+ metadata = {}
102
+ confluence_sources.each do |source|
103
+ (source["pages"] || []).each do |page|
104
+ metadata[page["id"]] = page
105
+ end
106
+ end
107
+ metadata
108
+ end
109
+
110
+ def extract_page_metadata(page, existing_metadata: nil)
111
+ existing_metadata ||= {}
96
112
  content = page&.dig("body", "storage", "value") || ""
97
113
  markdown_content = convert_to_markdown(content)
98
114
  title = page["title"] || "Confluence page"
99
- summary = generate_summary(markdown_content, title)
115
+ content_checksum = Aircana::Checksum.compute(markdown_content)
116
+
117
+ existing = existing_metadata[page["id"]]
118
+ summary = if existing && Aircana::Checksum.match?(existing["content_checksum"], markdown_content)
119
+ Aircana.human_logger.info("Content unchanged for '#{title}', reusing summary")
120
+ existing["summary"]
121
+ else
122
+ generate_summary(markdown_content, title)
123
+ end
100
124
 
101
125
  {
102
126
  "id" => page["id"],
103
127
  "title" => title,
104
- "summary" => summary
128
+ "summary" => summary,
129
+ "content_checksum" => content_checksum
105
130
  }
106
131
  end
107
132
 
108
133
  def generate_summary(content, title)
109
134
  prompt = build_summary_prompt(content, title)
110
- LLM::ClaudeClient.new.prompt(prompt).strip
135
+ Aircana::LLM.client.prompt(prompt).strip
111
136
  rescue StandardError => e
112
137
  Aircana.human_logger.warn("Failed to generate summary: #{e.message}")
113
138
  # Fallback to title or truncated content
@@ -7,11 +7,11 @@ module Aircana
7
7
  module Contexts
8
8
  class Manifest
9
9
  class << self
10
- def create_manifest(kb_name, sources)
10
+ def create_manifest(kb_name, sources, color: nil)
11
11
  validate_sources(sources)
12
12
 
13
13
  manifest_path = manifest_path_for(kb_name)
14
- manifest_data = build_manifest_data(kb_name, sources)
14
+ manifest_data = build_manifest_data(kb_name, sources, color)
15
15
 
16
16
  FileUtils.mkdir_p(File.dirname(manifest_path))
17
17
  File.write(manifest_path, JSON.pretty_generate(manifest_data))
@@ -20,7 +20,7 @@ module Aircana
20
20
  manifest_path
21
21
  end
22
22
 
23
- def update_manifest(kb_name, sources)
23
+ def update_manifest(kb_name, sources, color: nil)
24
24
  validate_sources(sources)
25
25
 
26
26
  manifest_path = manifest_path_for(kb_name)
@@ -29,8 +29,9 @@ module Aircana
29
29
  existing_data = JSON.parse(File.read(manifest_path))
30
30
  manifest_data = existing_data.merge({ "sources" => sources })
31
31
  manifest_data.delete("kb_type")
32
+ manifest_data["color"] = color if color
32
33
  else
33
- manifest_data = build_manifest_data(kb_name, sources)
34
+ manifest_data = build_manifest_data(kb_name, sources, color)
34
35
  end
35
36
 
36
37
  FileUtils.mkdir_p(File.dirname(manifest_path))
@@ -62,6 +63,13 @@ module Aircana
62
63
  manifest["sources"] || []
63
64
  end
64
65
 
66
+ def color_from_manifest(kb_name)
67
+ manifest = read_manifest(kb_name)
68
+ return nil unless manifest
69
+
70
+ manifest["color"]
71
+ end
72
+
65
73
  def manifest_exists?(kb_name)
66
74
  File.exist?(manifest_path_for(kb_name))
67
75
  end
@@ -77,12 +85,14 @@ module Aircana
77
85
  File.join(Aircana.configuration.kb_knowledge_dir, kb_name)
78
86
  end
79
87
 
80
- def build_manifest_data(kb_name, sources)
81
- {
88
+ def build_manifest_data(kb_name, sources, color = nil)
89
+ data = {
82
90
  "version" => "1.0",
83
91
  "name" => kb_name,
84
92
  "sources" => sources
85
93
  }
94
+ data["color"] = color if color
95
+ data
86
96
  end
87
97
 
88
98
  def validate_manifest(manifest_data)
@@ -7,7 +7,6 @@ require_relative "local"
7
7
  require_relative "manifest"
8
8
  require_relative "../progress_tracker"
9
9
  require_relative "../version"
10
- require_relative "../llm/claude_client"
11
10
 
12
11
  module Aircana
13
12
  module Contexts
@@ -22,26 +21,27 @@ module Aircana
22
21
  @local_storage = Local.new
23
22
  end
24
23
 
25
- def fetch_url_for(kb_name:, url:)
24
+ def fetch_url_for(kb_name:, url:, existing_metadata: nil)
26
25
  validate_url!(url)
27
26
 
28
27
  page_data = fetch_and_process_url(url)
29
28
  store_page_as_markdown(page_data, kb_name)
30
29
 
31
- build_url_metadata(page_data)
30
+ build_url_metadata(page_data, existing_metadata: existing_metadata)
32
31
  rescue StandardError => e
33
32
  handle_fetch_error(url, e)
34
33
  nil
35
34
  end
36
35
 
37
- def fetch_urls_for(kb_name:, urls:) # rubocop:disable Metrics/MethodLength
36
+ def fetch_urls_for(kb_name:, urls:, existing_metadata: nil) # rubocop:disable Metrics/MethodLength
38
37
  return { pages_count: 0, sources: [] } if urls.empty?
39
38
 
39
+ existing_metadata ||= load_existing_url_metadata(kb_name)
40
40
  pages_metadata = []
41
41
  successful_urls = []
42
42
 
43
43
  ProgressTracker.with_batch_progress(urls, "Fetching URLs") do |url, _index|
44
- metadata = fetch_url_for(kb_name: kb_name, url: url)
44
+ metadata = fetch_url_for(kb_name: kb_name, url: url, existing_metadata: existing_metadata)
45
45
  if metadata
46
46
  pages_metadata << metadata
47
47
  successful_urls << url
@@ -66,7 +66,8 @@ module Aircana
66
66
  all_urls = web_sources.flat_map { |source| source["urls"]&.map { |u| u["url"] } || [] }
67
67
  return { pages_count: 0, sources: [] } if all_urls.empty?
68
68
 
69
- fetch_urls_for(kb_name: kb_name, urls: all_urls)
69
+ existing_metadata = load_existing_url_metadata(kb_name)
70
+ fetch_urls_for(kb_name: kb_name, urls: all_urls, existing_metadata: existing_metadata)
70
71
  end
71
72
 
72
73
  private
@@ -162,8 +163,7 @@ module Aircana
162
163
 
163
164
  def generate_title_with_claude(content, url)
164
165
  prompt = build_title_generation_prompt(content, url)
165
- claude_client = LLM::ClaudeClient.new
166
- claude_client.prompt(prompt).strip
166
+ Aircana::LLM.client.prompt(prompt).strip
167
167
  end
168
168
 
169
169
  def build_title_generation_prompt(content, url) # rubocop:disable Metrics/MethodLength
@@ -208,18 +208,41 @@ module Aircana
208
208
  )
209
209
  end
210
210
 
211
- def build_url_metadata(page_data)
212
- summary = generate_summary(page_data[:content], page_data[:title], page_data[:url])
211
+ def load_existing_url_metadata(kb_name)
212
+ sources = Manifest.sources_from_manifest(kb_name)
213
+ web_sources = sources.select { |s| s["type"] == "web" }
214
+ return {} if web_sources.empty?
213
215
 
214
- {
215
- "url" => page_data[:url],
216
- "summary" => summary
217
- }
216
+ metadata = {}
217
+ web_sources.each do |source|
218
+ (source["urls"] || []).each do |url_entry|
219
+ metadata[url_entry["url"]] = url_entry
220
+ end
221
+ end
222
+ metadata
223
+ end
224
+
225
+ def build_url_metadata(page_data, existing_metadata: nil)
226
+ existing_metadata ||= {}
227
+ content_checksum = Aircana::Checksum.compute(page_data[:content])
228
+ existing = existing_metadata[page_data[:url]]
229
+ summary = resolve_summary(page_data, existing)
230
+
231
+ { "url" => page_data[:url], "summary" => summary, "content_checksum" => content_checksum }
232
+ end
233
+
234
+ def resolve_summary(page_data, existing)
235
+ if existing && Aircana::Checksum.match?(existing["content_checksum"], page_data[:content])
236
+ Aircana.human_logger.info("Content unchanged for '#{page_data[:title]}', reusing summary")
237
+ existing["summary"]
238
+ else
239
+ generate_summary(page_data[:content], page_data[:title], page_data[:url])
240
+ end
218
241
  end
219
242
 
220
243
  def generate_summary(content, title, url)
221
244
  prompt = build_summary_prompt(content, title, url)
222
- LLM::ClaudeClient.new.prompt(prompt).strip
245
+ Aircana::LLM.client.prompt(prompt).strip
223
246
  rescue StandardError => e
224
247
  Aircana.human_logger.warn("Failed to generate summary: #{e.message}")
225
248
  # Fallback to title or truncated content
@@ -23,17 +23,17 @@ module Aircana
23
23
  )
24
24
  end
25
25
 
26
- # Generate agent markdown from manifest data
27
26
  def self.from_manifest(kb_name)
28
27
  manifest = Contexts::Manifest.read_manifest(kb_name)
29
28
  raise Error, "No manifest found for knowledge base '#{kb_name}'" unless manifest
30
29
 
31
- # Use the same description generation as skills
32
30
  agent_description = generate_agent_description_from_manifest(manifest, kb_name)
31
+ color = manifest["color"]
33
32
 
34
33
  new(
35
34
  kb_name: kb_name,
36
- agent_description: agent_description
35
+ agent_description: agent_description,
36
+ color: color
37
37
  )
38
38
  end
39
39
 
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "tty-spinner"
4
+
5
+ module Aircana
6
+ module LLM
7
+ class Base
8
+ def initialize
9
+ @spinner = nil
10
+ end
11
+
12
+ def prompt(text)
13
+ raise NotImplementedError, "Subclasses must implement #prompt"
14
+ end
15
+
16
+ protected
17
+
18
+ def truncate_content(content, max_length = 2000)
19
+ return content if content.length <= max_length
20
+
21
+ "#{content[0..max_length]}..."
22
+ end
23
+
24
+ def start_spinner(message)
25
+ @spinner = TTY::Spinner.new("[:spinner] #{message}", format: :dots)
26
+ @spinner.auto_spin
27
+ end
28
+
29
+ def success_spinner(message)
30
+ return unless @spinner
31
+
32
+ @spinner.stop("✓")
33
+ puts message
34
+ end
35
+
36
+ def error_spinner(message)
37
+ return unless @spinner
38
+
39
+ @spinner.stop("✗")
40
+ puts message
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "aws-sdk-bedrockruntime"
4
+ require_relative "base"
5
+
6
+ module Aircana
7
+ module LLM
8
+ class BedrockClient < Base
9
+ DEFAULT_REGION = "us-east-1"
10
+ DEFAULT_MODEL = "anthropic.claude-3-haiku-20240307-v1:0"
11
+
12
+ def prompt(text)
13
+ start_spinner("Generating response with Bedrock...")
14
+
15
+ begin
16
+ result = invoke_bedrock(text)
17
+ success_spinner("Generated response with Bedrock")
18
+ result.strip
19
+ rescue StandardError => e
20
+ error_spinner("Failed to generate response: #{e.message}")
21
+ raise Error, "Bedrock request failed: #{e.message}"
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def invoke_bedrock(text)
28
+ client = build_client
29
+ response = client.invoke_model(
30
+ model_id: model_id,
31
+ content_type: "application/json",
32
+ accept: "application/json",
33
+ body: build_request_body(text)
34
+ )
35
+
36
+ parse_response(response)
37
+ end
38
+
39
+ def build_client
40
+ Aws::BedrockRuntime::Client.new(region: region)
41
+ end
42
+
43
+ def region
44
+ Aircana.configuration.bedrock_region || DEFAULT_REGION
45
+ end
46
+
47
+ def model_id
48
+ Aircana.configuration.bedrock_model || DEFAULT_MODEL
49
+ end
50
+
51
+ def build_request_body(text)
52
+ {
53
+ anthropic_version: "bedrock-2023-05-31",
54
+ max_tokens: 1024,
55
+ messages: [
56
+ {
57
+ role: "user",
58
+ content: text
59
+ }
60
+ ]
61
+ }.to_json
62
+ end
63
+
64
+ def parse_response(response)
65
+ body = JSON.parse(response.body.read)
66
+ content = body.dig("content", 0, "text")
67
+ raise Error, "No content in Bedrock response" unless content
68
+
69
+ content
70
+ end
71
+ end
72
+ end
73
+ end
@@ -1,15 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "English"
4
- require "tty-spinner"
4
+ require_relative "base"
5
5
 
6
6
  module Aircana
7
7
  module LLM
8
- class ClaudeClient
9
- def initialize
10
- @spinner = nil
11
- end
12
-
8
+ class ClaudeClient < Base
13
9
  def prompt(text)
14
10
  start_spinner("Generating response with Claude...")
15
11
 
@@ -25,25 +21,6 @@ module Aircana
25
21
 
26
22
  private
27
23
 
28
- def start_spinner(message)
29
- @spinner = TTY::Spinner.new("[:spinner] #{message}", format: :dots)
30
- @spinner.auto_spin
31
- end
32
-
33
- def success_spinner(message)
34
- return unless @spinner
35
-
36
- @spinner.stop("✓")
37
- puts message
38
- end
39
-
40
- def error_spinner(message)
41
- return unless @spinner
42
-
43
- @spinner.stop("✗")
44
- puts message
45
- end
46
-
47
24
  def execute_claude_command(text)
48
25
  command = build_claude_command(text)
49
26
  execute_system_command(command)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aircana
4
- VERSION = "5.0.0"
4
+ VERSION = "5.1.1"
5
5
  end
data/lib/aircana.rb CHANGED
@@ -10,11 +10,36 @@ require_relative "aircana/system_checker"
10
10
  require_relative "aircana/progress_tracker"
11
11
  require_relative "aircana/cli"
12
12
  require_relative "aircana/generators"
13
+ require_relative "aircana/checksum"
13
14
  require_relative "aircana/contexts/confluence"
14
15
  require_relative "aircana/contexts/local"
16
+ require_relative "aircana/llm/base"
15
17
  require_relative "aircana/llm/claude_client"
16
18
 
17
19
  module Aircana
20
+ module LLM
21
+ class << self
22
+ def client
23
+ case provider
24
+ when "bedrock"
25
+ require_relative "aircana/llm/bedrock_client"
26
+ BedrockClient.new
27
+ when "claude", nil
28
+ ClaudeClient.new
29
+ else
30
+ Aircana.human_logger.warn("Unknown LLM provider '#{provider}', falling back to Claude")
31
+ ClaudeClient.new
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def provider
38
+ Aircana.configuration.llm_provider
39
+ end
40
+ end
41
+ end
42
+
18
43
  class Error < StandardError; end
19
44
 
20
45
  class << self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aircana
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Weston Dransfield
@@ -9,6 +9,20 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 2026-01-28 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: aws-sdk-bedrockruntime
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: httparty
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +132,7 @@ files:
118
132
  - compose.yml
119
133
  - exe/aircana
120
134
  - lib/aircana.rb
135
+ - lib/aircana/checksum.rb
121
136
  - lib/aircana/cli.rb
122
137
  - lib/aircana/cli/app.rb
123
138
  - lib/aircana/cli/commands/doctor.rb
@@ -152,6 +167,8 @@ files:
152
167
  - lib/aircana/hooks_manifest.rb
153
168
  - lib/aircana/human_logger.rb
154
169
  - lib/aircana/initializers.rb
170
+ - lib/aircana/llm/base.rb
171
+ - lib/aircana/llm/bedrock_client.rb
155
172
  - lib/aircana/llm/claude_client.rb
156
173
  - lib/aircana/plugin_manifest.rb
157
174
  - lib/aircana/progress_tracker.rb