@ikie-dev/cli 9.8.7 → 9.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) 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/ferment/index.ts +2 -0
  255. package/src/extensions/ferment/tools/escalate.ts +70 -0
  256. package/src/extensions/orchestration/continuation-nudge.test.ts +9 -0
  257. package/src/extensions/orchestration/continuation-nudge.ts +8 -0
  258. package/src/extensions/orchestration/model-roles.test.ts +6 -1
  259. package/src/extensions/orchestration/model-roles.ts +6 -0
  260. package/src/extensions/prompt-construction/prompt-enrichment.test.ts +49 -3
  261. package/src/extensions/prompt-construction/prompt-enrichment.ts +4 -1
  262. package/src/extensions/skills-manager/skill-manager.test.ts +31 -14
  263. package/src/extensions/skills-manager/skill-manager.ts +14 -5
  264. package/src/extensions/skills-manager/skill-sanitizer.test.ts +287 -0
  265. package/src/extensions/skills-manager/skill-sanitizer.ts +269 -0
  266. package/src/models.test.ts +3 -1
  267. package/src/shared/planning/tool-catalog.test.ts +15 -8
  268. package/src/shared/planning/tool-catalog.ts +4 -3
  269. package/vendor/superpowers/hooks/run-hook.cmd +0 -0
  270. package/vendor/superpowers/hooks/session-start +0 -0
  271. package/vendor/superpowers/scripts/bump-version.sh +0 -0
  272. package/vendor/superpowers/scripts/sync-to-codex-plugin.sh +0 -0
  273. package/vendor/superpowers/skills/brainstorming/scripts/start-server.sh +0 -0
  274. package/vendor/superpowers/skills/brainstorming/scripts/stop-server.sh +0 -0
  275. package/vendor/superpowers/skills/systematic-debugging/find-polluter.sh +0 -0
  276. package/vendor/superpowers/skills/writing-skills/render-graphs.js +0 -0
  277. package/vendor/superpowers/tests/brainstorm-server/windows-lifecycle.test.sh +0 -0
  278. package/vendor/superpowers/tests/claude-code/analyze-token-usage.py +0 -0
  279. package/vendor/superpowers/tests/claude-code/run-skill-tests.sh +0 -0
  280. package/vendor/superpowers/tests/claude-code/test-document-review-system.sh +0 -0
  281. package/vendor/superpowers/tests/claude-code/test-helpers.sh +0 -0
  282. package/vendor/superpowers/tests/claude-code/test-requesting-code-review.sh +0 -0
  283. package/vendor/superpowers/tests/claude-code/test-subagent-driven-development-integration.sh +0 -0
  284. package/vendor/superpowers/tests/claude-code/test-subagent-driven-development.sh +0 -0
  285. package/vendor/superpowers/tests/claude-code/test-worktree-native-preference.sh +0 -0
  286. package/vendor/superpowers/tests/codex-plugin-sync/test-sync-to-codex-plugin.sh +0 -0
  287. package/vendor/superpowers/tests/explicit-skill-requests/run-all.sh +0 -0
  288. package/vendor/superpowers/tests/explicit-skill-requests/run-claude-describes-sdd.sh +0 -0
  289. package/vendor/superpowers/tests/explicit-skill-requests/run-extended-multiturn-test.sh +0 -0
  290. package/vendor/superpowers/tests/explicit-skill-requests/run-haiku-test.sh +0 -0
  291. package/vendor/superpowers/tests/explicit-skill-requests/run-multiturn-test.sh +0 -0
  292. package/vendor/superpowers/tests/explicit-skill-requests/run-test.sh +0 -0
  293. package/vendor/superpowers/tests/opencode/run-tests.sh +0 -0
  294. package/vendor/superpowers/tests/opencode/setup.sh +0 -0
  295. package/vendor/superpowers/tests/opencode/test-bootstrap-caching.sh +0 -0
  296. package/vendor/superpowers/tests/opencode/test-plugin-loading.sh +0 -0
  297. package/vendor/superpowers/tests/opencode/test-priority.sh +0 -0
  298. package/vendor/superpowers/tests/opencode/test-tools.sh +0 -0
  299. package/vendor/superpowers/tests/skill-triggering/run-all.sh +0 -0
  300. package/vendor/superpowers/tests/skill-triggering/run-test.sh +0 -0
  301. package/vendor/superpowers/tests/subagent-driven-dev/go-fractals/scaffold.sh +0 -0
  302. package/vendor/superpowers/tests/subagent-driven-dev/run-test.sh +0 -0
  303. 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.1",
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)
@@ -38,6 +38,7 @@ import { getActive, getActiveId, getContinuationPolicy } from "./state.js"
38
38
  import { createFermentTipProvider } from "./tips.js"
39
39
  import { registerFermentTodoSync } from "./todo-sync.js"
40
40
  import { applyFermentRuntimeToolProfile } from "./tool-scope.js"
41
+ import { registerEscalateTool } from "./tools/escalate.js"
41
42
  import { registerKnowledgeTools } from "./tools/knowledge.js"
42
43
  import { buildFreeformScopingFeedbackMessage, registerLifecycleTools } from "./tools/lifecycle.js"
43
44
  import { registerPhaseTools } from "./tools/phases.js"
@@ -333,5 +334,6 @@ export default function fermentExtension(pi: ExtensionAPI, runtime: FermentRunti
333
334
  registerPhaseTools(pi, runtime)
334
335
  registerStepTools(pi, runtime)
335
336
  registerKnowledgeTools(pi, runtime)
337
+ registerEscalateTool(pi, runtime)
336
338
  registerAgentSpawnGuard(pi, runtime)
337
339
  }
@@ -0,0 +1,70 @@
1
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"
2
+ import { findFirstPlannedPhase } from "../../../ferment/engine.js"
3
+ import { captureGitHead } from "../phase-evidence.js"
4
+ import type { FermentRuntime } from "../runtime.js"
5
+ import { createApplyAndPersist, toolOk } from "../tool-helpers.js"
6
+ import { applyFermentToolProfile, profileForFerment } from "../tool-scope.js"
7
+
8
+ export function registerEscalateTool(pi: ExtensionAPI, runtime: FermentRuntime): void {
9
+ pi.registerTool({
10
+ name: "escalate_tools",
11
+ label: "Escalate Tools",
12
+ description:
13
+ "Upgrade your tool access when you need write/execute tools (bash, edit, write, start_ferment_step, etc.) that aren't currently available. " +
14
+ "If a ferment exists and is in planning phase, this activates the first planned phase and unlocks the full implementation toolset. " +
15
+ "If no ferment is active, it tells you how to start one.",
16
+ parameters: {
17
+ type: "object",
18
+ properties: {},
19
+ additionalProperties: false,
20
+ },
21
+ async execute() {
22
+ const ferment = runtime.getActive()
23
+
24
+ if (!ferment) {
25
+ return toolOk(
26
+ "No active ferment found. Use `/ferment new <your task>` to start one, then call escalate_tools again after scoping to begin implementation.",
27
+ )
28
+ }
29
+
30
+ const currentProfile = profileForFerment(ferment)
31
+ if (currentProfile === "implementation") {
32
+ return toolOk(
33
+ `Already in implementation phase (ferment: ${ferment.id}). All tools should be available. If something is still missing, check your permissions config.`,
34
+ )
35
+ }
36
+
37
+ const planned = findFirstPlannedPhase(ferment)
38
+ if (!planned) {
39
+ return toolOk(
40
+ `Ferment "${ferment.id}" has no planned phases to activate. Use scope_ferment to define phases, then call escalate_tools again.`,
41
+ )
42
+ }
43
+
44
+ const storage = runtime.getStorage()
45
+ const f = storage.get(ferment.id)
46
+ if (!f) {
47
+ return toolOk(`Ferment "${ferment.id}" not found in storage. Try /ferment list to see available ferments.`)
48
+ }
49
+
50
+ const applyAndPersist = createApplyAndPersist(runtime)
51
+ const outcome = applyAndPersist(ferment.id, { type: "activate_phase", phaseId: planned.id })
52
+ if (!outcome.ok) {
53
+ return toolOk(`Could not activate phase: ${outcome.error.message}`)
54
+ }
55
+
56
+ try {
57
+ applyFermentToolProfile(pi, profileForFerment(outcome.ferment))
58
+ } catch (err) {
59
+ console.error("[ferment] escalate_tools: applyFermentToolProfile failed", err)
60
+ }
61
+
62
+ const headRef = captureGitHead()
63
+ if (headRef) runtime.setPhaseStartRef(ferment.id, planned.id, headRef)
64
+
65
+ return toolOk(
66
+ `Phase "${planned.name}" activated. Tool access upgraded to implementation — you now have bash, edit, write, start_ferment_step, and all other execution tools.`,
67
+ )
68
+ },
69
+ })
70
+ }
@@ -30,6 +30,9 @@ function makeAssistant(content: AssistantMessage["content"]): AssistantMessage {
30
30
  }
31
31
 
32
32
  const textOnlyMessage = makeAssistant([{ type: "text", text: "I will delegate this to Nemotron." }])
33
+ const greetingMessage = makeAssistant([
34
+ { type: "text", text: "Hi there! I'm ready to help. What would you like to work on?" },
35
+ ])
33
36
 
34
37
  const toolCallMessage = makeAssistant([
35
38
  {
@@ -193,6 +196,12 @@ describe("ContinuationNudge.evaluateTurn", () => {
193
196
  simulateSessionWithPriorToolCall(guard)
194
197
  expect(guard.evaluateTurn(textOnlyMessage)).toBe(true)
195
198
  })
199
+
200
+ it("does not nudge normal conversational replies after prior tool use", () => {
201
+ const guard = new ContinuationNudge()
202
+ simulateSessionWithPriorToolCall(guard)
203
+ expect(guard.evaluateTurn(greetingMessage)).toBe(false)
204
+ })
196
205
  })
197
206
 
198
207
  describe("ContinuationNudge session-level tool tracking", () => {
@@ -44,6 +44,13 @@ export const SECOND_NUDGE_TEXT =
44
44
  export const EMPTY_TURN_NUDGE_TEXT =
45
45
  "If you have finished, please summarize the result for the user. Otherwise, continue with the next tool call."
46
46
 
47
+ const TOOL_INTENT_RE =
48
+ /\b(?:i(?:'|’)ll|i\s+will|let\s+me|i(?:'|’)m\s+going\s+to|i\s+am\s+going\s+to|going\s+to)\s+(?:delegate|hand\s+off|ask\s+(?:an?\s+)?(?:agent|subagent)|use|call|run|execute|inspect|read|search|grep|find|edit|write|modify|update|create|open|check|test|verify|review|analy[sz]e|investigate)\b|\b(?:delegating|handing\s+off|calling|running|executing|reading|searching|editing|writing|checking|testing|verifying|reviewing|investigating)\b|\b(?:use|call)\s+(?:the\s+)?(?:agent|task|bash|read|grep|glob|webfetch|apply_patch|tool)\b/i
49
+
50
+ function hasPendingToolIntent(message: AssistantMessage): boolean {
51
+ return message.content.some((c) => c.type === "text" && TOOL_INTENT_RE.test(c.text))
52
+ }
53
+
47
54
  /** Post-turn state machine for the "text-only drift" nudge.
48
55
  *
49
56
  * Fires at most twice per user-input cycle, and only when no tool has been
@@ -140,6 +147,7 @@ export class ContinuationNudge {
140
147
  const hasToolCalls = message.content.some((c) => c.type === "toolCall")
141
148
  const hasText = message.content.some((c) => c.type === "text" && c.text.trim().length > 0)
142
149
  if (hasToolCalls || !hasText) return false
150
+ if (!hasPendingToolIntent(message)) return false
143
151
  this.nudgeCountThisCycle++
144
152
  this.nudgeResponsePending = true
145
153
  return true
@@ -346,8 +346,13 @@ describe("validateModelRoles", () => {
346
346
  expect(result.unavailable).toHaveLength(0)
347
347
  })
348
348
 
349
- it("handles empty available set", () => {
349
+ it("does not warn for unavailable defaults unless requested", () => {
350
350
  const result = validateModelRoles(DEFAULT_MODEL_ROLES, new Set())
351
+ expect(result.unavailable).toHaveLength(0)
352
+ })
353
+
354
+ it("can include unavailable defaults for diagnostics", () => {
355
+ const result = validateModelRoles(DEFAULT_MODEL_ROLES, new Set(), { warnForDefaults: true })
351
356
  expect(result.unavailable.length).toBeGreaterThanOrEqual(5)
352
357
  const flaggedRoles = new Set(result.unavailable.map((u) => u.role))
353
358
  expect(flaggedRoles).toEqual(
@@ -237,15 +237,21 @@ export interface ModelRoleValidationResult {
237
237
  unavailable: { role: keyof ModelRoles; configuredModel: string }[]
238
238
  }
239
239
 
240
+ function roleValuesEqual(a: RoleModelAssignment, b: RoleModelAssignment): boolean {
241
+ return JSON.stringify(normalizeRoleModels(a)) === JSON.stringify(normalizeRoleModels(b))
242
+ }
243
+
240
244
  /**
241
245
  * Validate that each role's model(s) exist in the set of available model IDs.
242
246
  */
243
247
  export function validateModelRoles(
244
248
  roles: ModelRoles,
245
249
  availableModelIds: ReadonlySet<string>,
250
+ options: { warnForDefaults?: boolean } = {},
246
251
  ): ModelRoleValidationResult {
247
252
  const unavailable: ModelRoleValidationResult["unavailable"] = []
248
253
  for (const key of ROLE_KEYS) {
254
+ if (!options.warnForDefaults && roleValuesEqual(roles[key], DEFAULT_MODEL_ROLES[key])) continue
249
255
  const refs = normalizeRoleModels(roles[key])
250
256
  for (const ref of refs) {
251
257
  const id = modelIdFromRef(ref)