aircana 4.0.0.rc4 → 4.0.0.rc6
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 +184 -184
- data/lib/aircana/cli/commands/kb.rb +29 -14
- data/lib/aircana/configuration.rb +10 -1
- data/lib/aircana/contexts/confluence.rb +3 -1
- data/lib/aircana/contexts/manifest.rb +2 -0
- data/lib/aircana/generators/agents_generator.rb +78 -0
- data/lib/aircana/generators/skills_generator.rb +21 -0
- data/lib/aircana/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 94f17b472de8ff7ccd7d7951b4907d016f5655acc527c461aeb7034a18435633
|
|
4
|
+
data.tar.gz: bbabe2249a8759b7f0992511232b1bbd41417cf47319d45e5579fea1a76c7834
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 205618b2ff125fb65f27426d24ae010e0c929a78c27aea8a68a899710517d647871f51b8d73443b78de5df103f4f28fe4cf87cbd504ac15f34331dac83bd7ed9
|
|
7
|
+
data.tar.gz: e78a897b66dbbf94cc22331e35f77b9183b5d679fe4bed0c09107d03e6f1e4a0871f69aa9c393268cff73fef83ff6eca5fc6b3ee15b3cfc54f8ff68f15af441e
|
data/.rspec_status
CHANGED
|
@@ -1,192 +1,192 @@
|
|
|
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.
|
|
13
|
-
./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.
|
|
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:2:2] | passed | 0.
|
|
23
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.
|
|
24
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.
|
|
25
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.
|
|
26
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.
|
|
27
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.
|
|
28
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.
|
|
29
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.
|
|
30
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.
|
|
31
|
-
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.
|
|
32
|
-
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.
|
|
33
|
-
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.
|
|
34
|
-
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.
|
|
35
|
-
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.
|
|
36
|
-
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.
|
|
37
|
-
./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.
|
|
38
|
-
./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.
|
|
39
|
-
./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.
|
|
40
|
-
./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.
|
|
41
|
-
./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.
|
|
42
|
-
./spec/aircana/configuration_spec.rb[1:7:4:1] | passed | 0.
|
|
43
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.
|
|
44
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.
|
|
45
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.
|
|
46
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.
|
|
47
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.
|
|
48
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.
|
|
49
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.
|
|
50
|
-
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.
|
|
51
|
-
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.
|
|
52
|
-
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.
|
|
53
|
-
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.
|
|
54
|
-
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.
|
|
55
|
-
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.
|
|
56
|
-
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.
|
|
57
|
-
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.
|
|
58
|
-
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.
|
|
59
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.
|
|
60
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.
|
|
61
|
-
./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.
|
|
62
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.
|
|
63
|
-
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.
|
|
64
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.
|
|
65
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.
|
|
66
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.
|
|
67
|
-
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.
|
|
68
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.
|
|
69
|
-
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.
|
|
70
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.
|
|
71
|
-
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.
|
|
72
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.
|
|
73
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.
|
|
74
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.
|
|
75
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.
|
|
76
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.
|
|
77
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.
|
|
78
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.
|
|
79
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.
|
|
80
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.
|
|
81
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.
|
|
82
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.
|
|
83
|
-
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.
|
|
84
|
-
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.
|
|
85
|
-
./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.
|
|
86
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.
|
|
87
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.
|
|
88
|
-
./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.
|
|
89
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.
|
|
90
|
-
./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.
|
|
91
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.
|
|
92
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.
|
|
93
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.
|
|
94
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.
|
|
95
|
-
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.
|
|
96
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.
|
|
97
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.
|
|
98
|
-
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.
|
|
99
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.
|
|
100
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.
|
|
101
|
-
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.
|
|
102
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.
|
|
103
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.
|
|
104
|
-
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.
|
|
105
|
-
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.
|
|
3
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:1] | passed | 0.00919 seconds |
|
|
4
|
+
./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00264 seconds |
|
|
5
|
+
./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.01276 seconds |
|
|
6
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00426 seconds |
|
|
7
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.003 seconds |
|
|
8
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00353 seconds |
|
|
9
|
+
./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00366 seconds |
|
|
10
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00151 seconds |
|
|
11
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00178 seconds |
|
|
12
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00157 seconds |
|
|
13
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00139 seconds |
|
|
14
|
+
./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.00135 seconds |
|
|
15
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00332 seconds |
|
|
16
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00424 seconds |
|
|
17
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00556 seconds |
|
|
18
|
+
./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.004 seconds |
|
|
19
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00039 seconds |
|
|
20
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00206 seconds |
|
|
21
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00124 seconds |
|
|
22
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.00225 seconds |
|
|
23
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00206 seconds |
|
|
24
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00171 seconds |
|
|
25
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00046 seconds |
|
|
26
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00226 seconds |
|
|
27
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00124 seconds |
|
|
28
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.00034 seconds |
|
|
29
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00025 seconds |
|
|
30
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00218 seconds |
|
|
31
|
+
./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00113 seconds |
|
|
32
|
+
./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00018 seconds |
|
|
33
|
+
./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00011 seconds |
|
|
34
|
+
./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00007 seconds |
|
|
35
|
+
./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00007 seconds |
|
|
36
|
+
./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00007 seconds |
|
|
37
|
+
./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00007 seconds |
|
|
38
|
+
./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00007 seconds |
|
|
39
|
+
./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.00242 seconds |
|
|
40
|
+
./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.00021 seconds |
|
|
41
|
+
./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.0002 seconds |
|
|
42
|
+
./spec/aircana/configuration_spec.rb[1:7:4:1] | passed | 0.00009 seconds |
|
|
43
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.0025 seconds |
|
|
44
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.00062 seconds |
|
|
45
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00108 seconds |
|
|
46
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00033 seconds |
|
|
47
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.0002 seconds |
|
|
48
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00018 seconds |
|
|
49
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00034 seconds |
|
|
50
|
+
./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.0004 seconds |
|
|
51
|
+
./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.0005 seconds |
|
|
52
|
+
./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00036 seconds |
|
|
53
|
+
./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00041 seconds |
|
|
54
|
+
./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00053 seconds |
|
|
55
|
+
./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00059 seconds |
|
|
56
|
+
./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00046 seconds |
|
|
57
|
+
./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00088 seconds |
|
|
58
|
+
./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00054 seconds |
|
|
59
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00107 seconds |
|
|
60
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00112 seconds |
|
|
61
|
+
./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.00118 seconds |
|
|
62
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.001 seconds |
|
|
63
|
+
./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00095 seconds |
|
|
64
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00093 seconds |
|
|
65
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00022 seconds |
|
|
66
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00088 seconds |
|
|
67
|
+
./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00092 seconds |
|
|
68
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.0009 seconds |
|
|
69
|
+
./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.0002 seconds |
|
|
70
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00084 seconds |
|
|
71
|
+
./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00028 seconds |
|
|
72
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00025 seconds |
|
|
73
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00021 seconds |
|
|
74
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00022 seconds |
|
|
75
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00022 seconds |
|
|
76
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.0002 seconds |
|
|
77
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.0002 seconds |
|
|
78
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00019 seconds |
|
|
79
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00019 seconds |
|
|
80
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00019 seconds |
|
|
81
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.0002 seconds |
|
|
82
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00112 seconds |
|
|
83
|
+
./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.00108 seconds |
|
|
84
|
+
./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00021 seconds |
|
|
85
|
+
./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00028 seconds |
|
|
86
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00012 seconds |
|
|
87
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00011 seconds |
|
|
88
|
+
./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00011 seconds |
|
|
89
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00015 seconds |
|
|
90
|
+
./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00011 seconds |
|
|
91
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.00017 seconds |
|
|
92
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00026 seconds |
|
|
93
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.00042 seconds |
|
|
94
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00016 seconds |
|
|
95
|
+
./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.0002 seconds |
|
|
96
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00012 seconds |
|
|
97
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00011 seconds |
|
|
98
|
+
./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00011 seconds |
|
|
99
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.0012 seconds |
|
|
100
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00013 seconds |
|
|
101
|
+
./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00031 seconds |
|
|
102
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.00024 seconds |
|
|
103
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00023 seconds |
|
|
104
|
+
./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00022 seconds |
|
|
105
|
+
./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00022 seconds |
|
|
106
106
|
./spec/aircana/contexts/web_spec.rb[1:3:7:2] | passed | 0.00013 seconds |
|
|
107
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.
|
|
108
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.
|
|
109
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.
|
|
110
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.
|
|
111
|
-
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.
|
|
112
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.
|
|
113
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.
|
|
114
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.
|
|
115
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.
|
|
116
|
-
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.
|
|
107
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:1] | passed | 0.00017 seconds |
|
|
108
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00014 seconds |
|
|
109
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00018 seconds |
|
|
110
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.0002 seconds |
|
|
111
|
+
./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.0002 seconds |
|
|
112
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.0001 seconds |
|
|
113
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.0001 seconds |
|
|
114
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.0001 seconds |
|
|
115
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.0001 seconds |
|
|
116
|
+
./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.00007 seconds |
|
|
117
117
|
./spec/aircana/generators/hooks_generator_spec.rb[1:1:1] | passed | 0.00004 seconds |
|
|
118
118
|
./spec/aircana/generators/hooks_generator_spec.rb[1:2:1] | passed | 0.00003 seconds |
|
|
119
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.
|
|
120
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.
|
|
121
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.
|
|
122
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.
|
|
123
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.
|
|
124
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.
|
|
125
|
-
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.
|
|
126
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.
|
|
127
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.
|
|
128
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.
|
|
129
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.
|
|
130
|
-
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.
|
|
131
|
-
./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.
|
|
132
|
-
./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.
|
|
133
|
-
./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.
|
|
134
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.
|
|
135
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.
|
|
136
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.
|
|
137
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.
|
|
138
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.
|
|
139
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.
|
|
140
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.
|
|
141
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.
|
|
142
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.
|
|
143
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.
|
|
144
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.
|
|
145
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.
|
|
146
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.
|
|
147
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.
|
|
148
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.
|
|
149
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.
|
|
150
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.
|
|
151
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.
|
|
152
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.
|
|
153
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.
|
|
154
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.
|
|
155
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.
|
|
156
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.
|
|
157
|
-
./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.
|
|
158
|
-
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.
|
|
159
|
-
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.
|
|
160
|
-
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.
|
|
161
|
-
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.
|
|
162
|
-
./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.
|
|
119
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:1] | passed | 0.00035 seconds |
|
|
120
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00018 seconds |
|
|
121
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00009 seconds |
|
|
122
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00008 seconds |
|
|
123
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00003 seconds |
|
|
124
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00044 seconds |
|
|
125
|
+
./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.0003 seconds |
|
|
126
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00034 seconds |
|
|
127
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00024 seconds |
|
|
128
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00024 seconds |
|
|
129
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00008 seconds |
|
|
130
|
+
./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.00007 seconds |
|
|
131
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00019 seconds |
|
|
132
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.00069 seconds |
|
|
133
|
+
./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.00017 seconds |
|
|
134
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00037 seconds |
|
|
135
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00021 seconds |
|
|
136
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.0002 seconds |
|
|
137
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00038 seconds |
|
|
138
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00033 seconds |
|
|
139
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00028 seconds |
|
|
140
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00019 seconds |
|
|
141
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.0002 seconds |
|
|
142
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00023 seconds |
|
|
143
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00018 seconds |
|
|
144
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00019 seconds |
|
|
145
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.0002 seconds |
|
|
146
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.0002 seconds |
|
|
147
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00022 seconds |
|
|
148
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00019 seconds |
|
|
149
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00019 seconds |
|
|
150
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00019 seconds |
|
|
151
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.0002 seconds |
|
|
152
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00019 seconds |
|
|
153
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00022 seconds |
|
|
154
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00023 seconds |
|
|
155
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00037 seconds |
|
|
156
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00132 seconds |
|
|
157
|
+
./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00116 seconds |
|
|
158
|
+
./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00006 seconds |
|
|
159
|
+
./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00004 seconds |
|
|
160
|
+
./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00004 seconds |
|
|
161
|
+
./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00004 seconds |
|
|
162
|
+
./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00003 seconds |
|
|
163
163
|
./spec/aircana/human_logger_spec.rb[1:5:2] | passed | 0.00004 seconds |
|
|
164
|
-
./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.
|
|
165
|
-
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.
|
|
166
|
-
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.
|
|
164
|
+
./spec/aircana/human_logger_spec.rb[1:5:3] | passed | 0.00003 seconds |
|
|
165
|
+
./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00003 seconds |
|
|
166
|
+
./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00003 seconds |
|
|
167
167
|
./spec/aircana/human_logger_spec.rb[1:5:6] | passed | 0.00003 seconds |
|
|
168
|
-
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.
|
|
169
|
-
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.
|
|
170
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.
|
|
171
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.
|
|
172
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.
|
|
173
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.
|
|
174
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.
|
|
175
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.
|
|
176
|
-
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.
|
|
177
|
-
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.
|
|
178
|
-
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.
|
|
179
|
-
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.
|
|
180
|
-
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.
|
|
181
|
-
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.
|
|
182
|
-
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.
|
|
183
|
-
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.
|
|
184
|
-
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.
|
|
185
|
-
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.
|
|
186
|
-
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.
|
|
187
|
-
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.
|
|
188
|
-
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.
|
|
189
|
-
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.
|
|
168
|
+
./spec/aircana/human_logger_spec.rb[1:5:7] | passed | 0.00003 seconds |
|
|
169
|
+
./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00003 seconds |
|
|
170
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00049 seconds |
|
|
171
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00033 seconds |
|
|
172
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.00029 seconds |
|
|
173
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00029 seconds |
|
|
174
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00274 seconds |
|
|
175
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.0003 seconds |
|
|
176
|
+
./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00067 seconds |
|
|
177
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00028 seconds |
|
|
178
|
+
./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00046 seconds |
|
|
179
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00019 seconds |
|
|
180
|
+
./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00018 seconds |
|
|
181
|
+
./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00026 seconds |
|
|
182
|
+
./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00048 seconds |
|
|
183
|
+
./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.00052 seconds |
|
|
184
|
+
./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00026 seconds |
|
|
185
|
+
./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00019 seconds |
|
|
186
|
+
./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00017 seconds |
|
|
187
|
+
./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00018 seconds |
|
|
188
|
+
./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.0002 seconds |
|
|
189
|
+
./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00024 seconds |
|
|
190
190
|
./spec/aircana/system_checker_spec.rb[1:3:5] | passed | 0.00021 seconds |
|
|
191
|
-
./spec/aircana_spec.rb[1:1] | passed | 0.
|
|
192
|
-
./spec/aircana_spec.rb[1:2] | passed | 0.
|
|
191
|
+
./spec/aircana_spec.rb[1:1] | passed | 0.00003 seconds |
|
|
192
|
+
./spec/aircana_spec.rb[1:2] | passed | 0.00088 seconds |
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require "json"
|
|
4
4
|
require "tty-prompt"
|
|
5
5
|
require_relative "../../generators/skills_generator"
|
|
6
|
+
require_relative "../../generators/agents_generator"
|
|
6
7
|
require_relative "../../contexts/manifest"
|
|
7
8
|
require_relative "../../contexts/web"
|
|
8
9
|
|
|
@@ -10,6 +11,7 @@ module Aircana
|
|
|
10
11
|
module CLI
|
|
11
12
|
module KB # rubocop:disable Metrics/ModuleLength
|
|
12
13
|
class << self # rubocop:disable Metrics/ClassLength
|
|
14
|
+
# rubocop:disable Metrics/MethodLength
|
|
13
15
|
def refresh(kb_name)
|
|
14
16
|
normalized_kb_name = normalize_string(kb_name)
|
|
15
17
|
|
|
@@ -22,9 +24,11 @@ module Aircana
|
|
|
22
24
|
|
|
23
25
|
perform_manifest_aware_refresh(normalized_kb_name)
|
|
24
26
|
regenerate_skill_md(normalized_kb_name)
|
|
27
|
+
regenerate_agent_md(normalized_kb_name)
|
|
25
28
|
rescue Aircana::Error => e
|
|
26
29
|
handle_refresh_error(normalized_kb_name, e)
|
|
27
30
|
end
|
|
31
|
+
# rubocop:enable Metrics/MethodLength
|
|
28
32
|
|
|
29
33
|
def create # rubocop:disable Metrics/MethodLength
|
|
30
34
|
prompt = TTY::Prompt.new
|
|
@@ -54,9 +58,12 @@ module Aircana
|
|
|
54
58
|
# Prompt for web URL fetching
|
|
55
59
|
fetched_urls = prompt_for_url_fetch(prompt, normalized_kb_name, kb_type)
|
|
56
60
|
|
|
57
|
-
# Generate SKILL.md if no content was fetched during the prompts
|
|
61
|
+
# Generate SKILL.md and agent if no content was fetched during the prompts
|
|
58
62
|
# (the prompt functions already generate it when they successfully fetch content)
|
|
59
|
-
|
|
63
|
+
unless fetched_confluence || fetched_urls
|
|
64
|
+
regenerate_skill_md(normalized_kb_name, short_description)
|
|
65
|
+
regenerate_agent_md(normalized_kb_name)
|
|
66
|
+
end
|
|
60
67
|
|
|
61
68
|
# If remote kb_type, ensure SessionStart hook is installed
|
|
62
69
|
ensure_remote_knowledge_refresh_hook if kb_type == "remote"
|
|
@@ -109,8 +116,9 @@ module Aircana
|
|
|
109
116
|
all_sources = other_sources + web_sources
|
|
110
117
|
Aircana::Contexts::Manifest.update_manifest(normalized_kb_name, all_sources)
|
|
111
118
|
|
|
112
|
-
# Regenerate SKILL.md
|
|
119
|
+
# Regenerate SKILL.md and agent
|
|
113
120
|
regenerate_skill_md(normalized_kb_name)
|
|
121
|
+
regenerate_agent_md(normalized_kb_name)
|
|
114
122
|
|
|
115
123
|
Aircana.human_logger.success "Successfully added URL to KB '#{kb_name}'"
|
|
116
124
|
else
|
|
@@ -221,25 +229,29 @@ module Aircana
|
|
|
221
229
|
end
|
|
222
230
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
|
223
231
|
|
|
224
|
-
|
|
225
|
-
def regenerate_skill_md(kb_name, short_description = nil)
|
|
232
|
+
def regenerate_skill_md(kb_name, _short_description = nil)
|
|
226
233
|
return unless Aircana::Contexts::Manifest.manifest_exists?(kb_name)
|
|
227
234
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
kb_name: kb_name,
|
|
231
|
-
short_description: short_description
|
|
232
|
-
)
|
|
233
|
-
else
|
|
234
|
-
Generators::SkillsGenerator.from_manifest(kb_name)
|
|
235
|
-
end
|
|
235
|
+
# Always use from_manifest when manifest exists to ensure knowledge_files are loaded
|
|
236
|
+
generator = Generators::SkillsGenerator.from_manifest(kb_name)
|
|
236
237
|
|
|
237
238
|
generator.generate
|
|
238
239
|
Aircana.human_logger.success "Generated SKILL.md for '#{kb_name}'"
|
|
239
240
|
rescue StandardError => e
|
|
240
241
|
Aircana.human_logger.warn "Failed to generate SKILL.md: #{e.message}"
|
|
241
242
|
end
|
|
242
|
-
|
|
243
|
+
|
|
244
|
+
def regenerate_agent_md(kb_name)
|
|
245
|
+
return unless Aircana::Contexts::Manifest.manifest_exists?(kb_name)
|
|
246
|
+
|
|
247
|
+
# Generate agent from manifest
|
|
248
|
+
generator = Generators::AgentsGenerator.from_manifest(kb_name)
|
|
249
|
+
|
|
250
|
+
generator.generate
|
|
251
|
+
Aircana.human_logger.success "Generated agent for '#{kb_name}'"
|
|
252
|
+
rescue StandardError => e
|
|
253
|
+
Aircana.human_logger.warn "Failed to generate agent: #{e.message}"
|
|
254
|
+
end
|
|
243
255
|
|
|
244
256
|
def ensure_gitignore_entry(kb_type)
|
|
245
257
|
gitignore_path = gitignore_file_path
|
|
@@ -355,6 +367,7 @@ module Aircana
|
|
|
355
367
|
if result[:pages_count]&.positive?
|
|
356
368
|
ensure_gitignore_entry(kb_type)
|
|
357
369
|
regenerate_skill_md(normalized_kb_name, short_description)
|
|
370
|
+
regenerate_agent_md(normalized_kb_name)
|
|
358
371
|
return true
|
|
359
372
|
end
|
|
360
373
|
else
|
|
@@ -411,6 +424,7 @@ module Aircana
|
|
|
411
424
|
Aircana.human_logger.success "Successfully fetched #{result[:pages_count]} URL(s)"
|
|
412
425
|
ensure_gitignore_entry(kb_type)
|
|
413
426
|
regenerate_skill_md(normalized_kb_name)
|
|
427
|
+
regenerate_agent_md(normalized_kb_name)
|
|
414
428
|
return true
|
|
415
429
|
else
|
|
416
430
|
Aircana.human_logger.warn "No URLs were successfully fetched"
|
|
@@ -497,6 +511,7 @@ module Aircana
|
|
|
497
511
|
begin
|
|
498
512
|
result = perform_manifest_aware_refresh(kb_name)
|
|
499
513
|
regenerate_skill_md(kb_name)
|
|
514
|
+
regenerate_agent_md(kb_name)
|
|
500
515
|
{
|
|
501
516
|
success: true,
|
|
502
517
|
pages_count: result[:pages_count],
|
|
@@ -7,7 +7,7 @@ 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
|
|
10
|
+
:plugin_root, :plugin_manifest_dir, :commands_dir, :skills_dir, :agents_dir
|
|
11
11
|
|
|
12
12
|
def initialize
|
|
13
13
|
setup_directory_paths
|
|
@@ -86,6 +86,15 @@ module Aircana
|
|
|
86
86
|
File.join(@plugin_root, ".claude", "skills")
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
+
# Agents directory location depends on whether we're in a plugin
|
|
90
|
+
# Plugin mode: agents/ (Claude Code standard location)
|
|
91
|
+
# Non-plugin mode: .claude/agents/ (local development/one-off usage)
|
|
92
|
+
@agents_dir = if plugin_mode?
|
|
93
|
+
File.join(@plugin_root, "agents")
|
|
94
|
+
else
|
|
95
|
+
File.join(@plugin_root, ".claude", "agents")
|
|
96
|
+
end
|
|
97
|
+
|
|
89
98
|
@hooks_dir = File.join(@plugin_root, "hooks")
|
|
90
99
|
@scripts_dir = File.join(@plugin_root, "scripts")
|
|
91
100
|
@kb_knowledge_dir = @skills_dir
|
|
@@ -101,10 +101,12 @@ module Aircana
|
|
|
101
101
|
def extract_page_metadata(page)
|
|
102
102
|
content = page&.dig("body", "storage", "value") || ""
|
|
103
103
|
markdown_content = convert_to_markdown(content)
|
|
104
|
-
|
|
104
|
+
title = page["title"] || "Confluence page"
|
|
105
|
+
summary = generate_summary(markdown_content, title)
|
|
105
106
|
|
|
106
107
|
{
|
|
107
108
|
"id" => page["id"],
|
|
109
|
+
"title" => title,
|
|
108
110
|
"summary" => summary
|
|
109
111
|
}
|
|
110
112
|
end
|
|
@@ -154,6 +154,8 @@ module Aircana
|
|
|
154
154
|
raise ManifestError, "Page entry missing required field: id" unless page_entry.key?("id")
|
|
155
155
|
|
|
156
156
|
raise ManifestError, "Page entry missing required field: summary" unless page_entry.key?("summary")
|
|
157
|
+
|
|
158
|
+
# Title is optional for backward compatibility with existing manifests
|
|
157
159
|
end
|
|
158
160
|
|
|
159
161
|
def validate_web_source(source)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "../generators"
|
|
4
|
+
require_relative "../contexts/manifest"
|
|
5
|
+
|
|
6
|
+
module Aircana
|
|
7
|
+
module Generators
|
|
8
|
+
class AgentsGenerator < BaseGenerator
|
|
9
|
+
PRESET_COLORS = %w[red blue green cyan yellow magenta purple pink teal orange].freeze
|
|
10
|
+
|
|
11
|
+
attr_reader :kb_name, :agent_name, :agent_description, :skill_name, :color
|
|
12
|
+
|
|
13
|
+
def initialize(kb_name:, agent_description: nil, color: nil, file_in: nil, file_out: nil)
|
|
14
|
+
@kb_name = kb_name
|
|
15
|
+
@agent_name = kb_name
|
|
16
|
+
@agent_description = agent_description || generate_agent_description
|
|
17
|
+
@skill_name = generate_skill_name
|
|
18
|
+
@color = color || PRESET_COLORS.sample
|
|
19
|
+
|
|
20
|
+
super(
|
|
21
|
+
file_in: file_in || default_template_path,
|
|
22
|
+
file_out: file_out || default_output_path
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Generate agent markdown from manifest data
|
|
27
|
+
def self.from_manifest(kb_name)
|
|
28
|
+
manifest = Contexts::Manifest.read_manifest(kb_name)
|
|
29
|
+
raise Error, "No manifest found for knowledge base '#{kb_name}'" unless manifest
|
|
30
|
+
|
|
31
|
+
# Use the same description generation as skills
|
|
32
|
+
agent_description = generate_agent_description_from_manifest(manifest, kb_name)
|
|
33
|
+
|
|
34
|
+
new(
|
|
35
|
+
kb_name: kb_name,
|
|
36
|
+
agent_description: agent_description
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.generate_agent_description_from_manifest(manifest, kb_name)
|
|
41
|
+
# Same description as skill - optimized for Claude's agent discovery
|
|
42
|
+
source_count = manifest["sources"]&.size || 0
|
|
43
|
+
"Discover critical context for #{kb_name.split("-").join(" ")} from #{source_count} knowledge sources"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
protected
|
|
47
|
+
|
|
48
|
+
def locals
|
|
49
|
+
super.merge({
|
|
50
|
+
kb_name:,
|
|
51
|
+
agent_name:,
|
|
52
|
+
agent_description:,
|
|
53
|
+
skill_name:,
|
|
54
|
+
color:
|
|
55
|
+
})
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
def default_template_path
|
|
61
|
+
File.join(File.dirname(__FILE__), "..", "templates", "agents", "base_agent.erb")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def default_output_path
|
|
65
|
+
File.join(Aircana.configuration.agents_dir, "#{kb_name}.md")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def generate_agent_description
|
|
69
|
+
"Discover critical context for #{kb_name.split("-").join(" ")}"
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def generate_skill_name
|
|
73
|
+
# Convert kb_name to skill name format: "Learn Canvas Backend Sharding"
|
|
74
|
+
"Learn #{kb_name.split("-").map(&:capitalize).join(" ")}"
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -120,7 +120,14 @@ module Aircana
|
|
|
120
120
|
case source["type"]
|
|
121
121
|
when "confluence"
|
|
122
122
|
source["pages"]&.each do |page|
|
|
123
|
+
# Match by page ID (for old manifests) or by sanitized title (for new manifests)
|
|
123
124
|
return page["summary"] if filename.include?(page["id"])
|
|
125
|
+
|
|
126
|
+
# Try matching by sanitized title if available
|
|
127
|
+
if page["title"]
|
|
128
|
+
sanitized_title = sanitize_filename(page["title"])
|
|
129
|
+
return page["summary"] if filename.include?(sanitized_title)
|
|
130
|
+
end
|
|
124
131
|
end
|
|
125
132
|
when "web"
|
|
126
133
|
source["urls"]&.each do |url_entry|
|
|
@@ -135,6 +142,20 @@ module Aircana
|
|
|
135
142
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
|
136
143
|
# rubocop:enable Metrics/PerceivedComplexity
|
|
137
144
|
|
|
145
|
+
def self.sanitize_filename(title)
|
|
146
|
+
# Match the sanitization logic in Local#sanitize_filename
|
|
147
|
+
sanitized = title.strip
|
|
148
|
+
.gsub(%r{[<>:"/\\|?*]}, "-")
|
|
149
|
+
.gsub(/\s+/, "-")
|
|
150
|
+
.gsub(/-+/, "-")
|
|
151
|
+
.gsub(/^-|-$/, "")
|
|
152
|
+
|
|
153
|
+
sanitized = "untitled" if sanitized.empty?
|
|
154
|
+
sanitized = sanitized[0, 200] if sanitized.length > 200
|
|
155
|
+
|
|
156
|
+
sanitized
|
|
157
|
+
end
|
|
158
|
+
|
|
138
159
|
def self.generate_skill_description_from_manifest(manifest, kb_name)
|
|
139
160
|
# Generate a description optimized for Claude's skill discovery
|
|
140
161
|
source_count = manifest["sources"]&.size || 0
|
data/lib/aircana/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aircana
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.0.0.
|
|
4
|
+
version: 4.0.0.rc6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Weston Dransfield
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 2025-10-24 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: httparty
|
|
@@ -142,6 +142,7 @@ files:
|
|
|
142
142
|
- lib/aircana/contexts/web.rb
|
|
143
143
|
- lib/aircana/fzf_helper.rb
|
|
144
144
|
- lib/aircana/generators.rb
|
|
145
|
+
- lib/aircana/generators/agents_generator.rb
|
|
145
146
|
- lib/aircana/generators/apply_feedback_command_generator.rb
|
|
146
147
|
- lib/aircana/generators/ask_expert_command_generator.rb
|
|
147
148
|
- lib/aircana/generators/base_generator.rb
|
|
@@ -200,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
200
201
|
- !ruby/object:Gem::Version
|
|
201
202
|
version: '0'
|
|
202
203
|
requirements: []
|
|
203
|
-
rubygems_version: 3.6.
|
|
204
|
+
rubygems_version: 3.6.2
|
|
204
205
|
specification_version: 4
|
|
205
206
|
summary: CLI for creating and managing Claude Code plugins with per-agent knowledge
|
|
206
207
|
bases
|