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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8d5be7386f157583696f07f41414c21556900adfde8849e19d54057e3f5755e
4
- data.tar.gz: 390ffd1596c5e7057fd457b165a4efa2c6a6bd067149948d0d2fc6812ee891da
3
+ metadata.gz: 94f17b472de8ff7ccd7d7951b4907d016f5655acc527c461aeb7034a18435633
4
+ data.tar.gz: bbabe2249a8759b7f0992511232b1bbd41417cf47319d45e5579fea1a76c7834
5
5
  SHA512:
6
- metadata.gz: 290926c71151382da45dd70d9a820d31d94d6df32e30ae38eba014c05e9300730d58f9a05c6032f07facd705babec3b02b53c13231ec5c871fbbeb884d906788
7
- data.tar.gz: d9fce8dce7b118b534d8cae0717c233b61fd58c7b0bf168ad7345dff645955fed7c71b6f034c78a14abaddade1ae2b8b226aaac9eabc00fd9228bac7f80707e4
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.0061 seconds |
4
- ./spec/aircana/cli/commands/init_spec.rb[1:1:2] | passed | 0.00207 seconds |
5
- ./spec/aircana/cli/commands/init_spec.rb[1:2:1:1] | passed | 0.00318 seconds |
6
- ./spec/aircana/cli/commands/init_spec.rb[1:3:1] | passed | 0.00165 seconds |
7
- ./spec/aircana/cli/commands/init_spec.rb[1:3:2:1] | passed | 0.00129 seconds |
8
- ./spec/aircana/cli/commands/init_spec.rb[1:3:3:1] | passed | 0.00134 seconds |
9
- ./spec/aircana/cli/commands/init_spec.rb[1:3:4:1] | passed | 0.00135 seconds |
10
- ./spec/aircana/cli/commands/init_spec.rb[1:4:1] | passed | 0.00099 seconds |
11
- ./spec/aircana/cli/commands/init_spec.rb[1:4:2] | passed | 0.00093 seconds |
12
- ./spec/aircana/cli/commands/init_spec.rb[1:4:3] | passed | 0.00096 seconds |
13
- ./spec/aircana/cli/commands/init_spec.rb[1:4:4] | passed | 0.00692 seconds |
14
- ./spec/aircana/cli/commands/init_spec.rb[1:4:5] | passed | 0.0011 seconds |
15
- ./spec/aircana/cli/commands/init_spec.rb[1:5:1] | passed | 0.00285 seconds |
16
- ./spec/aircana/cli/commands/init_spec.rb[1:5:2] | passed | 0.00215 seconds |
17
- ./spec/aircana/cli/commands/init_spec.rb[1:5:3] | passed | 0.00264 seconds |
18
- ./spec/aircana/cli/commands/init_spec.rb[1:5:4] | passed | 0.00213 seconds |
19
- ./spec/aircana/cli/commands/kb_spec.rb[1:1:1:1] | passed | 0.00028 seconds |
20
- ./spec/aircana/cli/commands/kb_spec.rb[1:1:2:1] | passed | 0.00049 seconds |
21
- ./spec/aircana/cli/commands/kb_spec.rb[1:2:1] | passed | 0.00028 seconds |
22
- ./spec/aircana/cli/commands/kb_spec.rb[1:2:2] | passed | 0.00087 seconds |
23
- ./spec/aircana/cli/commands/kb_spec.rb[1:3:1] | passed | 0.00087 seconds |
24
- ./spec/aircana/cli/commands/kb_spec.rb[1:3:2] | passed | 0.00064 seconds |
25
- ./spec/aircana/cli/commands/kb_spec.rb[1:4:1:1] | passed | 0.00016 seconds |
26
- ./spec/aircana/cli/commands/kb_spec.rb[1:4:2:1] | passed | 0.00076 seconds |
27
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:1] | passed | 0.00014 seconds |
28
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:1:2] | passed | 0.00007 seconds |
29
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:1] | passed | 0.00007 seconds |
30
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:2] | passed | 0.00084 seconds |
31
- ./spec/aircana/cli/commands/kb_spec.rb[1:5:2:3] | passed | 0.00018 seconds |
32
- ./spec/aircana/configuration_spec.rb[1:1:1] | passed | 0.00009 seconds |
33
- ./spec/aircana/configuration_spec.rb[1:2:1] | passed | 0.00005 seconds |
34
- ./spec/aircana/configuration_spec.rb[1:3:1] | passed | 0.00004 seconds |
35
- ./spec/aircana/configuration_spec.rb[1:4:1] | passed | 0.00004 seconds |
36
- ./spec/aircana/configuration_spec.rb[1:5:1] | passed | 0.00004 seconds |
37
- ./spec/aircana/configuration_spec.rb[1:6:1] | passed | 0.00004 seconds |
38
- ./spec/aircana/configuration_spec.rb[1:6:2] | passed | 0.00004 seconds |
39
- ./spec/aircana/configuration_spec.rb[1:7:1:1] | passed | 0.00021 seconds |
40
- ./spec/aircana/configuration_spec.rb[1:7:2:1] | passed | 0.00017 seconds |
41
- ./spec/aircana/configuration_spec.rb[1:7:3:1] | passed | 0.00017 seconds |
42
- ./spec/aircana/configuration_spec.rb[1:7:4:1] | passed | 0.00005 seconds |
43
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:1] | passed | 0.00243 seconds |
44
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:2] | passed | 0.0053 seconds |
45
- ./spec/aircana/contexts/confluence_spec.rb[1:1:1:3] | passed | 0.00175 seconds |
46
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:1] | passed | 0.00034 seconds |
47
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:2] | passed | 0.00026 seconds |
48
- ./spec/aircana/contexts/confluence_spec.rb[1:1:2:3] | passed | 0.00024 seconds |
49
- ./spec/aircana/contexts/confluence_spec.rb[1:1:3:1] | passed | 0.00046 seconds |
50
- ./spec/aircana/contexts/confluence_spec.rb[1:1:3:2] | passed | 0.00074 seconds |
51
- ./spec/aircana/contexts/local_spec.rb[1:1:1] | passed | 0.00024 seconds |
52
- ./spec/aircana/contexts/local_spec.rb[1:1:2] | passed | 0.00014 seconds |
53
- ./spec/aircana/contexts/local_spec.rb[1:1:3] | passed | 0.00011 seconds |
54
- ./spec/aircana/contexts/local_spec.rb[1:1:4] | passed | 0.00012 seconds |
55
- ./spec/aircana/contexts/local_spec.rb[1:1:5] | passed | 0.00011 seconds |
56
- ./spec/aircana/contexts/local_spec.rb[1:1:6] | passed | 0.00011 seconds |
57
- ./spec/aircana/contexts/local_spec.rb[1:1:7] | passed | 0.00017 seconds |
58
- ./spec/aircana/contexts/local_spec.rb[1:1:8] | passed | 0.00014 seconds |
59
- ./spec/aircana/contexts/manifest_spec.rb[1:1:1] | passed | 0.00021 seconds |
60
- ./spec/aircana/contexts/manifest_spec.rb[1:1:2] | passed | 0.00026 seconds |
61
- ./spec/aircana/contexts/manifest_spec.rb[1:1:3] | passed | 0.00016 seconds |
62
- ./spec/aircana/contexts/manifest_spec.rb[1:2:1] | passed | 0.00017 seconds |
63
- ./spec/aircana/contexts/manifest_spec.rb[1:2:2] | passed | 0.00015 seconds |
64
- ./spec/aircana/contexts/manifest_spec.rb[1:3:1] | passed | 0.00015 seconds |
65
- ./spec/aircana/contexts/manifest_spec.rb[1:3:2] | passed | 0.00007 seconds |
66
- ./spec/aircana/contexts/manifest_spec.rb[1:3:3] | passed | 0.00016 seconds |
67
- ./spec/aircana/contexts/manifest_spec.rb[1:3:4] | passed | 0.00016 seconds |
68
- ./spec/aircana/contexts/manifest_spec.rb[1:4:1] | passed | 0.00015 seconds |
69
- ./spec/aircana/contexts/manifest_spec.rb[1:4:2] | passed | 0.00007 seconds |
70
- ./spec/aircana/contexts/manifest_spec.rb[1:5:1] | passed | 0.00013 seconds |
71
- ./spec/aircana/contexts/manifest_spec.rb[1:5:2] | passed | 0.00006 seconds |
72
- ./spec/aircana/contexts/manifest_spec.rb[1:6:1] | passed | 0.00008 seconds |
73
- ./spec/aircana/contexts/manifest_spec.rb[1:6:2] | passed | 0.00007 seconds |
74
- ./spec/aircana/contexts/manifest_spec.rb[1:6:3] | passed | 0.00007 seconds |
75
- ./spec/aircana/contexts/manifest_spec.rb[1:6:4] | passed | 0.00019 seconds |
76
- ./spec/aircana/contexts/manifest_spec.rb[1:6:5] | passed | 0.00007 seconds |
77
- ./spec/aircana/contexts/manifest_spec.rb[1:6:6] | passed | 0.00007 seconds |
78
- ./spec/aircana/contexts/manifest_spec.rb[1:6:7] | passed | 0.00007 seconds |
79
- ./spec/aircana/contexts/manifest_spec.rb[1:6:8] | passed | 0.00007 seconds |
80
- ./spec/aircana/contexts/manifest_spec.rb[1:6:9] | passed | 0.00006 seconds |
81
- ./spec/aircana/contexts/manifest_spec.rb[1:6:10] | passed | 0.00006 seconds |
82
- ./spec/aircana/contexts/manifest_spec.rb[1:6:11] | passed | 0.00014 seconds |
83
- ./spec/aircana/contexts/manifest_spec.rb[1:6:12] | passed | 0.00013 seconds |
84
- ./spec/aircana/contexts/web_spec.rb[1:1:1] | passed | 0.00019 seconds |
85
- ./spec/aircana/contexts/web_spec.rb[1:2:1] | passed | 0.00023 seconds |
86
- ./spec/aircana/contexts/web_spec.rb[1:3:1:1] | passed | 0.00027 seconds |
87
- ./spec/aircana/contexts/web_spec.rb[1:3:1:2] | passed | 0.00015 seconds |
88
- ./spec/aircana/contexts/web_spec.rb[1:3:1:3] | passed | 0.00013 seconds |
89
- ./spec/aircana/contexts/web_spec.rb[1:3:2:1] | passed | 0.00018 seconds |
90
- ./spec/aircana/contexts/web_spec.rb[1:3:2:2] | passed | 0.00014 seconds |
91
- ./spec/aircana/contexts/web_spec.rb[1:3:3:1] | passed | 0.0002 seconds |
92
- ./spec/aircana/contexts/web_spec.rb[1:3:3:2] | passed | 0.00031 seconds |
93
- ./spec/aircana/contexts/web_spec.rb[1:3:3:3] | passed | 0.0003 seconds |
94
- ./spec/aircana/contexts/web_spec.rb[1:3:3:4] | passed | 0.00032 seconds |
95
- ./spec/aircana/contexts/web_spec.rb[1:3:3:5] | passed | 0.00028 seconds |
96
- ./spec/aircana/contexts/web_spec.rb[1:3:4:1] | passed | 0.00016 seconds |
97
- ./spec/aircana/contexts/web_spec.rb[1:3:4:2] | passed | 0.00015 seconds |
98
- ./spec/aircana/contexts/web_spec.rb[1:3:4:3] | passed | 0.00014 seconds |
99
- ./spec/aircana/contexts/web_spec.rb[1:3:5:1] | passed | 0.00054 seconds |
100
- ./spec/aircana/contexts/web_spec.rb[1:3:5:2] | passed | 0.00015 seconds |
101
- ./spec/aircana/contexts/web_spec.rb[1:3:5:3] | passed | 0.00041 seconds |
102
- ./spec/aircana/contexts/web_spec.rb[1:3:6:1] | passed | 0.0003 seconds |
103
- ./spec/aircana/contexts/web_spec.rb[1:3:6:2] | passed | 0.00028 seconds |
104
- ./spec/aircana/contexts/web_spec.rb[1:3:6:3] | passed | 0.00028 seconds |
105
- ./spec/aircana/contexts/web_spec.rb[1:3:7:1] | passed | 0.00015 seconds |
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.00021 seconds |
108
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:2] | passed | 0.00019 seconds |
109
- ./spec/aircana/fzf_helper_spec.rb[1:1:1:3] | passed | 0.00022 seconds |
110
- ./spec/aircana/fzf_helper_spec.rb[1:1:2:1] | passed | 0.00028 seconds |
111
- ./spec/aircana/fzf_helper_spec.rb[1:1:3:1] | passed | 0.00027 seconds |
112
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:1] | passed | 0.00014 seconds |
113
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:2] | passed | 0.00013 seconds |
114
- ./spec/aircana/fzf_helper_spec.rb[1:2:1:3] | passed | 0.00017 seconds |
115
- ./spec/aircana/fzf_helper_spec.rb[1:2:2:1] | passed | 0.00013 seconds |
116
- ./spec/aircana/fzf_helper_spec.rb[1:2:2:2] | passed | 0.0001 seconds |
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.00047 seconds |
120
- ./spec/aircana/generators/hooks_generator_spec.rb[1:3:2] | passed | 0.00024 seconds |
121
- ./spec/aircana/generators/hooks_generator_spec.rb[1:4:1] | passed | 0.00012 seconds |
122
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:1:1] | passed | 0.00012 seconds |
123
- ./spec/aircana/generators/hooks_generator_spec.rb[1:5:2:1] | passed | 0.00004 seconds |
124
- ./spec/aircana/generators/hooks_generator_spec.rb[1:6:1] | passed | 0.00059 seconds |
125
- ./spec/aircana/generators/hooks_generator_spec.rb[1:7:1] | passed | 0.00019 seconds |
126
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:1] | passed | 0.00352 seconds |
127
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:2] | passed | 0.00035 seconds |
128
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:1:3] | passed | 0.00033 seconds |
129
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:1] | passed | 0.00014 seconds |
130
- ./spec/aircana/generators/plan_command_generator_spec.rb[1:2:2] | passed | 0.0001 seconds |
131
- ./spec/aircana/generators/record_command_generator_spec.rb[1:1:1] | passed | 0.00026 seconds |
132
- ./spec/aircana/generators/record_command_generator_spec.rb[1:2:1] | passed | 0.00095 seconds |
133
- ./spec/aircana/generators/record_command_generator_spec.rb[1:2:2] | passed | 0.00013 seconds |
134
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:1] | passed | 0.00016 seconds |
135
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:2] | passed | 0.00008 seconds |
136
- ./spec/aircana/generators/skills_generator_spec.rb[1:1:3] | passed | 0.00007 seconds |
137
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:1] | passed | 0.00021 seconds |
138
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:2] | passed | 0.00022 seconds |
139
- ./spec/aircana/generators/skills_generator_spec.rb[1:2:3] | passed | 0.00018 seconds |
140
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:1] | passed | 0.00008 seconds |
141
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:2] | passed | 0.00032 seconds |
142
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:3] | passed | 0.00008 seconds |
143
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:4] | passed | 0.00006 seconds |
144
- ./spec/aircana/generators/skills_generator_spec.rb[1:3:5] | passed | 0.00007 seconds |
145
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:1] | passed | 0.00006 seconds |
146
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:2] | passed | 0.00006 seconds |
147
- ./spec/aircana/generators/skills_generator_spec.rb[1:4:3] | passed | 0.00005 seconds |
148
- ./spec/aircana/generators/skills_generator_spec.rb[1:5:1] | passed | 0.00006 seconds |
149
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:1] | passed | 0.00007 seconds |
150
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:2] | passed | 0.00007 seconds |
151
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:3] | passed | 0.00007 seconds |
152
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:4] | passed | 0.00007 seconds |
153
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:5] | passed | 0.00007 seconds |
154
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:6] | passed | 0.00007 seconds |
155
- ./spec/aircana/generators/skills_generator_spec.rb[1:6:7] | passed | 0.00006 seconds |
156
- ./spec/aircana/generators/skills_generator_spec.rb[1:7:1] | passed | 0.00055 seconds |
157
- ./spec/aircana/generators/skills_generator_spec.rb[1:7:2] | passed | 0.00032 seconds |
158
- ./spec/aircana/human_logger_spec.rb[1:1:1] | passed | 0.00009 seconds |
159
- ./spec/aircana/human_logger_spec.rb[1:2:1] | passed | 0.00005 seconds |
160
- ./spec/aircana/human_logger_spec.rb[1:3:1] | passed | 0.00005 seconds |
161
- ./spec/aircana/human_logger_spec.rb[1:4:1] | passed | 0.00005 seconds |
162
- ./spec/aircana/human_logger_spec.rb[1:5:1] | passed | 0.00004 seconds |
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.00004 seconds |
165
- ./spec/aircana/human_logger_spec.rb[1:5:4] | passed | 0.00004 seconds |
166
- ./spec/aircana/human_logger_spec.rb[1:5:5] | passed | 0.00004 seconds |
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.00004 seconds |
169
- ./spec/aircana/human_logger_spec.rb[1:6:1] | passed | 0.00004 seconds |
170
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:1] | passed | 0.00067 seconds |
171
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:2] | passed | 0.00045 seconds |
172
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:3] | passed | 0.00041 seconds |
173
- ./spec/aircana/llm/claude_client_spec.rb[1:1:1:4] | passed | 0.00041 seconds |
174
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:1] | passed | 0.00047 seconds |
175
- ./spec/aircana/llm/claude_client_spec.rb[1:1:2:2] | passed | 0.0004 seconds |
176
- ./spec/aircana/llm/claude_client_spec.rb[1:1:3:1] | passed | 0.00047 seconds |
177
- ./spec/aircana/llm/claude_client_spec.rb[1:2:1] | passed | 0.00042 seconds |
178
- ./spec/aircana/llm/claude_client_spec.rb[1:2:2] | passed | 0.00041 seconds |
179
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:1] | passed | 0.00027 seconds |
180
- ./spec/aircana/llm/claude_client_spec.rb[1:3:1:2] | passed | 0.00025 seconds |
181
- ./spec/aircana/system_checker_spec.rb[1:1:1:1] | passed | 0.00038 seconds |
182
- ./spec/aircana/system_checker_spec.rb[1:1:2:1] | passed | 0.00053 seconds |
183
- ./spec/aircana/system_checker_spec.rb[1:1:3:1] | passed | 0.0008 seconds |
184
- ./spec/aircana/system_checker_spec.rb[1:2:1] | passed | 0.00028 seconds |
185
- ./spec/aircana/system_checker_spec.rb[1:2:2] | passed | 0.00026 seconds |
186
- ./spec/aircana/system_checker_spec.rb[1:3:1] | passed | 0.00024 seconds |
187
- ./spec/aircana/system_checker_spec.rb[1:3:2] | passed | 0.00027 seconds |
188
- ./spec/aircana/system_checker_spec.rb[1:3:3] | passed | 0.00029 seconds |
189
- ./spec/aircana/system_checker_spec.rb[1:3:4] | passed | 0.00035 seconds |
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.00004 seconds |
192
- ./spec/aircana_spec.rb[1:2] | passed | 0.0006 seconds |
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
- regenerate_skill_md(normalized_kb_name, short_description) unless fetched_confluence || fetched_urls
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
- # rubocop:disable Metrics/MethodLength
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
- generator = if short_description
229
- Generators::SkillsGenerator.new(
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
- # rubocop:enable Metrics/MethodLength
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
- summary = generate_summary(markdown_content, page["title"] || "Confluence page")
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Aircana
4
- VERSION = "4.0.0.rc4"
4
+ VERSION = "4.0.0.rc6"
5
5
  end
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.rc4
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: 1980-01-02 00:00:00.000000000 Z
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.9
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