aircana 5.0.0.rc1 → 5.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.
- checksums.yaml +4 -4
- data/.rspec_status +185 -154
- data/CHANGELOG.md +21 -0
- data/README.md +34 -0
- data/exe/aircana +3 -0
- data/lib/aircana/configuration.rb +9 -1
- data/lib/aircana/contexts/confluence.rb +1 -1
- data/lib/aircana/contexts/web.rb +2 -4
- data/lib/aircana/llm/base.rb +44 -0
- data/lib/aircana/llm/bedrock_client.rb +73 -0
- data/lib/aircana/llm/claude_client.rb +2 -25
- data/lib/aircana/version.rb +1 -1
- data/lib/aircana.rb +24 -0
- metadata +17 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 55807d6edd89694032c820749a8dc71dfdbd0917afe1b73edda46945cb46b9fc
|
|
4
|
+
data.tar.gz: ea1a40792d07da18d7fc9562a0055c667b7ab049d7b422f5cd9d9adef0723b43
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d35849874537a3aeb859aaca83bc0cab8788db03adcabe98c514a3c53dc6995599a135fbf8b374779386d4b24692cf37a20e1802480a96e390364e482945021
|
|
7
|
+
data.tar.gz: aa6ccabe36cf741a2d5a2783a61eabc079941d85301fc7afc46c57531bf6d215584f630ccf1a84ff698463724fced8b985ec93a22edb3f21401842b000a74c69
|
data/.rspec_status
CHANGED
|
@@ -1,84 +1,90 @@
|
|
|
1
1
|
example_id | status | run_time |
|
|
2
2
|
--------------------------------------------------------------- | ------ | --------------- |
|
|
3
|
-
./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.
|
|
4
|
-
./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.
|
|
5
|
-
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.
|
|
6
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.
|
|
7
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.
|
|
8
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.
|
|
9
|
-
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.
|
|
10
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.
|
|
11
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.
|
|
12
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.
|
|
3
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.01462 seconds |
|
|
4
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00385 seconds |
|
|
5
|
+
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00515 seconds |
|
|
6
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00472 seconds |
|
|
7
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00301 seconds |
|
|
8
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00347 seconds |
|
|
9
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00381 seconds |
|
|
10
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00159 seconds |
|
|
11
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00169 seconds |
|
|
12
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00154 seconds |
|
|
13
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.
|
|
15
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.
|
|
16
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.
|
|
17
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.
|
|
18
|
-
./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.
|
|
19
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.
|
|
20
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.
|
|
21
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.
|
|
22
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.
|
|
23
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.
|
|
24
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.
|
|
25
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.
|
|
26
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.
|
|
14
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00121 seconds |
|
|
15
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.003 seconds |
|
|
16
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00426 seconds |
|
|
17
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00504 seconds |
|
|
18
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00661 seconds |
|
|
19
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.0004 seconds |
|
|
20
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00183 seconds |
|
|
21
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00165 seconds |
|
|
22
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00226 seconds |
|
|
23
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00164 seconds |
|
|
24
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00027 seconds |
|
|
25
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.0015 seconds |
|
|
26
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00063 seconds |
|
|
27
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.
|
|
29
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.
|
|
30
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.
|
|
31
|
-
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.
|
|
32
|
-
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.
|
|
28
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00018 seconds |
|
|
29
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00178 seconds |
|
|
30
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00087 seconds |
|
|
31
|
+
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00017 seconds |
|
|
32
|
+
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00008 seconds |
|
|
33
33
|
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00007 seconds |
|
|
34
|
-
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.
|
|
35
|
-
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.
|
|
36
|
-
./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.
|
|
34
|
+
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00007 seconds |
|
|
35
|
+
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00007 seconds |
|
|
36
|
+
./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00007 seconds |
|
|
37
37
|
./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00007 seconds |
|
|
38
|
-
./spec/aircana/configuration_spec.rb[1:7:1
|
|
39
|
-
./spec/aircana/configuration_spec.rb[1:7:2
|
|
40
|
-
./spec/aircana/configuration_spec.rb[1:7:3
|
|
41
|
-
./spec/aircana/configuration_spec.rb[1:7:4
|
|
42
|
-
./spec/aircana/
|
|
43
|
-
./spec/aircana/
|
|
44
|
-
./spec/aircana/
|
|
45
|
-
./spec/aircana/
|
|
46
|
-
./spec/aircana/
|
|
47
|
-
./spec/aircana/
|
|
48
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:
|
|
49
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:
|
|
38
|
+
./spec/aircana/configuration_spec.rb[1:7:1] | passed | 0.00007 seconds |
|
|
39
|
+
./spec/aircana/configuration_spec.rb[1:7:2] | passed | 0.00007 seconds |
|
|
40
|
+
./spec/aircana/configuration_spec.rb[1:7:3] | passed | 0.00008 seconds |
|
|
41
|
+
./spec/aircana/configuration_spec.rb[1:7:4] | passed | 0.00009 seconds |
|
|
42
|
+
./spec/aircana/configuration_spec.rb[1:7:5] | passed | 0.00007 seconds |
|
|
43
|
+
./spec/aircana/configuration_spec.rb[1:7:6] | passed | 0.00006 seconds |
|
|
44
|
+
./spec/aircana/configuration_spec.rb[1:8:1:1] | passed | 0.00023 seconds |
|
|
45
|
+
./spec/aircana/configuration_spec.rb[1:8:2:1] | passed | 0.00021 seconds |
|
|
46
|
+
./spec/aircana/configuration_spec.rb[1:8:3:1] | passed | 0.0002 seconds |
|
|
47
|
+
./spec/aircana/configuration_spec.rb[1:8:4:1] | passed | 0.00009 seconds |
|
|
48
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00271 seconds |
|
|
49
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00061 seconds |
|
|
50
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00116 seconds |
|
|
51
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00025 seconds |
|
|
52
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00019 seconds |
|
|
53
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00019 seconds |
|
|
54
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00058 seconds |
|
|
55
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00056 seconds |
|
|
50
56
|
./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.
|
|
52
|
-
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.
|
|
53
|
-
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.
|
|
54
|
-
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.
|
|
55
|
-
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.
|
|
56
|
-
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.
|
|
57
|
-
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.
|
|
58
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.
|
|
59
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.
|
|
60
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.
|
|
61
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.
|
|
62
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.
|
|
63
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.
|
|
64
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.
|
|
65
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.
|
|
66
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.
|
|
67
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.
|
|
68
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.
|
|
69
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.
|
|
70
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.
|
|
71
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.
|
|
72
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.
|
|
57
|
+
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00055 seconds |
|
|
58
|
+
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00046 seconds |
|
|
59
|
+
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00036 seconds |
|
|
60
|
+
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00037 seconds |
|
|
61
|
+
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.0004 seconds |
|
|
62
|
+
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00065 seconds |
|
|
63
|
+
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00049 seconds |
|
|
64
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00118 seconds |
|
|
65
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00176 seconds |
|
|
66
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00141 seconds |
|
|
67
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00105 seconds |
|
|
68
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00117 seconds |
|
|
69
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00029 seconds |
|
|
70
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00105 seconds |
|
|
71
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00099 seconds |
|
|
72
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00094 seconds |
|
|
73
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00022 seconds |
|
|
74
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.0009 seconds |
|
|
75
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00021 seconds |
|
|
76
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00024 seconds |
|
|
77
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00022 seconds |
|
|
78
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00022 seconds |
|
|
73
79
|
./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.
|
|
75
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.
|
|
76
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.
|
|
77
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.
|
|
80
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.0002 seconds |
|
|
81
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00018 seconds |
|
|
82
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.0002 seconds |
|
|
83
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.0002 seconds |
|
|
78
84
|
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00021 seconds |
|
|
79
85
|
./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.
|
|
81
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.
|
|
86
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00095 seconds |
|
|
87
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.00086 seconds |
|
|
82
88
|
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00022 seconds |
|
|
83
89
|
./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00018 seconds |
|
|
84
90
|
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00012 seconds |
|
|
@@ -86,102 +92,127 @@ example_id | status | run_t
|
|
|
86
92
|
./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.0001 seconds |
|
|
87
93
|
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00015 seconds |
|
|
88
94
|
./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.
|
|
90
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.
|
|
91
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.
|
|
95
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00015 seconds |
|
|
96
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00026 seconds |
|
|
97
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00022 seconds |
|
|
92
98
|
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00015 seconds |
|
|
93
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.
|
|
99
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.0002 seconds |
|
|
94
100
|
./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00012 seconds |
|
|
95
101
|
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00011 seconds |
|
|
96
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.
|
|
97
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.
|
|
98
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.
|
|
99
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.
|
|
100
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.
|
|
101
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.
|
|
102
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.
|
|
103
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.
|
|
104
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.
|
|
105
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.
|
|
106
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.
|
|
107
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.
|
|
108
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.
|
|
109
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.
|
|
102
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00012 seconds |
|
|
103
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00074 seconds |
|
|
104
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00013 seconds |
|
|
105
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00032 seconds |
|
|
106
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.00025 seconds |
|
|
107
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00028 seconds |
|
|
108
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00042 seconds |
|
|
109
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00015 seconds |
|
|
110
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00012 seconds |
|
|
111
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00017 seconds |
|
|
112
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00015 seconds |
|
|
113
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00019 seconds |
|
|
114
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00024 seconds |
|
|
115
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00027 seconds |
|
|
110
116
|
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.0001 seconds |
|
|
111
117
|
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.0001 seconds |
|
|
112
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.
|
|
113
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.
|
|
114
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.
|
|
118
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00012 seconds |
|
|
119
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00009 seconds |
|
|
120
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00009 seconds |
|
|
115
121
|
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00003 seconds |
|
|
116
122
|
./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.
|
|
118
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.
|
|
123
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.0004 seconds |
|
|
124
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00019 seconds |
|
|
119
125
|
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00009 seconds |
|
|
120
126
|
./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.
|
|
122
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.
|
|
123
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.
|
|
124
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.
|
|
125
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.
|
|
126
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.
|
|
127
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.
|
|
128
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.
|
|
129
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.
|
|
130
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.
|
|
131
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.
|
|
132
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.
|
|
133
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.
|
|
134
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.
|
|
135
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.
|
|
136
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.
|
|
137
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.
|
|
138
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.
|
|
139
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.
|
|
140
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.
|
|
141
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.
|
|
142
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.
|
|
143
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.
|
|
144
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.
|
|
145
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.
|
|
146
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.
|
|
147
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.
|
|
148
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.
|
|
149
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.
|
|
150
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.
|
|
151
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.
|
|
152
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.
|
|
127
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00004 seconds |
|
|
128
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00289 seconds |
|
|
129
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00016 seconds |
|
|
130
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00073 seconds |
|
|
131
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00043 seconds |
|
|
132
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00033 seconds |
|
|
133
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00048 seconds |
|
|
134
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00008 seconds |
|
|
135
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00037 seconds |
|
|
136
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00022 seconds |
|
|
137
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.0002 seconds |
|
|
138
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00033 seconds |
|
|
139
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00045 seconds |
|
|
140
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.0004 seconds |
|
|
141
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00023 seconds |
|
|
142
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.00024 seconds |
|
|
143
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00026 seconds |
|
|
144
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00021 seconds |
|
|
145
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00024 seconds |
|
|
146
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00023 seconds |
|
|
147
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00023 seconds |
|
|
148
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00024 seconds |
|
|
149
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00024 seconds |
|
|
150
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00025 seconds |
|
|
151
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00024 seconds |
|
|
152
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00022 seconds |
|
|
153
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00023 seconds |
|
|
154
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.0002 seconds |
|
|
155
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00019 seconds |
|
|
156
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00019 seconds |
|
|
157
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00169 seconds |
|
|
158
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00142 seconds |
|
|
153
159
|
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00008 seconds |
|
|
154
160
|
./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.
|
|
161
|
+
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
|
156
162
|
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
157
163
|
./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.
|
|
164
|
+
./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00003 seconds |
|
|
159
165
|
./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.
|
|
161
|
-
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.
|
|
166
|
+
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00003 seconds |
|
|
167
|
+
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00003 seconds |
|
|
162
168
|
./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.
|
|
169
|
+
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00003 seconds |
|
|
164
170
|
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
165
|
-
./spec/aircana/llm/
|
|
166
|
-
./spec/aircana/llm/
|
|
167
|
-
./spec/aircana/llm/
|
|
168
|
-
./spec/aircana/llm/
|
|
169
|
-
./spec/aircana/llm/
|
|
170
|
-
./spec/aircana/llm/
|
|
171
|
-
./spec/aircana/llm/
|
|
172
|
-
./spec/aircana/llm/
|
|
173
|
-
./spec/aircana/llm/
|
|
174
|
-
./spec/aircana/llm/
|
|
175
|
-
./spec/aircana/llm/
|
|
176
|
-
./spec/aircana/
|
|
177
|
-
./spec/aircana/
|
|
178
|
-
./spec/aircana/
|
|
179
|
-
./spec/aircana/
|
|
180
|
-
./spec/aircana/
|
|
181
|
-
./spec/aircana/
|
|
182
|
-
./spec/aircana/
|
|
183
|
-
./spec/aircana/
|
|
184
|
-
./spec/aircana/
|
|
185
|
-
./spec/aircana/
|
|
186
|
-
./spec/
|
|
187
|
-
./spec/
|
|
171
|
+
./spec/aircana/llm/base_spec.rb[1:1:1] | passed | 0.0003 seconds |
|
|
172
|
+
./spec/aircana/llm/base_spec.rb[1:2:1] | passed | 0.00025 seconds |
|
|
173
|
+
./spec/aircana/llm/base_spec.rb[1:2:2] | passed | 0.00016 seconds |
|
|
174
|
+
./spec/aircana/llm/base_spec.rb[1:2:3] | passed | 0.00016 seconds |
|
|
175
|
+
./spec/aircana/llm/base_spec.rb[1:3:1:1] | passed | 0.00027 seconds |
|
|
176
|
+
./spec/aircana/llm/base_spec.rb[1:3:2:1] | passed | 0.00023 seconds |
|
|
177
|
+
./spec/aircana/llm/base_spec.rb[1:3:2:2] | passed | 0.00017 seconds |
|
|
178
|
+
./spec/aircana/llm/base_spec.rb[1:3:3:1] | passed | 0.0003 seconds |
|
|
179
|
+
./spec/aircana/llm/base_spec.rb[1:3:3:2] | passed | 0.00024 seconds |
|
|
180
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:1] | passed | 0.04771 seconds |
|
|
181
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:2] | passed | 0.00036 seconds |
|
|
182
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:3] | passed | 0.0021 seconds |
|
|
183
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:4] | passed | 0.00054 seconds |
|
|
184
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:5] | passed | 0.00043 seconds |
|
|
185
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:6] | passed | 0.0006 seconds |
|
|
186
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:1:7] | passed | 0.0004 seconds |
|
|
187
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:2:1] | passed | 0.00038 seconds |
|
|
188
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:2:2] | passed | 0.00037 seconds |
|
|
189
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:1:3:1] | passed | 0.00049 seconds |
|
|
190
|
+
./spec/aircana/llm/bedrock_client_spec.rb[1:2:1] | passed | 0.00019 seconds |
|
|
191
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00038 seconds |
|
|
192
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00037 seconds |
|
|
193
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.0003 seconds |
|
|
194
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00032 seconds |
|
|
195
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00038 seconds |
|
|
196
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.0005 seconds |
|
|
197
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00042 seconds |
|
|
198
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00037 seconds |
|
|
199
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00031 seconds |
|
|
200
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00021 seconds |
|
|
201
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00021 seconds |
|
|
202
|
+
./spec/aircana/llm_spec.rb[1:1:1:1] | passed | 0.00008 seconds |
|
|
203
|
+
./spec/aircana/llm_spec.rb[1:1:1:2] | passed | 0.00007 seconds |
|
|
204
|
+
./spec/aircana/llm_spec.rb[1:1:2:1] | passed | 0.00007 seconds |
|
|
205
|
+
./spec/aircana/llm_spec.rb[1:1:3:1] | passed | 0.00014 seconds |
|
|
206
|
+
./spec/aircana/llm_spec.rb[1:1:3:2] | passed | 0.00012 seconds |
|
|
207
|
+
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00082 seconds |
|
|
208
|
+
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00167 seconds |
|
|
209
|
+
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.0035 seconds |
|
|
210
|
+
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00098 seconds |
|
|
211
|
+
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00079 seconds |
|
|
212
|
+
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.0006 seconds |
|
|
213
|
+
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.0008 seconds |
|
|
214
|
+
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00093 seconds |
|
|
215
|
+
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.0011 seconds |
|
|
216
|
+
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.0014 seconds |
|
|
217
|
+
./spec/aircana_spec.rb[1:1] | passed | 0.00005 seconds |
|
|
218
|
+
./spec/aircana_spec.rb[1:2] | passed | 0.00114 seconds |
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,27 @@ 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.0]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Configurable LLM provider for summary/title generation
|
|
12
|
+
- New environment variable `AIRCANA_LLM_PROVIDER` to switch between providers
|
|
13
|
+
- Supports `claude` (default) and `bedrock` providers
|
|
14
|
+
- Claude provider uses Claude Code CLI for LLM calls
|
|
15
|
+
- Bedrock provider uses AWS Bedrock Runtime API with configurable region and model
|
|
16
|
+
- AWS Bedrock integration as alternative LLM provider
|
|
17
|
+
- New environment variables: `AIRCANA_BEDROCK_REGION` (default: `us-east-1`), `AIRCANA_BEDROCK_MODEL` (default: `anthropic.claude-3-haiku-20240307-v1:0`)
|
|
18
|
+
- Uses standard AWS credential chain for authentication
|
|
19
|
+
- Added `aws-sdk-bedrockruntime` as a bundled dependency
|
|
20
|
+
- New `Aircana::LLM` module with factory pattern
|
|
21
|
+
- `Aircana::LLM.client` returns configured provider instance
|
|
22
|
+
- Base class with shared functionality (spinner, content truncation)
|
|
23
|
+
- Unknown providers fall back to Claude with warning
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- Refactored `ClaudeClient` to inherit from new `LLM::Base` class
|
|
27
|
+
- Web and Confluence contexts now use `Aircana::LLM.client` factory instead of direct `ClaudeClient` instantiation
|
|
28
|
+
|
|
8
29
|
## [5.0.0]
|
|
9
30
|
|
|
10
31
|
### 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)
|
|
@@ -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
|
|
@@ -107,7 +107,7 @@ module Aircana
|
|
|
107
107
|
|
|
108
108
|
def generate_summary(content, title)
|
|
109
109
|
prompt = build_summary_prompt(content, title)
|
|
110
|
-
LLM
|
|
110
|
+
Aircana::LLM.client.prompt(prompt).strip
|
|
111
111
|
rescue StandardError => e
|
|
112
112
|
Aircana.human_logger.warn("Failed to generate summary: #{e.message}")
|
|
113
113
|
# Fallback to title or truncated content
|
data/lib/aircana/contexts/web.rb
CHANGED
|
@@ -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
|
|
@@ -162,8 +161,7 @@ module Aircana
|
|
|
162
161
|
|
|
163
162
|
def generate_title_with_claude(content, url)
|
|
164
163
|
prompt = build_title_generation_prompt(content, url)
|
|
165
|
-
|
|
166
|
-
claude_client.prompt(prompt).strip
|
|
164
|
+
Aircana::LLM.client.prompt(prompt).strip
|
|
167
165
|
end
|
|
168
166
|
|
|
169
167
|
def build_title_generation_prompt(content, url) # rubocop:disable Metrics/MethodLength
|
|
@@ -219,7 +217,7 @@ module Aircana
|
|
|
219
217
|
|
|
220
218
|
def generate_summary(content, title, url)
|
|
221
219
|
prompt = build_summary_prompt(content, title, url)
|
|
222
|
-
LLM
|
|
220
|
+
Aircana::LLM.client.prompt(prompt).strip
|
|
223
221
|
rescue StandardError => e
|
|
224
222
|
Aircana.human_logger.warn("Failed to generate summary: #{e.message}")
|
|
225
223
|
# Fallback to title or truncated content
|
|
@@ -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
|
-
|
|
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)
|
data/lib/aircana/version.rb
CHANGED
data/lib/aircana.rb
CHANGED
|
@@ -12,9 +12,33 @@ require_relative "aircana/cli"
|
|
|
12
12
|
require_relative "aircana/generators"
|
|
13
13
|
require_relative "aircana/contexts/confluence"
|
|
14
14
|
require_relative "aircana/contexts/local"
|
|
15
|
+
require_relative "aircana/llm/base"
|
|
15
16
|
require_relative "aircana/llm/claude_client"
|
|
16
17
|
|
|
17
18
|
module Aircana
|
|
19
|
+
module LLM
|
|
20
|
+
class << self
|
|
21
|
+
def client
|
|
22
|
+
case provider
|
|
23
|
+
when "bedrock"
|
|
24
|
+
require_relative "aircana/llm/bedrock_client"
|
|
25
|
+
BedrockClient.new
|
|
26
|
+
when "claude", nil
|
|
27
|
+
ClaudeClient.new
|
|
28
|
+
else
|
|
29
|
+
Aircana.human_logger.warn("Unknown LLM provider '#{provider}', falling back to Claude")
|
|
30
|
+
ClaudeClient.new
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def provider
|
|
37
|
+
Aircana.configuration.llm_provider
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
18
42
|
class Error < StandardError; end
|
|
19
43
|
|
|
20
44
|
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.
|
|
4
|
+
version: 5.1.0
|
|
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
|
|
@@ -152,6 +166,8 @@ files:
|
|
|
152
166
|
- lib/aircana/hooks_manifest.rb
|
|
153
167
|
- lib/aircana/human_logger.rb
|
|
154
168
|
- lib/aircana/initializers.rb
|
|
169
|
+
- lib/aircana/llm/base.rb
|
|
170
|
+
- lib/aircana/llm/bedrock_client.rb
|
|
155
171
|
- lib/aircana/llm/claude_client.rb
|
|
156
172
|
- lib/aircana/plugin_manifest.rb
|
|
157
173
|
- lib/aircana/progress_tracker.rb
|