@ikie-dev/cli 9.8.7 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/.ikie/ferments/019f2b5d-426e-741a-a176-6031399e42cd/runtime.json +11 -0
  2. package/.ikie/ferments/019f2b5d-4289-71d5-9c92-949495910599/runtime.json +11 -0
  3. package/.ikie/ferments/019f2b5d-42a0-74f5-b804-1dd55616035a/runtime.json +11 -0
  4. package/.ikie/ferments/019f2b5d-42c5-7381-83e5-548f04ddbc55/runtime.json +12 -0
  5. package/.ikie/ferments/019f2b5d-42fd-702c-baef-81f5354cc24e/runtime.json +11 -0
  6. package/.ikie/ferments/019f2b5d-432e-7322-9af5-5333b4686468/runtime.json +15 -0
  7. package/.ikie/ferments/019f2b5d-434d-7429-b25f-0b58109fa362/runtime.json +15 -0
  8. package/.ikie/ferments/019f2b5d-436e-7389-b2ad-6a02cda4f9bb/runtime.json +15 -0
  9. package/.ikie/ferments/019f2b5d-439d-74dd-9786-13df51571d6b/runtime.json +13 -0
  10. package/.ikie/ferments/019f2b5d-43ce-71c9-81e0-16aa00ff9e28/runtime.json +15 -0
  11. package/.ikie/ferments/019f2b5d-440e-72cc-8509-b6b3fd2b6c6c/runtime.json +15 -0
  12. package/.ikie/ferments/019f2b5d-444f-73c1-8172-dbad1e42640a/runtime.json +11 -0
  13. package/.ikie/ferments/019f2b5d-4469-71c1-97ff-23e2bb7ccc3b/runtime.json +15 -0
  14. package/.ikie/ferments/019f2b5d-448d-714d-b181-338e8a5dc8e1/runtime.json +15 -0
  15. package/.ikie/ferments/019f2b5d-44ad-71fb-b0a9-a1f949f9129a/runtime.json +15 -0
  16. package/.ikie/ferments/019f2b5d-44ca-730d-993c-9a827d415ffd/runtime.json +15 -0
  17. package/.ikie/ferments/019f2b5d-44ec-71c8-8523-031284e26b4b/runtime.json +15 -0
  18. package/.ikie/ferments/019f2b5d-450e-7013-93c5-3dd9b900ebd3/runtime.json +15 -0
  19. package/.ikie/ferments/019f2b5d-452a-714d-aff8-fdaca0988792/runtime.json +15 -0
  20. package/.ikie/ferments/019f2b5d-4550-749d-8807-3e9493ba614b/runtime.json +15 -0
  21. package/.ikie/ferments/019f2b5d-4570-7713-8d0f-5d13e8446bfb/runtime.json +15 -0
  22. package/.ikie/ferments/019f2b5d-459a-778a-a7f7-3317ecd6837f/runtime.json +11 -0
  23. package/.ikie/ferments/019f2b5d-45c1-718d-9ba5-b55dd0160a78/runtime.json +11 -0
  24. package/.ikie/ferments/019f2b5d-45f9-7381-9394-4647f47a2132/reviews/phase-phase-1-1.json +63 -0
  25. package/.ikie/ferments/019f2b5d-45f9-7381-9394-4647f47a2132/runtime.json +17 -0
  26. package/.ikie/ferments/019f2b5d-4782-71d4-89de-9c3e734707c8/reviews/phase-phase-1-1.json +63 -0
  27. package/.ikie/ferments/019f2b5d-4782-71d4-89de-9c3e734707c8/runtime.json +17 -0
  28. package/.ikie/ferments/019f2b5d-4950-728c-bf46-542c8ec21a6c/runtime.json +11 -0
  29. package/.ikie/ferments/019f2b5d-4de5-75df-8d7d-a1cd2588a596/runtime.json +11 -0
  30. package/.ikie/ferments/019f2b5d-4e07-70d4-9152-0925c5f81057/runtime.json +11 -0
  31. package/.ikie/ferments/019f2b5d-4e28-7770-8b24-587c856e4b9b/runtime.json +11 -0
  32. package/.ikie/ferments/019f2b5d-4e48-7159-9cb7-6401c6930ed4/runtime.json +11 -0
  33. package/.ikie/ferments/019f2b5d-4e6e-73a9-8bfd-639e394f48a4/pending-proposal.json +45 -0
  34. package/.ikie/ferments/019f2b5d-4e85-73c4-b099-4f6dc69c5268/pending-proposal.json +45 -0
  35. package/.ikie/ferments/019f2b5d-4fd0-7019-a28a-49af2a0266ed/pending-proposal.json +45 -0
  36. package/.ikie/ferments/019f2b5d-5045-70cc-b084-9ccd595944b3/pending-proposal.json +45 -0
  37. package/.ikie/ferments/019f2b5d-5056-759a-ae60-d4e8d2f7554f/pending-proposal.json +45 -0
  38. package/.ikie/ferments/019f2b5d-883b-759c-8453-2a7e8200e481/runtime.json +13 -0
  39. package/.ikie/ferments/019f2b5d-8873-723e-9b60-75d7ece374f9/runtime.json +11 -0
  40. package/.ikie/ferments/019f2b5d-8898-70a3-8c9d-ef7f569c3e72/runtime.json +11 -0
  41. package/.ikie/ferments/019f2b5d-88b4-710c-ba72-ef0fc3dbf0ae/runtime.json +11 -0
  42. package/.ikie/ferments/019f2b5d-88d2-73cf-8983-953907020e62/runtime.json +11 -0
  43. package/.ikie/ferments/019f2b5d-88f3-73df-9ffa-dd262c3d4163/runtime.json +11 -0
  44. package/.ikie/ferments/019f2b5d-8912-74db-b14a-95e882507c3e/runtime.json +11 -0
  45. package/.ikie/ferments/019f2b5d-892b-76c2-b9b3-42dbf26fa1c5/runtime.json +11 -0
  46. package/.ikie/ferments/019f2b5d-8956-74d1-883d-b974060e341f/runtime.json +9 -0
  47. package/.ikie/ferments/019f2b5d-8979-741b-9ecc-2fe299103e8e/runtime.json +13 -0
  48. package/.ikie/ferments/019f2b5d-89a1-74ed-83f8-f19dd9f63c9d/runtime.json +11 -0
  49. package/.ikie/ferments/019f2b5d-89c9-71d8-88b2-8ded0c6a473e/runtime.json +11 -0
  50. package/.ikie/ferments/019f2b5d-8a28-7309-a773-95dde5282ddf/runtime.json +11 -0
  51. package/.ikie/ferments/019f2b5d-8a3c-7088-85cd-9e45836799c8/runtime.json +9 -0
  52. package/.ikie/ferments/019f2b5d-8a58-727b-8607-94e087e8b56f/runtime.json +9 -0
  53. package/.ikie/ferments/019f2b5d-8a6d-7465-bd8e-ab8c1cdbeef8/runtime.json +11 -0
  54. package/.ikie/ferments/019f2b5d-8b30-75d0-9526-93a548435f3a/runtime.json +11 -0
  55. package/.ikie/ferments/019f2b5d-8b4b-7352-a7a2-899427c50e5d/runtime.json +12 -0
  56. package/.ikie/ferments/019f2b5d-8b6f-723b-83fa-556273e78c4e/runtime.json +11 -0
  57. package/.ikie/ferments/019f2b5d-8b95-74b2-b003-5ecf17ff2936/runtime.json +11 -0
  58. package/.ikie/ferments/019f2b5d-8ba6-71f3-90eb-37751e5bab04/runtime.json +11 -0
  59. package/.ikie/ferments/019f2b5d-8bbe-7251-b4f0-5d52ca8bbd0f/runtime.json +11 -0
  60. package/.ikie/ferments/019f2b5d-8bd6-779d-b55d-3df6cfd3d4ba/runtime.json +13 -0
  61. package/.ikie/ferments/019f2b5d-8bee-75b5-acf7-95f68fd37837/runtime.json +11 -0
  62. package/.ikie/ferments/019f2b5d-9b8e-7307-a95c-7e184eed7946/reviews/phase-phase-1-1.json +41 -0
  63. package/.ikie/ferments/019f2b5d-9b8e-7307-a95c-7e184eed7946/runtime.json +11 -0
  64. package/.ikie/ferments/019f2b5d-9bd7-7418-a977-3d39b5027fcc/reviews/phase-phase-1-1.json +47 -0
  65. package/.ikie/ferments/019f2b5d-9bd7-7418-a977-3d39b5027fcc/runtime.json +13 -0
  66. package/.ikie/ferments/019f2b5d-9c36-738b-9800-c32b17ab0a08/reviews/phase-phase-1-1.json +40 -0
  67. package/.ikie/ferments/019f2b5d-9c36-738b-9800-c32b17ab0a08/runtime.json +9 -0
  68. package/.ikie/ferments/019f2b5d-9c67-76b8-9a49-00bf505ca1b8/reviews/phase-phase-1-1.json +40 -0
  69. package/.ikie/ferments/019f2b5d-9c67-76b8-9a49-00bf505ca1b8/runtime.json +9 -0
  70. package/.ikie/ferments/019f2b5d-9c80-73ba-98ca-fa4595c45658/reviews/phase-phase-1-1.json +40 -0
  71. package/.ikie/ferments/019f2b5d-9c80-73ba-98ca-fa4595c45658/runtime.json +9 -0
  72. package/.ikie/ferments/019f2b5d-9c9e-71a5-bd87-e317142e21fd/reviews/phase-phase-1-1.json +40 -0
  73. package/.ikie/ferments/019f2b5d-9c9e-71a5-bd87-e317142e21fd/runtime.json +9 -0
  74. package/.ikie/ferments/019f2b5d-9cc1-73bf-98ae-cdd3759fdbd4/reviews/phase-phase-1-1.json +40 -0
  75. package/.ikie/ferments/019f2b5d-9cc1-73bf-98ae-cdd3759fdbd4/runtime.json +9 -0
  76. package/.ikie/ferments/019f2b5d-9cd9-7478-aa4d-68ff15ec302e/reviews/phase-phase-1-1.json +62 -0
  77. package/.ikie/ferments/019f2b5d-9cd9-7478-aa4d-68ff15ec302e/runtime.json +9 -0
  78. package/.ikie/ferments/019f2b6e-10f5-71fd-b0ac-906640800f2a/runtime.json +11 -0
  79. package/.ikie/ferments/019f2b6e-111f-75fe-af2b-0a9cf1727058/runtime.json +11 -0
  80. package/.ikie/ferments/019f2b6e-113b-73de-9df2-3dc2058b0037/runtime.json +11 -0
  81. package/.ikie/ferments/019f2b6e-115e-772e-91f2-45da602cc046/runtime.json +12 -0
  82. package/.ikie/ferments/019f2b6e-1174-70a1-a06e-4c9a676e7a44/runtime.json +11 -0
  83. package/.ikie/ferments/019f2b6e-1199-70d9-ae9a-01e965e953f1/runtime.json +11 -0
  84. package/.ikie/ferments/019f2b6e-11d1-74af-ab47-8e94823af880/runtime.json +15 -0
  85. package/.ikie/ferments/019f2b6e-11f3-7087-a610-3673d9a730c8/runtime.json +15 -0
  86. package/.ikie/ferments/019f2b6e-1214-7778-974a-3773b4f88517/runtime.json +15 -0
  87. package/.ikie/ferments/019f2b6e-123b-762d-8600-80a4da430695/runtime.json +13 -0
  88. package/.ikie/ferments/019f2b6e-1271-76b7-8c79-2c86e0e70e8c/runtime.json +15 -0
  89. package/.ikie/ferments/019f2b6e-129a-731e-93aa-a4f113bfeda8/runtime.json +15 -0
  90. package/.ikie/ferments/019f2b6e-12db-728a-bea2-d97e3310b918/runtime.json +11 -0
  91. package/.ikie/ferments/019f2b6e-12f5-72a8-8ea9-e83e907bb297/runtime.json +15 -0
  92. package/.ikie/ferments/019f2b6e-131a-714e-8d20-eb7a6aaeed29/runtime.json +15 -0
  93. package/.ikie/ferments/019f2b6e-1349-72aa-a518-6fac705a8a5f/runtime.json +15 -0
  94. package/.ikie/ferments/019f2b6e-1374-740e-8b66-ccc849baf168/runtime.json +15 -0
  95. package/.ikie/ferments/019f2b6e-13a6-75fd-a594-0e6dec52929b/runtime.json +15 -0
  96. package/.ikie/ferments/019f2b6e-13d3-775b-a8ad-e8efc6332d52/runtime.json +15 -0
  97. package/.ikie/ferments/019f2b6e-13ff-753a-aac4-207bd4d84720/runtime.json +15 -0
  98. package/.ikie/ferments/019f2b6e-1423-71ba-9cb9-8d5dc4ba44af/runtime.json +15 -0
  99. package/.ikie/ferments/019f2b6e-1449-77b9-95f8-c8b9a5cdbe1b/runtime.json +15 -0
  100. package/.ikie/ferments/019f2b6e-1475-771f-95b7-41248e78e547/runtime.json +11 -0
  101. package/.ikie/ferments/019f2b6e-1498-76c2-a4c3-4a9d6ea8727d/runtime.json +11 -0
  102. package/.ikie/ferments/019f2b6e-14bd-77ad-89ea-7706d62850c0/reviews/phase-phase-1-1.json +63 -0
  103. package/.ikie/ferments/019f2b6e-14bd-77ad-89ea-7706d62850c0/runtime.json +17 -0
  104. package/.ikie/ferments/019f2b6e-1627-755e-943c-164dc672353c/reviews/phase-phase-1-1.json +63 -0
  105. package/.ikie/ferments/019f2b6e-1627-755e-943c-164dc672353c/runtime.json +17 -0
  106. package/.ikie/ferments/019f2b6e-17a9-74b2-921b-1d9ec0a01d5f/runtime.json +11 -0
  107. package/.ikie/ferments/019f2b6e-1bb3-71ad-8be1-e8e3cd1a78b8/runtime.json +11 -0
  108. package/.ikie/ferments/019f2b6e-1bde-778e-9fd2-dc5291b667d4/runtime.json +11 -0
  109. package/.ikie/ferments/019f2b6e-1bfd-717c-8ab8-6d6b97e73a76/runtime.json +11 -0
  110. package/.ikie/ferments/019f2b6e-1c1e-724b-80f7-e8084123ea42/runtime.json +11 -0
  111. package/.ikie/ferments/019f2b6e-1c3c-70a8-ab5c-8858a41b1111/pending-proposal.json +45 -0
  112. package/.ikie/ferments/019f2b6e-1c52-71af-975e-f514de2d2a9f/pending-proposal.json +45 -0
  113. package/.ikie/ferments/019f2b6e-1d84-726a-9382-0f49ac269f40/pending-proposal.json +45 -0
  114. package/.ikie/ferments/019f2b6e-1dcb-760e-b2cd-c06ba8d57f7c/pending-proposal.json +45 -0
  115. package/.ikie/ferments/019f2b6e-1de3-74a8-8567-7960dca0da46/pending-proposal.json +45 -0
  116. package/.ikie/ferments/019f2b6e-50b5-77dc-a145-de2797f954ba/runtime.json +13 -0
  117. package/.ikie/ferments/019f2b6e-513b-7019-9404-f46db9a8b3ec/runtime.json +11 -0
  118. package/.ikie/ferments/019f2b6e-5159-7711-9957-3393d05b23a3/runtime.json +11 -0
  119. package/.ikie/ferments/019f2b6e-5175-771d-8391-8f6b9f807ea8/runtime.json +11 -0
  120. package/.ikie/ferments/019f2b6e-519c-730d-bfed-592ef56a2720/runtime.json +11 -0
  121. package/.ikie/ferments/019f2b6e-51cd-709b-b3b5-352e20717ad9/runtime.json +11 -0
  122. package/.ikie/ferments/019f2b6e-51f0-728a-9edf-7e48bd6c69a7/runtime.json +11 -0
  123. package/.ikie/ferments/019f2b6e-521b-763a-9fe9-c7197b8209cd/runtime.json +11 -0
  124. package/.ikie/ferments/019f2b6e-5242-702d-a4aa-feb8569b86ad/runtime.json +9 -0
  125. package/.ikie/ferments/019f2b6e-5269-725a-be96-7135e5857c5f/runtime.json +13 -0
  126. package/.ikie/ferments/019f2b6e-52a5-74c9-b708-335a2e9bf42b/runtime.json +11 -0
  127. package/.ikie/ferments/019f2b6e-52e4-7506-89cb-182398a88f40/runtime.json +11 -0
  128. package/.ikie/ferments/019f2b6e-5389-736c-b328-dd8fa27082f9/runtime.json +11 -0
  129. package/.ikie/ferments/019f2b6e-53be-774f-9a27-291c66f2747a/runtime.json +9 -0
  130. package/.ikie/ferments/019f2b6e-53f4-73ae-bbca-2124c710812b/runtime.json +9 -0
  131. package/.ikie/ferments/019f2b6e-542e-71ee-87b1-37bbc5f40ccd/runtime.json +11 -0
  132. package/.ikie/ferments/019f2b6e-55b4-7238-89f5-a2a50dcaff05/runtime.json +11 -0
  133. package/.ikie/ferments/019f2b6e-55ec-72ba-a3b7-3b7739efe858/runtime.json +12 -0
  134. package/.ikie/ferments/019f2b6e-563d-721b-8ba0-f3286b33f62f/runtime.json +11 -0
  135. package/.ikie/ferments/019f2b6e-565b-7453-9046-2a7e60c63c62/runtime.json +11 -0
  136. package/.ikie/ferments/019f2b6e-5684-7125-a1ef-41494eb8be74/runtime.json +11 -0
  137. package/.ikie/ferments/019f2b6e-56a7-7512-b7e5-3c709a24a5e9/runtime.json +11 -0
  138. package/.ikie/ferments/019f2b6e-56ea-702a-9a97-7911f5f2caad/runtime.json +13 -0
  139. package/.ikie/ferments/019f2b6e-5730-75fb-bad2-18d701837e37/runtime.json +11 -0
  140. package/.ikie/ferments/019f2b6e-645f-7522-a80c-ddcd6935f5dc/reviews/phase-phase-1-1.json +41 -0
  141. package/.ikie/ferments/019f2b6e-645f-7522-a80c-ddcd6935f5dc/runtime.json +11 -0
  142. package/.ikie/ferments/019f2b6e-64aa-7328-ae9b-04f663f377b8/reviews/phase-phase-1-1.json +47 -0
  143. package/.ikie/ferments/019f2b6e-64aa-7328-ae9b-04f663f377b8/runtime.json +13 -0
  144. package/.ikie/ferments/019f2b6e-64fe-723a-99a2-0fab54b29f4a/reviews/phase-phase-1-1.json +40 -0
  145. package/.ikie/ferments/019f2b6e-64fe-723a-99a2-0fab54b29f4a/runtime.json +9 -0
  146. package/.ikie/ferments/019f2b6e-651b-7018-91c0-baa3cf77c217/reviews/phase-phase-1-1.json +40 -0
  147. package/.ikie/ferments/019f2b6e-651b-7018-91c0-baa3cf77c217/runtime.json +9 -0
  148. package/.ikie/ferments/019f2b6e-6533-70ee-a6de-6b3bc5ca17ef/reviews/phase-phase-1-1.json +40 -0
  149. package/.ikie/ferments/019f2b6e-6533-70ee-a6de-6b3bc5ca17ef/runtime.json +9 -0
  150. package/.ikie/ferments/019f2b6e-654d-7760-942f-6ea45bebb394/reviews/phase-phase-1-1.json +40 -0
  151. package/.ikie/ferments/019f2b6e-654d-7760-942f-6ea45bebb394/runtime.json +9 -0
  152. package/.ikie/ferments/019f2b6e-6563-74c5-bfd2-d8075d4005db/reviews/phase-phase-1-1.json +40 -0
  153. package/.ikie/ferments/019f2b6e-6563-74c5-bfd2-d8075d4005db/runtime.json +9 -0
  154. package/.ikie/ferments/019f2b6e-6586-748a-83ac-05ea7a9e24f3/reviews/phase-phase-1-1.json +62 -0
  155. package/.ikie/ferments/019f2b6e-6586-748a-83ac-05ea7a9e24f3/runtime.json +9 -0
  156. package/.ikie/ferments/019f2b8e-485a-722f-ab3e-0b23bdf37851/runtime.json +11 -0
  157. package/.ikie/ferments/019f2b8e-4876-7247-ba41-e38f1dc709af/runtime.json +11 -0
  158. package/.ikie/ferments/019f2b8e-488d-732e-9b99-75f4ad2f9983/runtime.json +11 -0
  159. package/.ikie/ferments/019f2b8e-48ad-70b7-b262-ecb600a8be1a/runtime.json +12 -0
  160. package/.ikie/ferments/019f2b8e-48d9-73af-92cb-aa861441eef8/runtime.json +11 -0
  161. package/.ikie/ferments/019f2b8e-4906-7494-9168-5e15c0e984ed/runtime.json +15 -0
  162. package/.ikie/ferments/019f2b8e-4929-71db-a7b5-b8686b433b49/runtime.json +15 -0
  163. package/.ikie/ferments/019f2b8e-494a-774c-8e7e-e881204e3b2b/runtime.json +15 -0
  164. package/.ikie/ferments/019f2b8e-4972-70ab-8b70-9f8ac3ad9f33/runtime.json +13 -0
  165. package/.ikie/ferments/019f2b8e-49a7-7058-95e7-ea362f0554ba/runtime.json +15 -0
  166. package/.ikie/ferments/019f2b8e-49d5-750e-a1e0-7e7cf027c6c7/runtime.json +15 -0
  167. package/.ikie/ferments/019f2b8e-4a12-7181-a65a-c6bbb6e750f3/runtime.json +11 -0
  168. package/.ikie/ferments/019f2b8e-4a2a-7741-a5d7-8109a9bf4c22/runtime.json +15 -0
  169. package/.ikie/ferments/019f2b8e-4a4e-712f-9830-598e984f59b5/runtime.json +15 -0
  170. package/.ikie/ferments/019f2b8e-4a72-71da-97bf-f2970d34ae8d/runtime.json +15 -0
  171. package/.ikie/ferments/019f2b8e-4a93-76bc-8a04-28cdbb24a987/runtime.json +15 -0
  172. package/.ikie/ferments/019f2b8e-4ab9-770e-b160-59b011c69b81/runtime.json +15 -0
  173. package/.ikie/ferments/019f2b8e-4ae2-7619-8055-ddefbc9f4698/runtime.json +15 -0
  174. package/.ikie/ferments/019f2b8e-4b0c-722e-9afe-6fab90611474/runtime.json +15 -0
  175. package/.ikie/ferments/019f2b8e-4b3f-7143-b577-91721e39f89d/runtime.json +15 -0
  176. package/.ikie/ferments/019f2b8e-4b72-720d-a104-19ce38a362e2/runtime.json +15 -0
  177. package/.ikie/ferments/019f2b8e-4bab-70e9-ac26-136c55e9e4c0/runtime.json +11 -0
  178. package/.ikie/ferments/019f2b8e-4bca-714d-80d0-317ca4733687/runtime.json +11 -0
  179. package/.ikie/ferments/019f2b8e-4bf1-7029-a93f-c509e847ec71/reviews/phase-phase-1-1.json +63 -0
  180. package/.ikie/ferments/019f2b8e-4bf1-7029-a93f-c509e847ec71/runtime.json +17 -0
  181. package/.ikie/ferments/019f2b8e-4d51-75ff-951e-652cf6a5e901/reviews/phase-phase-1-1.json +63 -0
  182. package/.ikie/ferments/019f2b8e-4d51-75ff-951e-652cf6a5e901/runtime.json +17 -0
  183. package/.ikie/ferments/019f2b8e-4ece-70cf-a9bb-9ba0327f74f1/runtime.json +11 -0
  184. package/.ikie/ferments/019f2b8e-52f5-71dc-86d6-d08c3dba9c10/runtime.json +11 -0
  185. package/.ikie/ferments/019f2b8e-5313-747f-b0b7-9ec09f80674a/runtime.json +11 -0
  186. package/.ikie/ferments/019f2b8e-5333-759e-9a2e-2198d28d8a31/runtime.json +11 -0
  187. package/.ikie/ferments/019f2b8e-535d-7501-86c4-2d120359fda5/runtime.json +11 -0
  188. package/.ikie/ferments/019f2b8e-537e-7528-b236-a550ec6f9b9b/pending-proposal.json +45 -0
  189. package/.ikie/ferments/019f2b8e-5393-74aa-86a6-31db0e99c73c/pending-proposal.json +45 -0
  190. package/.ikie/ferments/019f2b8e-54cd-7573-bb52-14899e431b6a/pending-proposal.json +45 -0
  191. package/.ikie/ferments/019f2b8e-551d-755d-9aa9-52bb0c7ce63e/pending-proposal.json +45 -0
  192. package/.ikie/ferments/019f2b8e-5549-708c-8b89-1a6cc53a4ec5/pending-proposal.json +45 -0
  193. package/.ikie/ferments/019f2b8e-8874-7469-a3ca-1f19416a5413/runtime.json +13 -0
  194. package/.ikie/ferments/019f2b8e-88a4-737d-82ba-59fb52017a81/runtime.json +11 -0
  195. package/.ikie/ferments/019f2b8e-88c7-7448-a22d-bc9dcd6e06a2/runtime.json +11 -0
  196. package/.ikie/ferments/019f2b8e-88dc-72a8-813b-c9f1c91a6dd2/runtime.json +11 -0
  197. package/.ikie/ferments/019f2b8e-88ee-7600-a227-18ca80b3d525/runtime.json +11 -0
  198. package/.ikie/ferments/019f2b8e-88ff-7027-9bb9-e583b435e8b0/runtime.json +11 -0
  199. package/.ikie/ferments/019f2b8e-8919-737a-9f89-b74eeb851e5c/runtime.json +11 -0
  200. package/.ikie/ferments/019f2b8e-8936-71cc-9056-bca6ef3cbb91/runtime.json +11 -0
  201. package/.ikie/ferments/019f2b8e-8966-77f5-b367-a9262cc45f25/runtime.json +9 -0
  202. package/.ikie/ferments/019f2b8e-8990-747d-b585-59cd82d765c6/runtime.json +13 -0
  203. package/.ikie/ferments/019f2b8e-89c9-71ed-a2e6-016626cbe5aa/runtime.json +11 -0
  204. package/.ikie/ferments/019f2b8e-89de-741f-ba71-489cca892cc4/runtime.json +11 -0
  205. package/.ikie/ferments/019f2b8e-8a1e-727d-b14a-daf7374500ea/runtime.json +11 -0
  206. package/.ikie/ferments/019f2b8e-8a35-7463-803e-de399c8d3158/runtime.json +9 -0
  207. package/.ikie/ferments/019f2b8e-8a51-72ad-b6d1-966e350960b7/runtime.json +9 -0
  208. package/.ikie/ferments/019f2b8e-8a6c-73e1-a3ab-f1e554db6b03/runtime.json +11 -0
  209. package/.ikie/ferments/019f2b8e-8b16-7688-a299-84f3acc74338/runtime.json +11 -0
  210. package/.ikie/ferments/019f2b8e-8b2f-71bf-8c76-21f5ce28b4fd/runtime.json +12 -0
  211. package/.ikie/ferments/019f2b8e-8b54-711e-b25c-8e06b22d52a3/runtime.json +11 -0
  212. package/.ikie/ferments/019f2b8e-8b66-7039-97d2-00e7b31d85fe/runtime.json +11 -0
  213. package/.ikie/ferments/019f2b8e-8b7a-76c8-8456-727db5f07f3f/runtime.json +11 -0
  214. package/.ikie/ferments/019f2b8e-8b8e-7451-a3d6-7fbcc67a28c9/runtime.json +11 -0
  215. package/.ikie/ferments/019f2b8e-8ba1-73e8-bff2-bfbc47873b3b/runtime.json +13 -0
  216. package/.ikie/ferments/019f2b8e-8bb9-721b-aad5-fab25fa9b1d1/runtime.json +11 -0
  217. package/.ikie/ferments/019f2b8e-982a-74b9-b1b2-ad6c1b598e0a/reviews/phase-phase-1-1.json +41 -0
  218. package/.ikie/ferments/019f2b8e-982a-74b9-b1b2-ad6c1b598e0a/runtime.json +11 -0
  219. package/.ikie/ferments/019f2b8e-986d-7469-949a-be76ce3780d3/reviews/phase-phase-1-1.json +47 -0
  220. package/.ikie/ferments/019f2b8e-986d-7469-949a-be76ce3780d3/runtime.json +13 -0
  221. package/.ikie/ferments/019f2b8e-98ba-749a-839a-f5b64fbca3bc/reviews/phase-phase-1-1.json +40 -0
  222. package/.ikie/ferments/019f2b8e-98ba-749a-839a-f5b64fbca3bc/runtime.json +9 -0
  223. package/.ikie/ferments/019f2b8e-98f7-7482-b89d-ca40d860d72b/reviews/phase-phase-1-1.json +40 -0
  224. package/.ikie/ferments/019f2b8e-98f7-7482-b89d-ca40d860d72b/runtime.json +9 -0
  225. package/.ikie/ferments/019f2b8e-991a-729a-83c8-0da93e3f26ff/reviews/phase-phase-1-1.json +40 -0
  226. package/.ikie/ferments/019f2b8e-991a-729a-83c8-0da93e3f26ff/runtime.json +9 -0
  227. package/.ikie/ferments/019f2b8e-9931-713f-845d-211cb77d0482/reviews/phase-phase-1-1.json +40 -0
  228. package/.ikie/ferments/019f2b8e-9931-713f-845d-211cb77d0482/runtime.json +9 -0
  229. package/.ikie/ferments/019f2b8e-9952-734c-a3b4-8877348a7856/reviews/phase-phase-1-1.json +40 -0
  230. package/.ikie/ferments/019f2b8e-9952-734c-a3b4-8877348a7856/runtime.json +9 -0
  231. package/.ikie/ferments/019f2b8e-9974-700e-b045-cc2244e4d691/reviews/phase-phase-1-1.json +62 -0
  232. package/.ikie/ferments/019f2b8e-9974-700e-b045-cc2244e4d691/runtime.json +9 -0
  233. package/benchmark/audit-session/audit-session.sh +0 -0
  234. package/benchmark/manual/check-session.py +0 -0
  235. package/benchmark/manual/new-session-claude.sh +0 -0
  236. package/benchmark/manual/new-session.sh +0 -0
  237. package/benchmark/manual/run-evaluation.sh +0 -0
  238. package/benchmark/manual/start-self-improvement.sh +0 -0
  239. package/benchmark/terminal-bench-2/scripts/analyze-ferment-bench.py +0 -0
  240. package/benchmark/terminal-bench-2/scripts/run-claude-code-ikie.sh +0 -0
  241. package/benchmark/terminal-bench-2/scripts/run-gsd-ikie.sh +0 -0
  242. package/benchmark/terminal-bench-2/scripts/run-local.sh +0 -0
  243. package/benchmark/terminal-bench-2/scripts/run-opencode-ikie.sh +0 -0
  244. package/benchmark/terminal-bench-2/scripts/run-release.sh +0 -0
  245. package/package.json +103 -125
  246. package/scripts/dev-overlay.sh +0 -0
  247. package/scripts/dev-startup.sh +0 -0
  248. package/scripts/install.sh +0 -0
  249. package/scripts/prepublish-npm.js +1 -1
  250. package/scripts/verify-acp-load.mjs +0 -0
  251. package/src/cli-auth/index.test.ts +14 -10
  252. package/src/extensions/agents/prompt/skill-loader.test.ts +18 -0
  253. package/src/extensions/agents/prompt/skill-loader.ts +4 -1
  254. package/src/extensions/prompt-construction/prompt-enrichment.test.ts +41 -0
  255. package/src/extensions/prompt-construction/prompt-enrichment.ts +4 -1
  256. package/src/extensions/skills-manager/skill-manager.test.ts +31 -14
  257. package/src/extensions/skills-manager/skill-manager.ts +14 -5
  258. package/src/extensions/skills-manager/skill-sanitizer.test.ts +287 -0
  259. package/src/extensions/skills-manager/skill-sanitizer.ts +269 -0
  260. package/src/models.test.ts +3 -1
  261. package/vendor/superpowers/hooks/run-hook.cmd +0 -0
  262. package/vendor/superpowers/hooks/session-start +0 -0
  263. package/vendor/superpowers/scripts/bump-version.sh +0 -0
  264. package/vendor/superpowers/scripts/sync-to-codex-plugin.sh +0 -0
  265. package/vendor/superpowers/skills/brainstorming/scripts/start-server.sh +0 -0
  266. package/vendor/superpowers/skills/brainstorming/scripts/stop-server.sh +0 -0
  267. package/vendor/superpowers/skills/systematic-debugging/find-polluter.sh +0 -0
  268. package/vendor/superpowers/skills/writing-skills/render-graphs.js +0 -0
  269. package/vendor/superpowers/tests/brainstorm-server/windows-lifecycle.test.sh +0 -0
  270. package/vendor/superpowers/tests/claude-code/analyze-token-usage.py +0 -0
  271. package/vendor/superpowers/tests/claude-code/run-skill-tests.sh +0 -0
  272. package/vendor/superpowers/tests/claude-code/test-document-review-system.sh +0 -0
  273. package/vendor/superpowers/tests/claude-code/test-helpers.sh +0 -0
  274. package/vendor/superpowers/tests/claude-code/test-requesting-code-review.sh +0 -0
  275. package/vendor/superpowers/tests/claude-code/test-subagent-driven-development-integration.sh +0 -0
  276. package/vendor/superpowers/tests/claude-code/test-subagent-driven-development.sh +0 -0
  277. package/vendor/superpowers/tests/claude-code/test-worktree-native-preference.sh +0 -0
  278. package/vendor/superpowers/tests/codex-plugin-sync/test-sync-to-codex-plugin.sh +0 -0
  279. package/vendor/superpowers/tests/explicit-skill-requests/run-all.sh +0 -0
  280. package/vendor/superpowers/tests/explicit-skill-requests/run-claude-describes-sdd.sh +0 -0
  281. package/vendor/superpowers/tests/explicit-skill-requests/run-extended-multiturn-test.sh +0 -0
  282. package/vendor/superpowers/tests/explicit-skill-requests/run-haiku-test.sh +0 -0
  283. package/vendor/superpowers/tests/explicit-skill-requests/run-multiturn-test.sh +0 -0
  284. package/vendor/superpowers/tests/explicit-skill-requests/run-test.sh +0 -0
  285. package/vendor/superpowers/tests/opencode/run-tests.sh +0 -0
  286. package/vendor/superpowers/tests/opencode/setup.sh +0 -0
  287. package/vendor/superpowers/tests/opencode/test-bootstrap-caching.sh +0 -0
  288. package/vendor/superpowers/tests/opencode/test-plugin-loading.sh +0 -0
  289. package/vendor/superpowers/tests/opencode/test-priority.sh +0 -0
  290. package/vendor/superpowers/tests/opencode/test-tools.sh +0 -0
  291. package/vendor/superpowers/tests/skill-triggering/run-all.sh +0 -0
  292. package/vendor/superpowers/tests/skill-triggering/run-test.sh +0 -0
  293. package/vendor/superpowers/tests/subagent-driven-dev/go-fractals/scaffold.sh +0 -0
  294. package/vendor/superpowers/tests/subagent-driven-dev/run-test.sh +0 -0
  295. package/vendor/superpowers/tests/subagent-driven-dev/svelte-todo/scaffold.sh +0 -0
@@ -0,0 +1,62 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "fermentId": "019f2b8e-9974-700e-b045-cc2244e4d691",
4
+ "phaseId": "phase-1",
5
+ "phaseName": "Phase 1",
6
+ "attempt": 1,
7
+ "timestamp": "2026-07-04T05:16:33.545Z",
8
+ "goal": "Build 1",
9
+ "summary": "phase done",
10
+ "stepSummaries": " 1. Step 1 [done]",
11
+ "diffAvailable": false,
12
+ "flags": [],
13
+ "derivedGrade": "A",
14
+ "reviewerRationale": "All gates pass; project checks validate.",
15
+ "gateVerdicts": [
16
+ {
17
+ "id": "F1",
18
+ "verdict": "pass",
19
+ "rationale": "All step verifications were real.",
20
+ "evidence": "step-1 used smoke"
21
+ },
22
+ {
23
+ "id": "F2",
24
+ "verdict": "pass",
25
+ "rationale": "Phase goal delivered.",
26
+ "evidence": "feature.ts:1-40"
27
+ },
28
+ {
29
+ "id": "F3",
30
+ "verdict": "pass",
31
+ "rationale": "Nothing deferred.",
32
+ "evidence": "n/a"
33
+ }
34
+ ],
35
+ "projectChecks": {
36
+ "discovered": true,
37
+ "anyFailed": false,
38
+ "commands": [
39
+ {
40
+ "kind": "test",
41
+ "command": "npm test",
42
+ "exitCode": 0,
43
+ "durationMs": 0,
44
+ "timedOut": false
45
+ },
46
+ {
47
+ "kind": "lint",
48
+ "command": "npm run lint",
49
+ "exitCode": 0,
50
+ "durationMs": 0,
51
+ "timedOut": false
52
+ },
53
+ {
54
+ "kind": "typecheck",
55
+ "command": "npm run typecheck",
56
+ "exitCode": 0,
57
+ "durationMs": 0,
58
+ "timedOut": false
59
+ }
60
+ ]
61
+ }
62
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "stepStartCounts": {},
4
+ "blockRetries": {},
5
+ "lastBlockHashes": {},
6
+ "stepCompleteAttempts": {},
7
+ "phaseStartRefs": {},
8
+ "stepStartRefs": {}
9
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,126 +1,104 @@
1
1
  {
2
- "name": "@ikie-dev/cli",
3
- "version": "9.8.7",
4
- "description": "ikie \u2014 a coding agent CLI powered by ikie AI",
5
- "type": "module",
6
- "license": "Apache-2.0",
7
- "bin": {
8
- "ikie-cli": "src/entry.ts"
9
- },
10
- "scripts": {
11
- "clean": "rm -rf dist",
12
- "build": "tsc --noEmit && node scripts/copy-resources.js --dev",
13
- "build:proxy-helper": "node scripts/build-proxy-helper.js",
14
- "build:binary": "node scripts/build-binary.js",
15
- "install:local": "node scripts/install-local.js",
16
- "build:binary-linux-arm64": "node scripts/build-binary.js --target linux-arm64",
17
- "build:binary-linux-x64": "node scripts/build-binary.js --target linux-x64",
18
- "build:binary-windows-x64": "node scripts/build-binary.js --target windows-x64",
19
- "dev": "make -C tools/proxy-helper/ copy-for-dev && bun run --preload ./src/set-package-dir.ts src/entry.ts",
20
- "dev:overlay": "scripts/dev-overlay.sh",
21
- "dev:setup": "bun run --preload ./src/set-package-dir.ts src/entry.ts setup",
22
- "lint": "biome check src/ scripts/",
23
- "lint:fix": "biome check --write src/ scripts/",
24
- "typecheck": "tsc --noEmit",
25
- "check": "pnpm run lint && pnpm run typecheck",
26
- "test": "vitest run --dir src",
27
- "test:smoke": "vitest run --config tests/smoke/vitest.config.ts",
28
- "test:e2e:tui": "pnpm run build:binary && node scripts/run-tui-e2e.js",
29
- "test:e2e:tui:debug": "pnpm run build:binary && node scripts/run-tui-e2e.js --debug",
30
- "test:e2e:tui:trace": "pnpm run build:binary && node scripts/run-tui-e2e.js --trace",
31
- "test:e2e:tui:trace:replay": "node scripts/run-tui-e2e.js replay",
32
- "test:e2e:acp": "pnpm run build:binary && vitest run --config tests/e2e/acp/vitest.config.ts",
33
- "prepublishOnly": "node scripts/prepublish-npm.js",
34
- "postinstall": "node scripts/patch-pi-ai-oauth.js",
35
- "prepare": "husky",
36
- "verify": "pnpm run check && pnpm run build:binary && pnpm run test && pnpm run test:smoke"
37
- },
38
- "piConfig": {
39
- "name": "ikie",
40
- "configDir": ".config/ikie/harness"
41
- },
42
- "dependencies": {
43
- "@agentclientprotocol/sdk": "0.19.2",
44
- "@clack/prompts": "^1.3.0",
45
- "@earendil-works/pi-ai": "0.78.1",
46
- "@earendil-works/pi-coding-agent": "0.78.1",
47
- "@earendil-works/pi-tui": "0.78.1",
48
- "@mixmark-io/domino": "^2.2.0",
49
- "@modelcontextprotocol/ext-apps": "^1.7.1",
50
- "@modelcontextprotocol/sdk": "^1.29.0",
51
- "@shikijs/cli": "^4.0.2",
52
- "@types/diff": "^8.0.0",
53
- "@types/proper-lockfile": "^4.1.4",
54
- "@types/ssh2": "^1.15.5",
55
- "@xterm/headless": "^6.0.0",
56
- "diff": "^9.0.0",
57
- "micromatch": "^4.0.8",
58
- "open": "^10.2.0",
59
- "proper-lockfile": "^4.1.2",
60
- "shell-quote": "^1.8.3",
61
- "shiki": "^4.0.2",
62
- "ssh2": "^1.17.0",
63
- "tar": "^7.5.15",
64
- "turndown": "^7.2.4",
65
- "undici": "^8.2.0",
66
- "uuid": "^14.0.0",
67
- "wcwidth": "^1.0.1",
68
- "ws": "^8.20.1",
69
- "yaml": "^2.8.4",
70
- "zod": "^4.4.3"
71
- },
72
- "peerDependencies": {
73
- "typebox": "*"
74
- },
75
- "optionalDependencies": {
76
- "@mariozechner/clipboard-darwin-arm64": "0.3.6",
77
- "@mariozechner/clipboard-darwin-universal": "0.3.6",
78
- "@mariozechner/clipboard-darwin-x64": "0.3.6",
79
- "@mariozechner/clipboard-linux-arm64-gnu": "0.3.6",
80
- "@mariozechner/clipboard-linux-arm64-musl": "0.3.6",
81
- "@mariozechner/clipboard-linux-x64-gnu": "0.3.6",
82
- "@mariozechner/clipboard-linux-x64-musl": "0.3.6",
83
- "@mariozechner/clipboard-win32-arm64-msvc": "0.3.6",
84
- "@mariozechner/clipboard-win32-x64-msvc": "0.3.6"
85
- },
86
- "devDependencies": {
87
- "@biomejs/biome": "^1.9.4",
88
- "@microsoft/tui-test": "0.0.4",
89
- "@types/micromatch": "^4.0.10",
90
- "@types/node": "^22.19.18",
91
- "@types/shell-quote": "^1.7.5",
92
- "@types/tar": "^7.0.87",
93
- "@types/turndown": "^5.0.6",
94
- "@types/ws": "^8.18.1",
95
- "husky": "^9.1.7",
96
- "node-pty": "^1.1.0",
97
- "playwright": "^1.59.1",
98
- "supports-color": "^10.2.2",
99
- "tsx": "^4.21.0",
100
- "typescript": "^5.9.3",
101
- "vitest": "^3.2.4"
102
- },
103
- "engines": {
104
- "node": ">=22.0.0"
105
- },
106
- "packageManager": "pnpm@10.8.1",
107
- "pnpm": {
108
- "onlyBuiltDependencies": [
109
- "@biomejs/biome",
110
- "esbuild",
111
- "koffi",
112
- "node-pty",
113
- "protobufjs"
114
- ],
115
- "ignoredOptionalDependencies": [
116
- "cpu-features",
117
- "nan"
118
- ],
119
- "patchedDependencies": {
120
- "@earendil-works/pi-tui": "patches/@earendil-works__pi-tui.patch",
121
- "playwright-core@1.59.1": "patches/playwright-core@1.59.1.patch",
122
- "@earendil-works/pi-ai@0.78.1": "patches/@earendil-works__pi-ai@0.78.1.patch",
123
- "@earendil-works/pi-coding-agent@0.78.1": "patches/@earendil-works__pi-coding-agent@0.78.1.patch"
124
- }
125
- }
126
- }
2
+ "name": "@ikie-dev/cli",
3
+ "version": "9.9.0",
4
+ "description": "ikie a coding agent CLI powered by ikie AI",
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "bin": {
8
+ "ikie-cli": "src/entry.ts"
9
+ },
10
+ "piConfig": {
11
+ "name": "ikie",
12
+ "configDir": ".config/ikie/harness"
13
+ },
14
+ "dependencies": {
15
+ "@agentclientprotocol/sdk": "0.19.2",
16
+ "@clack/prompts": "^1.3.0",
17
+ "@earendil-works/pi-ai": "0.78.1",
18
+ "@earendil-works/pi-coding-agent": "0.78.1",
19
+ "@earendil-works/pi-tui": "0.78.1",
20
+ "@mixmark-io/domino": "^2.2.0",
21
+ "@modelcontextprotocol/ext-apps": "^1.7.1",
22
+ "@modelcontextprotocol/sdk": "^1.29.0",
23
+ "@shikijs/cli": "^4.0.2",
24
+ "@types/diff": "^8.0.0",
25
+ "@types/proper-lockfile": "^4.1.4",
26
+ "@types/ssh2": "^1.15.5",
27
+ "@xterm/headless": "^6.0.0",
28
+ "diff": "^9.0.0",
29
+ "micromatch": "^4.0.8",
30
+ "open": "^10.2.0",
31
+ "proper-lockfile": "^4.1.2",
32
+ "shell-quote": "^1.8.3",
33
+ "shiki": "^4.0.2",
34
+ "ssh2": "^1.17.0",
35
+ "tar": "^7.5.15",
36
+ "turndown": "^7.2.4",
37
+ "undici": "^8.2.0",
38
+ "uuid": "^14.0.0",
39
+ "wcwidth": "^1.0.1",
40
+ "ws": "^8.20.1",
41
+ "yaml": "^2.8.4",
42
+ "zod": "^4.4.3"
43
+ },
44
+ "peerDependencies": {
45
+ "typebox": "*"
46
+ },
47
+ "optionalDependencies": {
48
+ "@mariozechner/clipboard-darwin-arm64": "0.3.6",
49
+ "@mariozechner/clipboard-darwin-universal": "0.3.6",
50
+ "@mariozechner/clipboard-darwin-x64": "0.3.6",
51
+ "@mariozechner/clipboard-linux-arm64-gnu": "0.3.6",
52
+ "@mariozechner/clipboard-linux-arm64-musl": "0.3.6",
53
+ "@mariozechner/clipboard-linux-x64-gnu": "0.3.6",
54
+ "@mariozechner/clipboard-linux-x64-musl": "0.3.6",
55
+ "@mariozechner/clipboard-win32-arm64-msvc": "0.3.6",
56
+ "@mariozechner/clipboard-win32-x64-msvc": "0.3.6"
57
+ },
58
+ "devDependencies": {
59
+ "@biomejs/biome": "^1.9.4",
60
+ "@microsoft/tui-test": "0.0.4",
61
+ "@types/micromatch": "^4.0.10",
62
+ "@types/node": "^22.19.18",
63
+ "@types/shell-quote": "^1.7.5",
64
+ "@types/tar": "^7.0.87",
65
+ "@types/turndown": "^5.0.6",
66
+ "@types/ws": "^8.18.1",
67
+ "husky": "^9.1.7",
68
+ "node-pty": "^1.1.0",
69
+ "playwright": "^1.59.1",
70
+ "supports-color": "^10.2.2",
71
+ "tsx": "^4.21.0",
72
+ "typescript": "^5.9.3",
73
+ "vitest": "^3.2.4"
74
+ },
75
+ "engines": {
76
+ "node": ">=22.0.0"
77
+ },
78
+ "scripts": {
79
+ "clean": "rm -rf dist",
80
+ "build": "tsc --noEmit && node scripts/copy-resources.js --dev",
81
+ "build:proxy-helper": "node scripts/build-proxy-helper.js",
82
+ "build:binary": "node scripts/build-binary.js",
83
+ "install:local": "node scripts/install-local.js",
84
+ "build:binary-linux-arm64": "node scripts/build-binary.js --target linux-arm64",
85
+ "build:binary-linux-x64": "node scripts/build-binary.js --target linux-x64",
86
+ "build:binary-windows-x64": "node scripts/build-binary.js --target windows-x64",
87
+ "dev": "make -C tools/proxy-helper/ copy-for-dev && bun run --preload ./src/set-package-dir.ts src/entry.ts",
88
+ "dev:overlay": "scripts/dev-overlay.sh",
89
+ "dev:setup": "bun run --preload ./src/set-package-dir.ts src/entry.ts setup",
90
+ "lint": "biome check src/ scripts/",
91
+ "lint:fix": "biome check --write src/ scripts/",
92
+ "typecheck": "tsc --noEmit",
93
+ "check": "pnpm run lint && pnpm run typecheck",
94
+ "test": "vitest run --dir src",
95
+ "test:smoke": "vitest run --config tests/smoke/vitest.config.ts",
96
+ "test:e2e:tui": "pnpm run build:binary && node scripts/run-tui-e2e.js",
97
+ "test:e2e:tui:debug": "pnpm run build:binary && node scripts/run-tui-e2e.js --debug",
98
+ "test:e2e:tui:trace": "pnpm run build:binary && node scripts/run-tui-e2e.js --trace",
99
+ "test:e2e:tui:trace:replay": "node scripts/run-tui-e2e.js replay",
100
+ "test:e2e:acp": "pnpm run build:binary && vitest run --config tests/e2e/acp/vitest.config.ts",
101
+ "postinstall": "node scripts/patch-pi-ai-oauth.js",
102
+ "verify": "pnpm run check && pnpm run build:binary && pnpm run test && pnpm run test:smoke"
103
+ }
104
+ }
File without changes
File without changes
File without changes
@@ -6,7 +6,7 @@
6
6
  // - src/core/export-html/<templates> (upstream pi-coding-agent looks there)
7
7
  // - package.json at the package root
8
8
 
9
- import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs"
9
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs"
10
10
  import { dirname, join } from "node:path"
11
11
  import { fileURLToPath } from "node:url"
12
12
 
File without changes
@@ -7,14 +7,16 @@ const mockFetch = vi.fn()
7
7
 
8
8
  const DEFAULT_BASE = "https://ikie-cli.xyz"
9
9
 
10
- function deviceResponse(overrides: Partial<{
11
- device_code: string
12
- user_code: string
13
- verification_uri: string
14
- verification_uri_complete: string
15
- expires_in: number
16
- interval: number
17
- }> = {}) {
10
+ function deviceResponse(
11
+ overrides: Partial<{
12
+ device_code: string
13
+ user_code: string
14
+ verification_uri: string
15
+ verification_uri_complete: string
16
+ expires_in: number
17
+ interval: number
18
+ }> = {},
19
+ ) {
18
20
  return {
19
21
  device_code: "dc-test-123",
20
22
  user_code: "ABC-123",
@@ -91,8 +93,10 @@ describe("authenticateViaBrowser", () => {
91
93
  })
92
94
 
93
95
  it("throws when cancelled via signal", async () => {
94
- mockFetch
95
- .mockResolvedValueOnce({ ok: true, json: () => Promise.resolve(deviceResponse({ expires_in: 60000, interval: 0 })) })
96
+ mockFetch.mockResolvedValueOnce({
97
+ ok: true,
98
+ json: () => Promise.resolve(deviceResponse({ expires_in: 60000, interval: 0 })),
99
+ })
96
100
 
97
101
  const ctrl = new AbortController()
98
102
  const promise = authenticateViaBrowser({ quiet: true, signal: ctrl.signal })
@@ -38,4 +38,22 @@ describe("preloadSkills", () => {
38
38
  expect(results[0].name).toBe("my-skill")
39
39
  expect(results[0].content).toContain("This is the skill content.")
40
40
  })
41
+
42
+ it("normalizes an invalid skill name before loading", () => {
43
+ const base = join(tmpdir(), `ikie-skill-test-${Date.now()}`)
44
+ const cwd = join(base, "project")
45
+
46
+ // Place skill at <cwd>/.pi/agent/skills (second entry in DEFAULT_SKILL_PATHS)
47
+ const skillDir = join(cwd, ".pi", "agent", "skills", "ckm:slides")
48
+ mkdirSync(skillDir, { recursive: true })
49
+ writeFileSync(
50
+ join(skillDir, "SKILL.md"),
51
+ "---\nname: ckm:slides\ndescription: slides skill\n---\nSlides skill body.",
52
+ )
53
+
54
+ const results = preloadSkills(["ckm-slides"], cwd)
55
+ expect(results).toHaveLength(1)
56
+ expect(results[0].name).toBe("ckm-slides")
57
+ expect(results[0].content).toContain("Slides skill body.")
58
+ })
41
59
  })
@@ -10,8 +10,11 @@ import { isAbsolute, join } from "node:path"
10
10
  import type { Skill } from "@earendil-works/pi-coding-agent"
11
11
  import { loadSkillsFromDir } from "@earendil-works/pi-coding-agent"
12
12
  import { DEFAULT_SKILL_PATHS } from "../../../config.js"
13
+ import { createSkillSanitizer } from "../../skills-manager/skill-sanitizer.js"
13
14
  import { isUnsafeName } from "../memory/memory.js"
14
15
 
16
+ const skillSanitizer = createSkillSanitizer()
17
+
15
18
  export interface PreloadedSkill {
16
19
  name: string
17
20
  content: string
@@ -44,7 +47,7 @@ export function preloadSkills(skillNames: string[], cwd: string): PreloadedSkill
44
47
  const allSkills = new Map<string, Skill>()
45
48
  for (const dir of resolvedPaths) {
46
49
  try {
47
- const { skills } = loadSkillsFromDir({ dir, source: dir })
50
+ const { skills } = loadSkillsFromDir({ dir: skillSanitizer.sanitizePath(dir), source: dir })
48
51
  for (const skill of skills) {
49
52
  // Later paths (higher priority) override earlier ones
50
53
  allSkills.set(skill.name, skill)
@@ -3,6 +3,7 @@ import { arch, version as osVersion, platform, release, tmpdir } from "node:os"
3
3
  import { join } from "node:path"
4
4
  import type { AssistantMessage, ToolResultMessage } from "@earendil-works/pi-ai"
5
5
  import type { ExtensionAPI, ToolInfo } from "@earendil-works/pi-coding-agent"
6
+ import { loadSkillsFromDir } from "@earendil-works/pi-coding-agent"
6
7
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"
7
8
  import * as config from "../../config.js"
8
9
  import type { ModelMetadata } from "../../models.js"
@@ -509,6 +510,46 @@ describe("prompt enrichment Claude Code skills", () => {
509
510
 
510
511
  expect(result.systemPrompt).not.toContain("<name>typescript-safety</name>")
511
512
  })
513
+
514
+ it("sanitizes project skill names and emits no name-validation diagnostics", async () => {
515
+ const cwd = join(dir, "project")
516
+ const skillDir = join(cwd, ".ikie", "skills", "ckm-slides")
517
+ writeRawSkill(
518
+ join(skillDir, "SKILL.md"),
519
+ `---
520
+ name: ckm:slides
521
+ description: Ikie project slides skill.
522
+ ---
523
+
524
+ # Slides
525
+
526
+ Slides skill body.
527
+ `,
528
+ )
529
+
530
+ const { createSkillSanitizer } = await import("../skills-manager/skill-sanitizer.js")
531
+ const sanitizer = createSkillSanitizer()
532
+ const sanitizedDir = sanitizer.sanitizePath(skillDir)
533
+ const directLoad = loadSkillsFromDir({ dir: sanitizedDir, source: "project" })
534
+ const nameDiagnostics = directLoad.diagnostics.filter(
535
+ (d) => d.type === "warning" && typeof d.message === "string" && d.message.toLowerCase().includes("name"),
536
+ )
537
+ expect(nameDiagnostics).toEqual([])
538
+ expect(directLoad.skills.map((s) => s.name)).toContain("ckm-slides")
539
+ sanitizer.cleanup()
540
+
541
+ const { beforeAgentStart } = buildPromptExtensionWithHandlers([])
542
+ if (!beforeAgentStart) throw new Error("before_agent_start handler was not registered")
543
+
544
+ const result = (await beforeAgentStart(
545
+ {},
546
+ { cwd, model: undefined, hasUI: false, sessionManager: { getSessionId: () => "session-1" } },
547
+ )) as { systemPrompt: string }
548
+
549
+ expect(result.systemPrompt).toContain("<available_skills>")
550
+ expect(result.systemPrompt).toContain("<name>ckm-slides</name>")
551
+ expect(result.systemPrompt).toContain("Ikie project slides skill.")
552
+ })
512
553
  })
513
554
 
514
555
  describe("append system prompt", () => {
@@ -63,6 +63,7 @@ import {
63
63
  splitModelRef,
64
64
  validateModelRoles,
65
65
  } from "../orchestration/model-roles.js"
66
+ import { createSkillSanitizer } from "../skills-manager/skill-sanitizer.js"
66
67
  import { getCurrentPhase } from "../tags.js"
67
68
  import { type ContextFile, loadGlobalContextFiles, loadProjectContextFiles } from "./context-files.js"
68
69
  import {
@@ -476,6 +477,8 @@ export default function (skillPaths: string[]) {
476
477
  const cachedUsername = safeUsername()
477
478
  const cachedHomeDir = homedir()
478
479
 
480
+ const skillSanitizer = createSkillSanitizer()
481
+
479
482
  let cachedContextFiles: ContextFile[] | undefined
480
483
  let cachedSkills: Skill[] | undefined
481
484
  let cachedGitRemote: string | undefined | null = null
@@ -505,7 +508,7 @@ export default function (skillPaths: string[]) {
505
508
  cachedSkills = loadSkills({
506
509
  cwd: ctx.cwd,
507
510
  agentDir: getAgentDir(),
508
- skillPaths: allSkillPaths,
511
+ skillPaths: allSkillPaths.map((p) => skillSanitizer.sanitizePath(p)),
509
512
  includeDefaults: false,
510
513
  }).skills
511
514
  }
@@ -15,36 +15,53 @@ import {
15
15
 
16
16
  describe("validateName", () => {
17
17
  const valid = (name: string) => expect(validateName(name)).toBeNull()
18
- const invalid = (name: string, contains: string) => {
19
- const result = validateName(name)
20
- expect(result).not.toBeNull()
21
- expect(result?.toLowerCase()).toContain(contains)
18
+ const invalid = (name: string) => {
19
+ expect(validateName(name)).not.toBeNull()
22
20
  }
23
21
 
24
22
  it("accepts valid names", () => {
23
+ valid("ckm-slides")
24
+ valid("ui-ux-pro-max")
25
25
  valid("systematic-debugging")
26
- valid("debug_v2")
27
- valid("foo.bar")
28
26
  valid("abc123")
29
27
  })
30
28
 
31
- it("rejects names starting with non-alphanumeric", () => {
32
- invalid("-foo", "start")
33
- invalid("_bar", "start")
29
+ it("rejects names with colons", () => {
30
+ invalid("ckm:slides")
31
+ })
32
+
33
+ it("rejects names with underscores", () => {
34
+ invalid("foo_bar")
35
+ invalid("debug_v2")
36
+ })
37
+
38
+ it("rejects names with dots", () => {
39
+ invalid("foo.bar")
40
+ })
41
+
42
+ it("rejects names with a leading hyphen", () => {
43
+ invalid("-bad")
44
+ })
45
+
46
+ it("rejects names with consecutive hyphens", () => {
47
+ invalid("bad--bad")
48
+ })
49
+
50
+ it("rejects names starting with an underscore", () => {
51
+ invalid("_bar")
34
52
  })
35
53
 
36
54
  it("rejects uppercase letters", () => {
37
- invalid("Foo", "lowercase")
38
- invalid("SYSTEM", "lowercase")
55
+ invalid("Foo")
56
+ invalid("SYSTEM")
39
57
  })
40
58
 
41
59
  it("rejects names longer than 64 chars", () => {
42
- invalid("a".repeat(65), "64")
60
+ invalid("a".repeat(65))
43
61
  })
44
62
 
45
63
  it("rejects names with spaces", () => {
46
- const result = validateName("foo bar")
47
- expect(result).not.toBeNull()
64
+ invalid("foo bar")
48
65
  })
49
66
  })
50
67
 
@@ -44,23 +44,32 @@ export interface SkillManageResult {
44
44
  path?: string
45
45
  }
46
46
 
47
- const NAME_RE = /^[a-z0-9][a-z0-9._-]*$/
47
+ // Agent Skills spec: only lowercase a-z, 0-9, hyphens; no leading/trailing
48
+ // hyphens; no consecutive hyphens; max 64 characters.
49
+ const SKILL_NAME_RE = /^[a-z0-9]+(-[a-z0-9]+)*$/
50
+ // Category directory names are filesystem-side only, so they allow a broader
51
+ // set of characters (dots, underscores) but still reject spaces and must
52
+ // start with a lowercase letter or digit.
53
+ const CATEGORY_RE = /^[a-z0-9][a-z0-9._-]*$/
48
54
  const MAX_NAME_LEN = 64
49
55
  const ALLOWED_SUBDIRS = new Set(["references", "templates", "scripts", "assets"])
50
56
 
51
57
  export function validateName(name: string): string | null {
52
58
  if (name.length === 0) return "Name cannot be empty."
53
59
  if (name.length > MAX_NAME_LEN) return `Name must be at most ${MAX_NAME_LEN} characters.`
54
- if (!NAME_RE.test(name)) {
55
- if (!/^[a-z0-9]/.test(name)) return "Name must start with a lowercase letter or digit."
56
- return "Name must contain only lowercase letters, digits, dots, underscores, or hyphens."
60
+ if (!SKILL_NAME_RE.test(name)) {
61
+ return "Name must contain only lowercase letters, digits, and hyphens, with no leading or trailing hyphens or consecutive hyphens."
57
62
  }
58
63
  return null
59
64
  }
60
65
 
61
66
  export function validateCategory(category?: string): string | null {
62
67
  if (!category) return null
63
- return validateName(category)
68
+ if (category.length > MAX_NAME_LEN) return `Category must be at most ${MAX_NAME_LEN} characters.`
69
+ if (!CATEGORY_RE.test(category)) {
70
+ return "Category must start with a lowercase letter or digit and contain only lowercase letters, digits, dots, underscores, or hyphens."
71
+ }
72
+ return null
64
73
  }
65
74
 
66
75
  /**