@ikie-dev/cli 9.8.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 (2522) hide show
  1. package/.envrc +3 -0
  2. package/.github/CODEOWNERS +16 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +85 -0
  4. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.yml +24 -0
  6. package/.github/ISSUE_TEMPLATE/question.yml +16 -0
  7. package/.github/actions/setup/action.yml +49 -0
  8. package/.github/pull_request_template.md +18 -0
  9. package/.github/release.yml +17 -0
  10. package/.github/workflows/acp-e2e.yml +52 -0
  11. package/.github/workflows/arc-terminal-bench-poc.yml +157 -0
  12. package/.github/workflows/auto-label-pr.yml +90 -0
  13. package/.github/workflows/canary.yml +302 -0
  14. package/.github/workflows/ci.yml +114 -0
  15. package/.github/workflows/close-stale.yml +21 -0
  16. package/.github/workflows/release.yml +288 -0
  17. package/.github/workflows/require-linked-issue.yml +21 -0
  18. package/.github/workflows/stale.yml +32 -0
  19. package/.github/workflows/tui-e2e.yml +52 -0
  20. package/.github/workflows/welcome.yml +21 -0
  21. package/.gitmodules +3 -0
  22. package/.husky/pre-commit +1 -0
  23. package/.ikie/ferments/019f2735-088f-75e4-9a8f-7d7b037c2a59/runtime.json +11 -0
  24. package/.ikie/ferments/019f2735-08b3-70fe-88df-8dd1494f6a8e/runtime.json +11 -0
  25. package/.ikie/ferments/019f2735-08d3-7041-8d5e-a153e2937274/runtime.json +11 -0
  26. package/.ikie/ferments/019f2735-08f8-7591-bf1a-6c1324842331/runtime.json +12 -0
  27. package/.ikie/ferments/019f2735-0913-73d5-82b4-37012a5c1148/runtime.json +11 -0
  28. package/.ikie/ferments/019f2735-0940-76dc-b667-964b9cd9294d/runtime.json +11 -0
  29. package/.ikie/ferments/019f2735-0971-7094-92e3-b8ea4cdb9390/runtime.json +15 -0
  30. package/.ikie/ferments/019f2735-0999-72aa-9727-f6e8c3427ed6/runtime.json +15 -0
  31. package/.ikie/ferments/019f2735-09bf-76dd-88a2-c7e574b45636/runtime.json +15 -0
  32. package/.ikie/ferments/019f2735-09f1-77af-8820-89c0b3b5a182/runtime.json +13 -0
  33. package/.ikie/ferments/019f2735-0a49-77d9-b4c7-5a80bbbbafd9/runtime.json +15 -0
  34. package/.ikie/ferments/019f2735-0a79-73c3-977b-0c9164267b94/runtime.json +15 -0
  35. package/.ikie/ferments/019f2735-0abd-70ba-a794-fbb63fbf23de/runtime.json +11 -0
  36. package/.ikie/ferments/019f2735-0ad6-7079-8576-8fb651b4b698/runtime.json +15 -0
  37. package/.ikie/ferments/019f2735-0b03-70db-b5e5-59b1869aa2dc/runtime.json +15 -0
  38. package/.ikie/ferments/019f2735-0b34-7675-a4ed-39a15333e3b8/runtime.json +15 -0
  39. package/.ikie/ferments/019f2735-0b6c-716e-9f92-c391d6acb6f0/runtime.json +15 -0
  40. package/.ikie/ferments/019f2735-0b90-72be-a60d-3dd4c514d1c3/runtime.json +15 -0
  41. package/.ikie/ferments/019f2735-0baf-72e7-b5c5-99d8533b8343/runtime.json +15 -0
  42. package/.ikie/ferments/019f2735-0bd8-70f8-9d83-1a2b9152a013/runtime.json +15 -0
  43. package/.ikie/ferments/019f2735-0bfa-70de-ad20-7fe8c41b968e/runtime.json +15 -0
  44. package/.ikie/ferments/019f2735-0c26-7246-a2ab-f24f5a76fc5f/runtime.json +15 -0
  45. package/.ikie/ferments/019f2735-0c49-771b-934f-4afdb5664666/runtime.json +11 -0
  46. package/.ikie/ferments/019f2735-0c63-73f8-944e-14d19e69ba41/runtime.json +11 -0
  47. package/.ikie/ferments/019f2735-0c80-772b-8530-2df4d15b9d7a/reviews/phase-phase-1-1.json +63 -0
  48. package/.ikie/ferments/019f2735-0c80-772b-8530-2df4d15b9d7a/runtime.json +17 -0
  49. package/.ikie/ferments/019f2735-0dfc-7551-b147-aa46815027f5/reviews/phase-phase-1-1.json +63 -0
  50. package/.ikie/ferments/019f2735-0dfc-7551-b147-aa46815027f5/runtime.json +17 -0
  51. package/.ikie/ferments/019f2735-0f74-70f6-804c-e4d2145b32e1/runtime.json +11 -0
  52. package/.ikie/ferments/019f2735-1354-7041-854e-e6a577467dd0/runtime.json +11 -0
  53. package/.ikie/ferments/019f2735-1371-749f-8ea9-01f7f8734568/runtime.json +11 -0
  54. package/.ikie/ferments/019f2735-138f-72f2-ba7b-7912ad4cd7b9/runtime.json +11 -0
  55. package/.ikie/ferments/019f2735-13ad-710a-9c4d-38a30a0f4b37/runtime.json +11 -0
  56. package/.ikie/ferments/019f2735-13cb-7698-88c1-890fba497dc0/pending-proposal.json +45 -0
  57. package/.ikie/ferments/019f2735-13da-77dd-a916-8d82348671d2/pending-proposal.json +45 -0
  58. package/.ikie/ferments/019f2735-14d3-727a-81db-347c03cb2919/pending-proposal.json +45 -0
  59. package/.ikie/ferments/019f2735-1521-736e-8b75-22e94a8775f7/pending-proposal.json +45 -0
  60. package/.ikie/ferments/019f2735-1542-777c-a3a7-bc7f1edf1922/pending-proposal.json +45 -0
  61. package/.ikie/ferments/019f2735-3528-75bc-b100-8deb63dfde55/runtime.json +13 -0
  62. package/.ikie/ferments/019f2735-3553-72d8-a60d-9357420e110a/runtime.json +11 -0
  63. package/.ikie/ferments/019f2735-3569-756b-bc90-01c9ab00e413/runtime.json +11 -0
  64. package/.ikie/ferments/019f2735-3583-71d0-83f9-fc40b292190b/runtime.json +11 -0
  65. package/.ikie/ferments/019f2735-3597-7571-8332-47b3443395a6/runtime.json +11 -0
  66. package/.ikie/ferments/019f2735-35b3-74fe-a5db-82651a97cf0d/runtime.json +11 -0
  67. package/.ikie/ferments/019f2735-35de-741a-94e7-7b89c4eaaa43/runtime.json +11 -0
  68. package/.ikie/ferments/019f2735-35f5-713c-9892-f6179e783d02/runtime.json +11 -0
  69. package/.ikie/ferments/019f2735-360d-7056-a5e0-43fb3eb0f98e/runtime.json +9 -0
  70. package/.ikie/ferments/019f2735-362e-756c-b848-34f3c3c4602b/runtime.json +13 -0
  71. package/.ikie/ferments/019f2735-364a-76f9-bfba-ba52ca3852fd/runtime.json +11 -0
  72. package/.ikie/ferments/019f2735-3662-754c-8a88-807a68e0790e/runtime.json +11 -0
  73. package/.ikie/ferments/019f2735-36c2-71f9-a003-2921a1792be1/runtime.json +11 -0
  74. package/.ikie/ferments/019f2735-36d6-751d-9776-1e1def988d2d/runtime.json +9 -0
  75. package/.ikie/ferments/019f2735-36ef-70bf-a6b2-f2a0944f1b7e/runtime.json +9 -0
  76. package/.ikie/ferments/019f2735-3712-77e3-a46e-c69470e4e850/runtime.json +11 -0
  77. package/.ikie/ferments/019f2735-37cf-712f-bfaa-8fc9e29da513/runtime.json +11 -0
  78. package/.ikie/ferments/019f2735-37ed-727a-8a74-fe716d22571d/runtime.json +12 -0
  79. package/.ikie/ferments/019f2735-3810-7370-b587-eef0bb9d4d81/runtime.json +11 -0
  80. package/.ikie/ferments/019f2735-3828-71ad-9ee9-62fa0f46cad7/runtime.json +11 -0
  81. package/.ikie/ferments/019f2735-383f-722b-8d96-5038b9c9aa5a/runtime.json +11 -0
  82. package/.ikie/ferments/019f2735-385a-72c8-b269-a87a416c5a10/runtime.json +11 -0
  83. package/.ikie/ferments/019f2735-386d-73fe-be0a-1bc89a0264c4/runtime.json +13 -0
  84. package/.ikie/ferments/019f2735-388a-7276-9bee-81dcd177953f/runtime.json +11 -0
  85. package/.ikie/ferments/019f2735-82ed-74e8-870d-d8678feaf7bb/reviews/phase-phase-1-1.json +41 -0
  86. package/.ikie/ferments/019f2735-82ed-74e8-870d-d8678feaf7bb/runtime.json +11 -0
  87. package/.ikie/ferments/019f2735-831e-70aa-b9d6-1214165775d0/reviews/phase-phase-1-1.json +47 -0
  88. package/.ikie/ferments/019f2735-831e-70aa-b9d6-1214165775d0/runtime.json +13 -0
  89. package/.ikie/ferments/019f2735-835e-73b3-bb48-2d0080526fc3/reviews/phase-phase-1-1.json +40 -0
  90. package/.ikie/ferments/019f2735-835e-73b3-bb48-2d0080526fc3/runtime.json +9 -0
  91. package/.ikie/ferments/019f2735-8379-74b6-b62f-816bb5276a85/reviews/phase-phase-1-1.json +40 -0
  92. package/.ikie/ferments/019f2735-8379-74b6-b62f-816bb5276a85/runtime.json +9 -0
  93. package/.ikie/ferments/019f2735-8391-7385-bab6-03362866622a/reviews/phase-phase-1-1.json +40 -0
  94. package/.ikie/ferments/019f2735-8391-7385-bab6-03362866622a/runtime.json +9 -0
  95. package/.ikie/ferments/019f2735-83ad-7251-8280-aa6f7f3bfc5e/reviews/phase-phase-1-1.json +40 -0
  96. package/.ikie/ferments/019f2735-83ad-7251-8280-aa6f7f3bfc5e/runtime.json +9 -0
  97. package/.ikie/ferments/019f2735-83d2-77be-984e-fb65263a3a5b/reviews/phase-phase-1-1.json +40 -0
  98. package/.ikie/ferments/019f2735-83d2-77be-984e-fb65263a3a5b/runtime.json +9 -0
  99. package/.ikie/ferments/019f2735-83ec-7743-acc5-b2bf14c3cc54/reviews/phase-phase-1-1.json +62 -0
  100. package/.ikie/ferments/019f2735-83ec-7743-acc5-b2bf14c3cc54/runtime.json +9 -0
  101. package/.ikie/ferments/019f2740-c8c5-720f-b641-214bb99d8a83/runtime.json +11 -0
  102. package/.ikie/ferments/019f2740-c8fb-763f-8310-88c7e558e410/runtime.json +11 -0
  103. package/.ikie/ferments/019f2740-c917-70d2-8be6-15f376c60a70/runtime.json +11 -0
  104. package/.ikie/ferments/019f2740-c984-711f-a903-4b2251918413/runtime.json +12 -0
  105. package/.ikie/ferments/019f2740-ca09-71cf-93a5-86efc136ecd5/runtime.json +11 -0
  106. package/.ikie/ferments/019f2740-ca46-77f4-ae02-88e42f2153fb/runtime.json +15 -0
  107. package/.ikie/ferments/019f2740-ca74-72dd-8855-3feedfa071db/runtime.json +15 -0
  108. package/.ikie/ferments/019f2740-ca9a-710b-9bb7-feffa42cdb36/runtime.json +15 -0
  109. package/.ikie/ferments/019f2740-cac9-7518-ae93-973e4cf364ce/runtime.json +13 -0
  110. package/.ikie/ferments/019f2740-cb04-71c1-83a7-a448fefc6764/runtime.json +15 -0
  111. package/.ikie/ferments/019f2740-cb35-743b-bc18-434c7c233a08/runtime.json +15 -0
  112. package/.ikie/ferments/019f2740-cb6e-742c-970b-1893b4bf4e87/runtime.json +11 -0
  113. package/.ikie/ferments/019f2740-cb92-76a7-bd20-fd4f3f17664f/runtime.json +15 -0
  114. package/.ikie/ferments/019f2740-cbc1-7509-8542-302d2d1d3084/runtime.json +15 -0
  115. package/.ikie/ferments/019f2740-cbfa-719d-94c0-9d03a864e7e1/runtime.json +15 -0
  116. package/.ikie/ferments/019f2740-cc31-75f8-82a0-7d8078979000/runtime.json +15 -0
  117. package/.ikie/ferments/019f2740-cc58-765b-9f0c-c3aa2e09f27b/runtime.json +15 -0
  118. package/.ikie/ferments/019f2740-cc7c-7375-99b4-e90496e819e3/runtime.json +15 -0
  119. package/.ikie/ferments/019f2740-cca3-704a-bc20-e8c35cff6cec/runtime.json +15 -0
  120. package/.ikie/ferments/019f2740-ccd1-71cf-b8e8-be3527117f9a/runtime.json +15 -0
  121. package/.ikie/ferments/019f2740-cd0c-771f-ba4a-9188c31f3ee4/runtime.json +15 -0
  122. package/.ikie/ferments/019f2740-cd39-778e-a052-cc7f522f022d/runtime.json +11 -0
  123. package/.ikie/ferments/019f2740-cd5f-725e-8ec7-48a624398d2f/runtime.json +11 -0
  124. package/.ikie/ferments/019f2740-cd7f-713e-b20f-2321c13a86a8/reviews/phase-phase-1-1.json +63 -0
  125. package/.ikie/ferments/019f2740-cd7f-713e-b20f-2321c13a86a8/runtime.json +17 -0
  126. package/.ikie/ferments/019f2740-cf49-72fc-94b1-a262676c1136/reviews/phase-phase-1-1.json +63 -0
  127. package/.ikie/ferments/019f2740-cf49-72fc-94b1-a262676c1136/runtime.json +17 -0
  128. package/.ikie/ferments/019f2740-d16a-763d-b668-7c7cebc74c16/runtime.json +11 -0
  129. package/.ikie/ferments/019f2740-d675-747d-aa4c-b60d1616d218/runtime.json +11 -0
  130. package/.ikie/ferments/019f2740-d6ad-72de-bab7-e6344d568636/runtime.json +11 -0
  131. package/.ikie/ferments/019f2740-d6db-751a-bf3b-09d1c7ba989b/runtime.json +11 -0
  132. package/.ikie/ferments/019f2740-d712-75c8-b209-efc11bb1a22a/runtime.json +11 -0
  133. package/.ikie/ferments/019f2740-d745-764f-b758-99b0df2d6c01/pending-proposal.json +45 -0
  134. package/.ikie/ferments/019f2740-d76b-74a8-94c1-3d0cabd8cacf/pending-proposal.json +45 -0
  135. package/.ikie/ferments/019f2740-d88d-722b-8265-c8b89e1e59db/pending-proposal.json +45 -0
  136. package/.ikie/ferments/019f2740-d8f6-756a-b704-8a64a28290e8/pending-proposal.json +45 -0
  137. package/.ikie/ferments/019f2740-d90b-730f-87b9-85bee8e00a55/pending-proposal.json +45 -0
  138. package/.ikie/ferments/019f2740-f11f-76ff-9bd0-1e449804cc12/runtime.json +13 -0
  139. package/.ikie/ferments/019f2740-f155-767e-96db-6cf60c8b8dc1/runtime.json +11 -0
  140. package/.ikie/ferments/019f2740-f172-755f-a741-8e55858f5362/runtime.json +11 -0
  141. package/.ikie/ferments/019f2740-f18f-7328-b679-49f91b3c558c/runtime.json +11 -0
  142. package/.ikie/ferments/019f2740-f1b4-7289-b2f3-46f2bedf0e8f/runtime.json +11 -0
  143. package/.ikie/ferments/019f2740-f1dc-769b-bfe1-abcbcfd8ff2f/runtime.json +11 -0
  144. package/.ikie/ferments/019f2740-f1ed-760b-91dc-3bf7950fc112/runtime.json +11 -0
  145. package/.ikie/ferments/019f2740-f1fd-72dd-9c40-e6ab17b819ef/runtime.json +11 -0
  146. package/.ikie/ferments/019f2740-f23d-7588-95af-66be8cae9529/runtime.json +9 -0
  147. package/.ikie/ferments/019f2740-f269-7334-9c82-6554d9fc595a/runtime.json +13 -0
  148. package/.ikie/ferments/019f2740-f2bf-7147-9e68-cd8cb74d1604/runtime.json +11 -0
  149. package/.ikie/ferments/019f2740-f2f3-73db-9542-23a91c3632e5/runtime.json +11 -0
  150. package/.ikie/ferments/019f2740-f387-77e6-99f2-7cabb6f1ef37/runtime.json +11 -0
  151. package/.ikie/ferments/019f2740-f3af-722d-92a8-b49ab2e974fd/runtime.json +9 -0
  152. package/.ikie/ferments/019f2740-f3e6-7142-870c-ec1ee626cef4/runtime.json +9 -0
  153. package/.ikie/ferments/019f2740-f408-74f3-b1a2-3187af4e7bf8/runtime.json +11 -0
  154. package/.ikie/ferments/019f2740-f535-7419-8dc5-3c00bfeb566e/runtime.json +11 -0
  155. package/.ikie/ferments/019f2740-f546-7749-b0bd-cc0ec724f9c4/runtime.json +12 -0
  156. package/.ikie/ferments/019f2740-f576-7649-a468-cc473a719123/runtime.json +11 -0
  157. package/.ikie/ferments/019f2740-f599-7239-aa50-4bde87b6fe17/runtime.json +11 -0
  158. package/.ikie/ferments/019f2740-f5b8-7236-9b88-a0abe214d6b6/runtime.json +11 -0
  159. package/.ikie/ferments/019f2740-f5d1-73fc-9eea-06cf527069f2/runtime.json +11 -0
  160. package/.ikie/ferments/019f2740-f5fb-757e-b89e-52aeb00d53a0/runtime.json +13 -0
  161. package/.ikie/ferments/019f2740-f616-7770-96df-c4d02e293b96/runtime.json +11 -0
  162. package/.ikie/ferments/019f2741-09b2-777a-960c-544786151af2/reviews/phase-phase-1-1.json +41 -0
  163. package/.ikie/ferments/019f2741-09b2-777a-960c-544786151af2/runtime.json +11 -0
  164. package/.ikie/ferments/019f2741-0a0a-735a-b158-6a1f99b53082/reviews/phase-phase-1-1.json +47 -0
  165. package/.ikie/ferments/019f2741-0a0a-735a-b158-6a1f99b53082/runtime.json +13 -0
  166. package/.ikie/ferments/019f2741-0a87-74ec-bcb1-e88127e8739b/reviews/phase-phase-1-1.json +40 -0
  167. package/.ikie/ferments/019f2741-0a87-74ec-bcb1-e88127e8739b/runtime.json +9 -0
  168. package/.ikie/ferments/019f2741-0aaa-7399-905b-0c8f62000e15/reviews/phase-phase-1-1.json +40 -0
  169. package/.ikie/ferments/019f2741-0aaa-7399-905b-0c8f62000e15/runtime.json +9 -0
  170. package/.ikie/ferments/019f2741-0acc-7062-86e9-0d2d365446d9/reviews/phase-phase-1-1.json +40 -0
  171. package/.ikie/ferments/019f2741-0acc-7062-86e9-0d2d365446d9/runtime.json +9 -0
  172. package/.ikie/ferments/019f2741-0b14-709e-a5aa-80efb5a3c7d7/reviews/phase-phase-1-1.json +40 -0
  173. package/.ikie/ferments/019f2741-0b14-709e-a5aa-80efb5a3c7d7/runtime.json +9 -0
  174. package/.ikie/ferments/019f2741-0b3d-77ed-bdd9-322103b094e2/reviews/phase-phase-1-1.json +40 -0
  175. package/.ikie/ferments/019f2741-0b3d-77ed-bdd9-322103b094e2/runtime.json +9 -0
  176. package/.ikie/ferments/019f2741-0b7b-70ab-b3d6-ada61a3e0a92/reviews/phase-phase-1-1.json +62 -0
  177. package/.ikie/ferments/019f2741-0b7b-70ab-b3d6-ada61a3e0a92/runtime.json +9 -0
  178. package/.ikie/ferments/019f2742-b177-74a8-90f2-c1130a6ddae7/runtime.json +11 -0
  179. package/.ikie/ferments/019f2742-b193-72cf-9826-86ede671e061/runtime.json +11 -0
  180. package/.ikie/ferments/019f2742-b1af-76d9-972c-b67a2f5854d1/runtime.json +11 -0
  181. package/.ikie/ferments/019f2742-b1de-763e-8e31-a14505f9b64d/runtime.json +12 -0
  182. package/.ikie/ferments/019f2742-b25b-71fe-81de-89fc3b431b39/runtime.json +11 -0
  183. package/.ikie/ferments/019f2742-b291-7078-ba58-d4b50df3dd81/runtime.json +15 -0
  184. package/.ikie/ferments/019f2742-b2db-71a8-9d5d-da4bccc3e572/runtime.json +15 -0
  185. package/.ikie/ferments/019f2742-b305-7323-86c6-39adaa181f18/runtime.json +15 -0
  186. package/.ikie/ferments/019f2742-b330-77ad-9315-8ca801c973e8/runtime.json +13 -0
  187. package/.ikie/ferments/019f2742-b377-703f-9781-394729f9fe89/runtime.json +15 -0
  188. package/.ikie/ferments/019f2742-b3af-75aa-9bb7-750cb6af56e4/runtime.json +15 -0
  189. package/.ikie/ferments/019f2742-b3fb-7159-a969-be0073f90b6d/runtime.json +11 -0
  190. package/.ikie/ferments/019f2742-b41a-730e-ae6e-89421276e69d/runtime.json +15 -0
  191. package/.ikie/ferments/019f2742-b44e-75ec-824c-f6b77f643438/runtime.json +15 -0
  192. package/.ikie/ferments/019f2742-b47d-70c6-af2f-04922c1aef02/runtime.json +15 -0
  193. package/.ikie/ferments/019f2742-b4ad-748b-86db-3c8ae8907dbc/runtime.json +15 -0
  194. package/.ikie/ferments/019f2742-b4d5-72ff-a1b0-0da356ab94e6/runtime.json +15 -0
  195. package/.ikie/ferments/019f2742-b508-71fd-8181-7bb013178e5e/runtime.json +15 -0
  196. package/.ikie/ferments/019f2742-b536-7129-8b5c-2e132b38a98e/runtime.json +15 -0
  197. package/.ikie/ferments/019f2742-b55d-738b-8663-88a05c1e44b5/runtime.json +15 -0
  198. package/.ikie/ferments/019f2742-b587-714c-b043-f0a553a22404/runtime.json +15 -0
  199. package/.ikie/ferments/019f2742-b5b5-74ff-a850-a24ff317c1df/runtime.json +11 -0
  200. package/.ikie/ferments/019f2742-b5f5-72ba-b6b8-a4d62df39a2c/runtime.json +11 -0
  201. package/.ikie/ferments/019f2742-b621-7530-8e63-d252ae47ffd6/reviews/phase-phase-1-1.json +63 -0
  202. package/.ikie/ferments/019f2742-b621-7530-8e63-d252ae47ffd6/runtime.json +17 -0
  203. package/.ikie/ferments/019f2742-b7c0-756d-8014-e96fec9713ee/reviews/phase-phase-1-1.json +63 -0
  204. package/.ikie/ferments/019f2742-b7c0-756d-8014-e96fec9713ee/runtime.json +17 -0
  205. package/.ikie/ferments/019f2742-b95b-76bb-a4a6-e5cc31788fe3/runtime.json +11 -0
  206. package/.ikie/ferments/019f2742-be6b-759b-ba34-29d0245dc929/runtime.json +11 -0
  207. package/.ikie/ferments/019f2742-be98-73ba-aac5-07ad4f7d887d/runtime.json +11 -0
  208. package/.ikie/ferments/019f2742-beba-703c-aadb-32c590404bfa/runtime.json +11 -0
  209. package/.ikie/ferments/019f2742-bee0-76ad-9e47-81cff634877f/runtime.json +11 -0
  210. package/.ikie/ferments/019f2742-bf10-742f-a792-7aa3836d81ad/pending-proposal.json +45 -0
  211. package/.ikie/ferments/019f2742-bf36-779c-b126-2ccb8ec97138/pending-proposal.json +45 -0
  212. package/.ikie/ferments/019f2742-c098-74ee-9a07-575f50989d9f/pending-proposal.json +45 -0
  213. package/.ikie/ferments/019f2742-c135-74fe-aefa-d1a5db536132/pending-proposal.json +45 -0
  214. package/.ikie/ferments/019f2742-c19a-779c-a175-27330932470d/pending-proposal.json +45 -0
  215. package/.ikie/ferments/019f2742-db2a-745f-b7c8-8fb383e044e7/runtime.json +13 -0
  216. package/.ikie/ferments/019f2742-db83-77ac-b1d2-a422571fbcf6/runtime.json +11 -0
  217. package/.ikie/ferments/019f2742-dba7-779e-9560-7df90ddab3c4/runtime.json +11 -0
  218. package/.ikie/ferments/019f2742-dbd2-740c-9f94-9f313c07ee52/runtime.json +11 -0
  219. package/.ikie/ferments/019f2742-dbfb-77b3-8e3f-b0d20bd29689/runtime.json +11 -0
  220. package/.ikie/ferments/019f2742-dc10-769d-b9a2-bab4851f5cf5/runtime.json +11 -0
  221. package/.ikie/ferments/019f2742-dc23-7235-a215-8b86d261566a/runtime.json +11 -0
  222. package/.ikie/ferments/019f2742-dc37-762d-a5da-87ff3f2206b0/runtime.json +11 -0
  223. package/.ikie/ferments/019f2742-dc65-73c8-aa07-f803b1066c8b/runtime.json +9 -0
  224. package/.ikie/ferments/019f2742-dc91-7165-bbfe-4659f754c4a6/runtime.json +13 -0
  225. package/.ikie/ferments/019f2742-dcd1-7252-ad9b-12c0dab633e6/runtime.json +11 -0
  226. package/.ikie/ferments/019f2742-dceb-75ba-b8cb-557e60aa4a9b/runtime.json +11 -0
  227. package/.ikie/ferments/019f2742-dd2f-77a6-b71c-a9543ac1145f/runtime.json +11 -0
  228. package/.ikie/ferments/019f2742-dd6a-70ab-aff3-ae678e8be52f/runtime.json +9 -0
  229. package/.ikie/ferments/019f2742-dd85-7529-90c0-2cb497df7711/runtime.json +9 -0
  230. package/.ikie/ferments/019f2742-dda0-715e-ae24-693bfa79f191/runtime.json +11 -0
  231. package/.ikie/ferments/019f2742-deb9-7319-9599-d96743413a8c/runtime.json +11 -0
  232. package/.ikie/ferments/019f2742-dee3-705e-9550-b7701bc8dfbf/runtime.json +12 -0
  233. package/.ikie/ferments/019f2742-df10-71bf-8ac0-8e4a8c40cfa8/runtime.json +11 -0
  234. package/.ikie/ferments/019f2742-df29-735f-817c-2819becd5092/runtime.json +11 -0
  235. package/.ikie/ferments/019f2742-df46-7592-b070-7bdf50095ce2/runtime.json +11 -0
  236. package/.ikie/ferments/019f2742-df66-75e4-9926-4d5dacd457f4/runtime.json +11 -0
  237. package/.ikie/ferments/019f2742-df96-71c4-973e-045dc4f272e0/runtime.json +13 -0
  238. package/.ikie/ferments/019f2742-dfca-7353-bfd3-f010ec0726e8/runtime.json +11 -0
  239. package/.ikie/ferments/019f2742-f0fb-77cb-9a95-25a7231702b7/reviews/phase-phase-1-1.json +41 -0
  240. package/.ikie/ferments/019f2742-f0fb-77cb-9a95-25a7231702b7/runtime.json +11 -0
  241. package/.ikie/ferments/019f2742-f145-77ec-a4c7-fafd1605d492/reviews/phase-phase-1-1.json +47 -0
  242. package/.ikie/ferments/019f2742-f145-77ec-a4c7-fafd1605d492/runtime.json +13 -0
  243. package/.ikie/ferments/019f2742-f1dc-74bd-8452-067d9c1b909d/reviews/phase-phase-1-1.json +40 -0
  244. package/.ikie/ferments/019f2742-f1dc-74bd-8452-067d9c1b909d/runtime.json +9 -0
  245. package/.ikie/ferments/019f2742-f1fd-745d-b989-9a2d3ec7594d/reviews/phase-phase-1-1.json +40 -0
  246. package/.ikie/ferments/019f2742-f1fd-745d-b989-9a2d3ec7594d/runtime.json +9 -0
  247. package/.ikie/ferments/019f2742-f21a-7398-9190-8bba01c6248e/reviews/phase-phase-1-1.json +40 -0
  248. package/.ikie/ferments/019f2742-f21a-7398-9190-8bba01c6248e/runtime.json +9 -0
  249. package/.ikie/ferments/019f2742-f23a-73b1-89d2-1272093e6d2d/reviews/phase-phase-1-1.json +40 -0
  250. package/.ikie/ferments/019f2742-f23a-73b1-89d2-1272093e6d2d/runtime.json +9 -0
  251. package/.ikie/ferments/019f2742-f25c-74d1-80b3-129a992edd3f/reviews/phase-phase-1-1.json +40 -0
  252. package/.ikie/ferments/019f2742-f25c-74d1-80b3-129a992edd3f/runtime.json +9 -0
  253. package/.ikie/ferments/019f2742-f285-708d-bdd2-c2875cc16158/reviews/phase-phase-1-1.json +62 -0
  254. package/.ikie/ferments/019f2742-f285-708d-bdd2-c2875cc16158/runtime.json +9 -0
  255. package/.ikie/ferments/019f2745-3a6e-7769-8da0-1994b591349d/runtime.json +11 -0
  256. package/.ikie/ferments/019f2745-3a8c-74db-bd6b-b4a1164b381a/runtime.json +11 -0
  257. package/.ikie/ferments/019f2745-3aad-7249-b742-f1e6722d5c97/runtime.json +11 -0
  258. package/.ikie/ferments/019f2745-3ae9-76fb-861c-49f13c1db883/runtime.json +12 -0
  259. package/.ikie/ferments/019f2745-3b16-721b-b523-469846e0c9e5/runtime.json +11 -0
  260. package/.ikie/ferments/019f2745-3b53-7119-ae88-20cf3d567e91/runtime.json +11 -0
  261. package/.ikie/ferments/019f2745-3ba2-71b6-9fab-faaf750f8535/runtime.json +15 -0
  262. package/.ikie/ferments/019f2745-3bed-764b-9b4b-79b4d7daa35d/runtime.json +15 -0
  263. package/.ikie/ferments/019f2745-3c3e-7792-8df7-d88bab7aa48d/runtime.json +15 -0
  264. package/.ikie/ferments/019f2745-3c81-770d-bcf9-6d163ffeb285/runtime.json +13 -0
  265. package/.ikie/ferments/019f2745-3cca-748d-9740-8c55644c9afa/runtime.json +15 -0
  266. package/.ikie/ferments/019f2745-3d12-71cc-923f-520142ddf544/runtime.json +15 -0
  267. package/.ikie/ferments/019f2745-3d79-7083-8865-8f54989080e0/runtime.json +11 -0
  268. package/.ikie/ferments/019f2745-3da9-74f9-a640-86b4685f40a0/runtime.json +15 -0
  269. package/.ikie/ferments/019f2745-3ddf-721b-8a40-3a2318b6bc0a/runtime.json +15 -0
  270. package/.ikie/ferments/019f2745-3e2a-76a8-8c61-ef15db41aef2/runtime.json +15 -0
  271. package/.ikie/ferments/019f2745-3e5d-75bb-ab71-b4aa83c491b7/runtime.json +15 -0
  272. package/.ikie/ferments/019f2745-3e7e-7437-848a-100463c72f90/runtime.json +15 -0
  273. package/.ikie/ferments/019f2745-3ea7-7729-9000-7874145f4bb5/runtime.json +15 -0
  274. package/.ikie/ferments/019f2745-3ecf-760c-931c-3dc5996b06b1/runtime.json +15 -0
  275. package/.ikie/ferments/019f2745-3f05-72d8-ad71-d1df02c5939a/runtime.json +15 -0
  276. package/.ikie/ferments/019f2745-3f37-74ad-9e02-6e0d3854b664/runtime.json +15 -0
  277. package/.ikie/ferments/019f2745-3f65-740d-8094-58f60c9cdcec/runtime.json +11 -0
  278. package/.ikie/ferments/019f2745-3f91-7219-8eec-f5f7873a434a/runtime.json +11 -0
  279. package/.ikie/ferments/019f2745-3fc5-706a-8188-5a3b4e13a796/reviews/phase-phase-1-1.json +63 -0
  280. package/.ikie/ferments/019f2745-3fc5-706a-8188-5a3b4e13a796/runtime.json +17 -0
  281. package/.ikie/ferments/019f2745-417c-77ad-bdaf-380b81846577/reviews/phase-phase-1-1.json +63 -0
  282. package/.ikie/ferments/019f2745-417c-77ad-bdaf-380b81846577/runtime.json +17 -0
  283. package/.ikie/ferments/019f2745-4372-72ff-a50c-3eaad36a726b/runtime.json +11 -0
  284. package/.ikie/ferments/019f2745-4859-714b-a8b7-0a82d35b87c7/runtime.json +11 -0
  285. package/.ikie/ferments/019f2745-488a-724f-91a9-d621e9f2b3f7/runtime.json +11 -0
  286. package/.ikie/ferments/019f2745-48ae-7741-8598-03ede47b4594/runtime.json +11 -0
  287. package/.ikie/ferments/019f2745-48e9-710f-889b-e88aa5d7e60e/runtime.json +11 -0
  288. package/.ikie/ferments/019f2745-4917-7268-9b76-f8bb1215ea19/pending-proposal.json +45 -0
  289. package/.ikie/ferments/019f2745-493c-775d-a10d-4a2cf8305a4e/pending-proposal.json +45 -0
  290. package/.ikie/ferments/019f2745-4abd-7319-9e11-4b348ab24547/pending-proposal.json +45 -0
  291. package/.ikie/ferments/019f2745-4b10-726d-ad1f-c086e7d4dfc0/pending-proposal.json +45 -0
  292. package/.ikie/ferments/019f2745-4b21-75a6-b151-472f4eb9b95d/pending-proposal.json +45 -0
  293. package/.ikie/ferments/019f2745-5dd5-741b-85e2-1d67ce09a138/runtime.json +13 -0
  294. package/.ikie/ferments/019f2745-5e14-73dd-bd03-3b5765f70fac/runtime.json +11 -0
  295. package/.ikie/ferments/019f2745-5e2e-70b5-9348-35ebbdb8ec8e/runtime.json +11 -0
  296. package/.ikie/ferments/019f2745-5e4f-7626-b075-6b6d30099847/runtime.json +11 -0
  297. package/.ikie/ferments/019f2745-5e71-7768-b436-e739555f1038/runtime.json +11 -0
  298. package/.ikie/ferments/019f2745-5e8a-77c5-ba98-cb2802c55266/runtime.json +11 -0
  299. package/.ikie/ferments/019f2745-5ea8-707f-b034-9c98e6ca720b/runtime.json +11 -0
  300. package/.ikie/ferments/019f2745-5ebd-73aa-a919-150c9bb014f9/runtime.json +11 -0
  301. package/.ikie/ferments/019f2745-5ed6-71e9-9a20-360fa807f598/runtime.json +9 -0
  302. package/.ikie/ferments/019f2745-5ef8-7199-bd13-69b5c883541b/runtime.json +13 -0
  303. package/.ikie/ferments/019f2745-5f30-73f9-a647-9e7518599c32/runtime.json +11 -0
  304. package/.ikie/ferments/019f2745-5f53-7358-897a-37717d64d996/runtime.json +11 -0
  305. package/.ikie/ferments/019f2745-5fb6-736b-b42d-bbc3c1916321/runtime.json +11 -0
  306. package/.ikie/ferments/019f2745-5fea-730e-b57b-d7f1965d5934/runtime.json +9 -0
  307. package/.ikie/ferments/019f2745-6014-77cb-b01f-d93baf8af409/runtime.json +9 -0
  308. package/.ikie/ferments/019f2745-602f-74b9-8eed-bb29fa4a76d4/runtime.json +11 -0
  309. package/.ikie/ferments/019f2745-60e2-7562-8e7c-2ded6cf75426/runtime.json +11 -0
  310. package/.ikie/ferments/019f2745-6114-703e-ac05-5ba11b255b62/runtime.json +12 -0
  311. package/.ikie/ferments/019f2745-6160-733e-93f5-df586c6afc0a/runtime.json +11 -0
  312. package/.ikie/ferments/019f2745-6179-702b-84fb-09bc60f8c04c/runtime.json +11 -0
  313. package/.ikie/ferments/019f2745-618d-74dc-a174-28a134d353fa/runtime.json +11 -0
  314. package/.ikie/ferments/019f2745-619e-72a8-8377-34127bfc774f/runtime.json +11 -0
  315. package/.ikie/ferments/019f2745-61ae-767e-8a2e-a5ca6bc84a88/runtime.json +13 -0
  316. package/.ikie/ferments/019f2745-61c7-760c-9914-a9bf3c96acd8/runtime.json +11 -0
  317. package/.ikie/ferments/019f2745-79a2-70b8-bcd0-fbaee13849db/reviews/phase-phase-1-1.json +41 -0
  318. package/.ikie/ferments/019f2745-79a2-70b8-bcd0-fbaee13849db/runtime.json +11 -0
  319. package/.ikie/ferments/019f2745-79e7-74d5-b867-e23b027a8512/reviews/phase-phase-1-1.json +47 -0
  320. package/.ikie/ferments/019f2745-79e7-74d5-b867-e23b027a8512/runtime.json +13 -0
  321. package/.ikie/ferments/019f2745-7a5b-703e-999e-dd5cb98133eb/reviews/phase-phase-1-1.json +40 -0
  322. package/.ikie/ferments/019f2745-7a5b-703e-999e-dd5cb98133eb/runtime.json +9 -0
  323. package/.ikie/ferments/019f2745-7a90-732a-b09a-9aa29e2390cd/reviews/phase-phase-1-1.json +40 -0
  324. package/.ikie/ferments/019f2745-7a90-732a-b09a-9aa29e2390cd/runtime.json +9 -0
  325. package/.ikie/ferments/019f2745-7aad-731c-ac2a-cf71d20fb709/reviews/phase-phase-1-1.json +40 -0
  326. package/.ikie/ferments/019f2745-7aad-731c-ac2a-cf71d20fb709/runtime.json +9 -0
  327. package/.ikie/ferments/019f2745-7ad2-70ff-986b-83679208066a/reviews/phase-phase-1-1.json +40 -0
  328. package/.ikie/ferments/019f2745-7ad2-70ff-986b-83679208066a/runtime.json +9 -0
  329. package/.ikie/ferments/019f2745-7af8-735c-8200-f49b201f5b7f/reviews/phase-phase-1-1.json +40 -0
  330. package/.ikie/ferments/019f2745-7af8-735c-8200-f49b201f5b7f/runtime.json +9 -0
  331. package/.ikie/ferments/019f2745-7b17-7489-b4d5-b83e4feeb641/reviews/phase-phase-1-1.json +62 -0
  332. package/.ikie/ferments/019f2745-7b17-7489-b4d5-b83e4feeb641/runtime.json +9 -0
  333. package/.ikie/ferments/019f2747-700f-77dd-8fec-eec70eb204bf/runtime.json +11 -0
  334. package/.ikie/ferments/019f2747-702b-748d-83a8-a44d909b5d84/runtime.json +11 -0
  335. package/.ikie/ferments/019f2747-704a-77c6-a068-5eff8527f149/runtime.json +11 -0
  336. package/.ikie/ferments/019f2747-7075-7628-9088-9c79d85087be/runtime.json +12 -0
  337. package/.ikie/ferments/019f2747-70e4-7157-aa37-d8201f07134a/runtime.json +11 -0
  338. package/.ikie/ferments/019f2747-7139-74da-8f85-02b76ecfc932/runtime.json +15 -0
  339. package/.ikie/ferments/019f2747-7156-762f-8c31-84ae357e2edd/runtime.json +15 -0
  340. package/.ikie/ferments/019f2747-7175-76e7-9d21-15608a6463ca/runtime.json +15 -0
  341. package/.ikie/ferments/019f2747-71c8-777c-8106-df11073ad85f/runtime.json +13 -0
  342. package/.ikie/ferments/019f2747-7209-71f5-8f4e-ccfd46653321/runtime.json +15 -0
  343. package/.ikie/ferments/019f2747-723d-728f-baa8-dd3b4b239037/runtime.json +15 -0
  344. package/.ikie/ferments/019f2747-728d-749b-9e9a-962ea824d13d/runtime.json +11 -0
  345. package/.ikie/ferments/019f2747-72b0-756e-b648-c5491d46dc37/runtime.json +15 -0
  346. package/.ikie/ferments/019f2747-72e8-747e-9e5b-93005dd51d36/runtime.json +15 -0
  347. package/.ikie/ferments/019f2747-7319-702b-84bd-aed70c3f60c3/runtime.json +15 -0
  348. package/.ikie/ferments/019f2747-734a-732c-89d8-47fa74a13f6b/runtime.json +15 -0
  349. package/.ikie/ferments/019f2747-7372-72ce-99d0-ddeeb20c73e5/runtime.json +15 -0
  350. package/.ikie/ferments/019f2747-73a1-723d-b064-2240965b5460/runtime.json +15 -0
  351. package/.ikie/ferments/019f2747-73cd-71b5-9b21-481224573278/runtime.json +15 -0
  352. package/.ikie/ferments/019f2747-73f7-779f-a227-64ba479c2615/runtime.json +15 -0
  353. package/.ikie/ferments/019f2747-743e-759e-856b-283e346eec66/runtime.json +15 -0
  354. package/.ikie/ferments/019f2747-74ac-702b-877f-1b4447f77938/runtime.json +11 -0
  355. package/.ikie/ferments/019f2747-74cc-773a-ad3a-febf5e9e5a57/runtime.json +11 -0
  356. package/.ikie/ferments/019f2747-750b-77dc-aa24-230eef901e40/reviews/phase-phase-1-1.json +63 -0
  357. package/.ikie/ferments/019f2747-750b-77dc-aa24-230eef901e40/runtime.json +17 -0
  358. package/.ikie/ferments/019f2747-76f2-72c9-8764-82fdd0429215/reviews/phase-phase-1-1.json +63 -0
  359. package/.ikie/ferments/019f2747-76f2-72c9-8764-82fdd0429215/runtime.json +17 -0
  360. package/.ikie/ferments/019f2747-795d-7452-9810-a64e86f3d5c5/runtime.json +11 -0
  361. package/.ikie/ferments/019f2747-7ee1-770e-ace1-bc0f5571f69a/runtime.json +11 -0
  362. package/.ikie/ferments/019f2747-7f01-738d-a2a2-c7aa33365582/runtime.json +11 -0
  363. package/.ikie/ferments/019f2747-7f40-712b-bea9-8a20399c9dfd/runtime.json +11 -0
  364. package/.ikie/ferments/019f2747-7fb4-70c9-aaf6-af4ac5fbebef/runtime.json +11 -0
  365. package/.ikie/ferments/019f2747-7fe2-77e7-90d5-dcee3cbe73ea/pending-proposal.json +45 -0
  366. package/.ikie/ferments/019f2747-7ff9-7028-ac25-77ab9c513710/pending-proposal.json +45 -0
  367. package/.ikie/ferments/019f2747-81c3-7320-8a96-88880d06cc14/pending-proposal.json +45 -0
  368. package/.ikie/ferments/019f2747-8236-76c0-b17c-1f13a22af974/pending-proposal.json +45 -0
  369. package/.ikie/ferments/019f2747-824b-77ba-90bd-67bcb4e9d5d6/pending-proposal.json +45 -0
  370. package/.ikie/ferments/019f2747-a18a-77f4-802d-18ab07f51261/runtime.json +13 -0
  371. package/.ikie/ferments/019f2747-a1b6-76cf-9688-94e8f41b179f/runtime.json +11 -0
  372. package/.ikie/ferments/019f2747-a1e2-730b-a56d-cb622d190c49/runtime.json +11 -0
  373. package/.ikie/ferments/019f2747-a20b-739e-a524-b5b2cdabdf49/runtime.json +11 -0
  374. package/.ikie/ferments/019f2747-a228-7026-9fe2-79fc90d7c622/runtime.json +11 -0
  375. package/.ikie/ferments/019f2747-a244-71b5-8ceb-d6094c7a5d28/runtime.json +11 -0
  376. package/.ikie/ferments/019f2747-a25d-723e-9962-ed1f266a9709/runtime.json +11 -0
  377. package/.ikie/ferments/019f2747-a275-734d-9ede-ae9644a179b6/runtime.json +11 -0
  378. package/.ikie/ferments/019f2747-a2a4-7280-b8c4-d8233d9e322a/runtime.json +9 -0
  379. package/.ikie/ferments/019f2747-a2ca-767d-8a35-9043b18e5ec7/runtime.json +13 -0
  380. package/.ikie/ferments/019f2747-a2f5-745d-929e-9fb2ef5d333f/runtime.json +11 -0
  381. package/.ikie/ferments/019f2747-a317-76b9-8954-2b7a4487a352/runtime.json +11 -0
  382. package/.ikie/ferments/019f2747-a380-7746-be44-cb9e1920561f/runtime.json +11 -0
  383. package/.ikie/ferments/019f2747-a3a2-77ac-9fe5-2a844b64872d/runtime.json +9 -0
  384. package/.ikie/ferments/019f2747-a3b7-70ee-ba83-b3c43d3122c8/runtime.json +9 -0
  385. package/.ikie/ferments/019f2747-a3e7-76e9-96f0-143c82d8005b/runtime.json +11 -0
  386. package/.ikie/ferments/019f2747-a4d3-737b-8d80-2dc63a0fbe1a/runtime.json +11 -0
  387. package/.ikie/ferments/019f2747-a506-7442-919f-50ae2b602e7a/runtime.json +12 -0
  388. package/.ikie/ferments/019f2747-a53e-76cb-9876-a81dd08e3fe7/runtime.json +11 -0
  389. package/.ikie/ferments/019f2747-a56a-7208-ad93-0fdcbc41c1ed/runtime.json +11 -0
  390. package/.ikie/ferments/019f2747-a581-73fc-aac5-a44f696ccbe8/runtime.json +11 -0
  391. package/.ikie/ferments/019f2747-a595-71d2-9c2d-d846e9803665/runtime.json +11 -0
  392. package/.ikie/ferments/019f2747-a5a7-73c6-b881-f9c0a08f3af3/runtime.json +13 -0
  393. package/.ikie/ferments/019f2747-a5be-7777-94c0-0849e693ffcb/runtime.json +11 -0
  394. package/.ikie/ferments/019f2747-b3e6-706a-912c-71d57080c7c1/reviews/phase-phase-1-1.json +41 -0
  395. package/.ikie/ferments/019f2747-b3e6-706a-912c-71d57080c7c1/runtime.json +11 -0
  396. package/.ikie/ferments/019f2747-b464-75bd-9c0b-c6b5e5de789e/reviews/phase-phase-1-1.json +47 -0
  397. package/.ikie/ferments/019f2747-b464-75bd-9c0b-c6b5e5de789e/runtime.json +13 -0
  398. package/.ikie/ferments/019f2747-b4f2-719c-86a6-763c494a680c/reviews/phase-phase-1-1.json +40 -0
  399. package/.ikie/ferments/019f2747-b4f2-719c-86a6-763c494a680c/runtime.json +9 -0
  400. package/.ikie/ferments/019f2747-b52b-75cd-b664-8c2aedd87893/reviews/phase-phase-1-1.json +40 -0
  401. package/.ikie/ferments/019f2747-b52b-75cd-b664-8c2aedd87893/runtime.json +9 -0
  402. package/.ikie/ferments/019f2747-b551-7188-81a3-7b7e8371aea4/reviews/phase-phase-1-1.json +40 -0
  403. package/.ikie/ferments/019f2747-b551-7188-81a3-7b7e8371aea4/runtime.json +9 -0
  404. package/.ikie/ferments/019f2747-b5a5-703f-98e6-5eac131044ed/reviews/phase-phase-1-1.json +40 -0
  405. package/.ikie/ferments/019f2747-b5a5-703f-98e6-5eac131044ed/runtime.json +9 -0
  406. package/.ikie/ferments/019f2747-b5cc-7560-80d8-509578bdae44/reviews/phase-phase-1-1.json +40 -0
  407. package/.ikie/ferments/019f2747-b5cc-7560-80d8-509578bdae44/runtime.json +9 -0
  408. package/.ikie/ferments/019f2747-b5f7-7079-ba17-833018701a06/reviews/phase-phase-1-1.json +62 -0
  409. package/.ikie/ferments/019f2747-b5f7-7079-ba17-833018701a06/runtime.json +9 -0
  410. package/.ikie/ferments/019f274a-bb4e-77b1-9f03-633b22b8e54c/runtime.json +11 -0
  411. package/.ikie/ferments/019f274a-bb6e-7715-92a0-c73da2ff97da/runtime.json +11 -0
  412. package/.ikie/ferments/019f274a-bb89-75b5-9daa-c57ef85c64c1/runtime.json +11 -0
  413. package/.ikie/ferments/019f274a-bbb7-72ad-9695-3227786b16ef/runtime.json +12 -0
  414. package/.ikie/ferments/019f274a-bbfb-70da-95f3-54a3e507888d/runtime.json +11 -0
  415. package/.ikie/ferments/019f274a-bc37-771a-8e77-b8d5476a8a1e/runtime.json +15 -0
  416. package/.ikie/ferments/019f274a-bc61-7024-9311-148a94a6713e/runtime.json +15 -0
  417. package/.ikie/ferments/019f274a-bca0-76a9-b966-59bbe3fb5bdd/runtime.json +15 -0
  418. package/.ikie/ferments/019f274a-bcc9-774d-adc2-aa99e82abb79/runtime.json +13 -0
  419. package/.ikie/ferments/019f274a-bcfb-737e-9c7d-b9db4762b624/runtime.json +15 -0
  420. package/.ikie/ferments/019f274a-bd3f-725b-9d39-b672191556ac/runtime.json +15 -0
  421. package/.ikie/ferments/019f274a-bd82-75a8-b936-350a55a7a1da/runtime.json +11 -0
  422. package/.ikie/ferments/019f274a-bda4-71b2-aa8b-7ba6f6103814/runtime.json +15 -0
  423. package/.ikie/ferments/019f274a-bddc-70ff-90f8-f1648dede718/runtime.json +15 -0
  424. package/.ikie/ferments/019f274a-be12-70bd-b935-0173946e60c2/runtime.json +15 -0
  425. package/.ikie/ferments/019f274a-be51-7719-b04b-d720a1d215f7/runtime.json +15 -0
  426. package/.ikie/ferments/019f274a-be8c-7084-aa78-4d139084333b/runtime.json +15 -0
  427. package/.ikie/ferments/019f274a-bebc-70b7-8c8d-fc7b50eda266/runtime.json +15 -0
  428. package/.ikie/ferments/019f274a-bee6-732f-b9ee-9fb3f1966e3d/runtime.json +15 -0
  429. package/.ikie/ferments/019f274a-bf19-76bc-8ab4-fe8c3fb28875/runtime.json +15 -0
  430. package/.ikie/ferments/019f274a-bf40-755b-bd4f-eec6d8e7a4de/runtime.json +15 -0
  431. package/.ikie/ferments/019f274a-bf74-7013-beb9-08aab0dc8866/runtime.json +11 -0
  432. package/.ikie/ferments/019f274a-bfa3-718d-ab5d-ededc4cf9e63/runtime.json +11 -0
  433. package/.ikie/ferments/019f274a-bfd6-7689-b29b-2c3ebfe1afd3/reviews/phase-phase-1-1.json +63 -0
  434. package/.ikie/ferments/019f274a-bfd6-7689-b29b-2c3ebfe1afd3/runtime.json +17 -0
  435. package/.ikie/ferments/019f274a-c186-77ea-a92c-78fa52657710/reviews/phase-phase-1-1.json +63 -0
  436. package/.ikie/ferments/019f274a-c186-77ea-a92c-78fa52657710/runtime.json +17 -0
  437. package/.ikie/ferments/019f274a-c3cf-77e8-9917-76d94992456a/runtime.json +11 -0
  438. package/.ikie/ferments/019f274a-c8eb-7071-9900-1668ccf13dad/runtime.json +11 -0
  439. package/.ikie/ferments/019f274a-c928-7276-9fd8-c8fdfbd215ff/runtime.json +11 -0
  440. package/.ikie/ferments/019f274a-c957-7698-8a97-54584a38f472/runtime.json +11 -0
  441. package/.ikie/ferments/019f274a-c97f-71b5-8fd9-727b49c9b72c/runtime.json +11 -0
  442. package/.ikie/ferments/019f274a-c9ad-76bb-99f8-b8f7840ad3ab/pending-proposal.json +45 -0
  443. package/.ikie/ferments/019f274a-c9cf-73ad-8229-d03bd5389697/pending-proposal.json +45 -0
  444. package/.ikie/ferments/019f274a-cb01-720a-b512-e49f820b9be5/pending-proposal.json +45 -0
  445. package/.ikie/ferments/019f274a-cbba-764d-a8e7-da6a060d9cd1/pending-proposal.json +45 -0
  446. package/.ikie/ferments/019f274a-cbdd-744f-84e9-af64527ff116/pending-proposal.json +45 -0
  447. package/.ikie/ferments/019f274a-efc1-75b6-ad54-83a9fcb061af/runtime.json +13 -0
  448. package/.ikie/ferments/019f274a-effe-713a-9672-ca8c839b0936/runtime.json +11 -0
  449. package/.ikie/ferments/019f274a-f03c-7194-b9e6-a24620ef1b89/runtime.json +11 -0
  450. package/.ikie/ferments/019f274a-f058-758c-9ecf-f6af131a0798/runtime.json +11 -0
  451. package/.ikie/ferments/019f274a-f06e-712d-b720-09a6188a152a/runtime.json +11 -0
  452. package/.ikie/ferments/019f274a-f085-715e-8b5b-07587107bc86/runtime.json +11 -0
  453. package/.ikie/ferments/019f274a-f0a8-755b-b747-adaa0f997d8a/runtime.json +11 -0
  454. package/.ikie/ferments/019f274a-f0cd-765c-90ce-48685c67299c/runtime.json +11 -0
  455. package/.ikie/ferments/019f274a-f0e1-71a8-bafc-cc3eeff4f275/runtime.json +9 -0
  456. package/.ikie/ferments/019f274a-f104-73c0-be62-16f724e0d4c6/runtime.json +13 -0
  457. package/.ikie/ferments/019f274a-f129-70ea-aa16-254d0fc662bf/runtime.json +11 -0
  458. package/.ikie/ferments/019f274a-f14b-7742-8e88-7a3fe9d16f08/runtime.json +11 -0
  459. package/.ikie/ferments/019f274a-f18b-7148-afb1-b9ff1ab54bbc/runtime.json +11 -0
  460. package/.ikie/ferments/019f274a-f1a2-734d-bf87-6f80955a3b64/runtime.json +9 -0
  461. package/.ikie/ferments/019f274a-f1c0-75a7-8675-f4fcf15df9bd/runtime.json +9 -0
  462. package/.ikie/ferments/019f274a-f1e2-7346-b97f-9340f86e6397/runtime.json +11 -0
  463. package/.ikie/ferments/019f274a-f2a1-7758-a891-413d15c9c29c/runtime.json +11 -0
  464. package/.ikie/ferments/019f274a-f2bc-76fd-b2dc-e14feea4fb86/runtime.json +12 -0
  465. package/.ikie/ferments/019f274a-f2e0-7474-97b8-79e01d130940/runtime.json +11 -0
  466. package/.ikie/ferments/019f274a-f2fa-70fb-a2da-0fb3e9a729ef/runtime.json +11 -0
  467. package/.ikie/ferments/019f274a-f30f-71bc-bf7f-198ef4b68568/runtime.json +11 -0
  468. package/.ikie/ferments/019f274a-f326-768b-b55e-e340dd3bf7fc/runtime.json +11 -0
  469. package/.ikie/ferments/019f274a-f339-75a5-9d45-d9393ccf3436/runtime.json +13 -0
  470. package/.ikie/ferments/019f274a-f35b-7386-9eb0-8f1e45618131/runtime.json +11 -0
  471. package/.ikie/ferments/019f274a-f96b-7633-9b6d-6722ea8232a2/reviews/phase-phase-1-1.json +41 -0
  472. package/.ikie/ferments/019f274a-f96b-7633-9b6d-6722ea8232a2/runtime.json +11 -0
  473. package/.ikie/ferments/019f274a-f9b7-769e-94ac-8f5c7e23ee88/reviews/phase-phase-1-1.json +47 -0
  474. package/.ikie/ferments/019f274a-f9b7-769e-94ac-8f5c7e23ee88/runtime.json +13 -0
  475. package/.ikie/ferments/019f274a-fa07-70b1-bc68-1a9d3378deff/reviews/phase-phase-1-1.json +40 -0
  476. package/.ikie/ferments/019f274a-fa07-70b1-bc68-1a9d3378deff/runtime.json +9 -0
  477. package/.ikie/ferments/019f274a-fa2f-7658-86ad-cc69215f1c94/reviews/phase-phase-1-1.json +40 -0
  478. package/.ikie/ferments/019f274a-fa2f-7658-86ad-cc69215f1c94/runtime.json +9 -0
  479. package/.ikie/ferments/019f274a-fa46-72ca-a252-65a5b2995bc4/reviews/phase-phase-1-1.json +40 -0
  480. package/.ikie/ferments/019f274a-fa46-72ca-a252-65a5b2995bc4/runtime.json +9 -0
  481. package/.ikie/ferments/019f274a-fa70-705f-9112-d48e1042f1d4/reviews/phase-phase-1-1.json +40 -0
  482. package/.ikie/ferments/019f274a-fa70-705f-9112-d48e1042f1d4/runtime.json +9 -0
  483. package/.ikie/ferments/019f274a-fa94-73e5-9fc3-ea21ee5cfc59/reviews/phase-phase-1-1.json +40 -0
  484. package/.ikie/ferments/019f274a-fa94-73e5-9fc3-ea21ee5cfc59/runtime.json +9 -0
  485. package/.ikie/ferments/019f274a-fab9-720d-9ce3-0041a27f83e0/reviews/phase-phase-1-1.json +62 -0
  486. package/.ikie/ferments/019f274a-fab9-720d-9ce3-0041a27f83e0/runtime.json +9 -0
  487. package/.ikie/ferments/019f274c-7608-76f8-89c7-6e3b7d9095b2/runtime.json +11 -0
  488. package/.ikie/ferments/019f274c-762a-717c-9ec2-530d37897051/runtime.json +11 -0
  489. package/.ikie/ferments/019f274c-7644-76fc-a27d-c699d368a511/runtime.json +11 -0
  490. package/.ikie/ferments/019f274c-7667-7260-87b3-f2ad6ff10c04/runtime.json +12 -0
  491. package/.ikie/ferments/019f274c-7696-753f-8634-5cb24d2aabaa/runtime.json +11 -0
  492. package/.ikie/ferments/019f274c-76c8-76e8-b4d8-0cabd7f32047/runtime.json +15 -0
  493. package/.ikie/ferments/019f274c-76f5-732e-88f3-0461f79b7733/runtime.json +15 -0
  494. package/.ikie/ferments/019f274c-771b-762e-abb6-1bfe6838545b/runtime.json +15 -0
  495. package/.ikie/ferments/019f274c-774a-769f-b15f-d36a990c8aa2/runtime.json +13 -0
  496. package/.ikie/ferments/019f274c-7791-7040-9c73-fe5922824edc/runtime.json +15 -0
  497. package/.ikie/ferments/019f274c-77c3-76f9-a5c6-e0f5030f615c/runtime.json +15 -0
  498. package/.ikie/ferments/019f274c-7805-70eb-ac17-888c2a0ab5cb/runtime.json +11 -0
  499. package/.ikie/ferments/019f274c-7820-71da-9baf-d7953b547620/runtime.json +15 -0
  500. package/.ikie/ferments/019f274c-7855-708f-bbe8-a9e13258cc98/runtime.json +15 -0
  501. package/.ikie/ferments/019f274c-7886-70fc-9572-b96090b16cf9/runtime.json +15 -0
  502. package/.ikie/ferments/019f274c-78b7-756e-82ef-8a8e953000bf/runtime.json +15 -0
  503. package/.ikie/ferments/019f274c-78df-7198-b1dd-58c3ea1e0d6e/runtime.json +15 -0
  504. package/.ikie/ferments/019f274c-7902-77d4-b443-b105d0a3acd5/runtime.json +15 -0
  505. package/.ikie/ferments/019f274c-7926-7628-82dc-e71e8f5d58f0/runtime.json +15 -0
  506. package/.ikie/ferments/019f274c-7948-7755-bc18-c8d9975c762f/runtime.json +15 -0
  507. package/.ikie/ferments/019f274c-7972-72a5-bc5e-e47579f25c32/runtime.json +15 -0
  508. package/.ikie/ferments/019f274c-7998-71bf-960e-caba2791ece7/runtime.json +11 -0
  509. package/.ikie/ferments/019f274c-79c4-71c6-97ef-0dac30d26152/runtime.json +11 -0
  510. package/.ikie/ferments/019f274c-79e3-7249-8bac-82b74fbd9d1d/reviews/phase-phase-1-1.json +63 -0
  511. package/.ikie/ferments/019f274c-79e3-7249-8bac-82b74fbd9d1d/runtime.json +17 -0
  512. package/.ikie/ferments/019f274c-7b11-769e-b05b-354105048fb2/reviews/phase-phase-1-1.json +63 -0
  513. package/.ikie/ferments/019f274c-7b11-769e-b05b-354105048fb2/runtime.json +17 -0
  514. package/.ikie/ferments/019f274c-7c7b-73ad-98d3-739e5f0187ec/runtime.json +11 -0
  515. package/.ikie/ferments/019f274c-8054-728f-96c1-6cae4b96c94e/runtime.json +11 -0
  516. package/.ikie/ferments/019f274c-8072-7209-82b0-84facff2e61a/runtime.json +11 -0
  517. package/.ikie/ferments/019f274c-8094-77ec-81dd-e50e61dc11db/runtime.json +11 -0
  518. package/.ikie/ferments/019f274c-80bc-75c9-89e8-540dba77996e/runtime.json +11 -0
  519. package/.ikie/ferments/019f274c-80dd-7439-a5b0-b36fcf77c8f1/pending-proposal.json +45 -0
  520. package/.ikie/ferments/019f274c-80f1-71ac-bd32-fd151f38519c/pending-proposal.json +45 -0
  521. package/.ikie/ferments/019f274c-81dc-70e6-a5c9-249b196c75c3/pending-proposal.json +45 -0
  522. package/.ikie/ferments/019f274c-8238-772c-9da3-f27e467100a7/pending-proposal.json +45 -0
  523. package/.ikie/ferments/019f274c-824a-76d9-aac3-c51171e256b4/pending-proposal.json +45 -0
  524. package/.ikie/ferments/019f274c-a854-7349-b76a-4a0bc2ecc2f7/runtime.json +11 -0
  525. package/.ikie/ferments/019f274c-a872-701b-a311-51267fc54aa5/runtime.json +11 -0
  526. package/.ikie/ferments/019f274c-a8a2-756e-9051-15fcd0be1584/runtime.json +11 -0
  527. package/.ikie/ferments/019f274c-a8d8-767c-8190-d30a2e78815f/runtime.json +12 -0
  528. package/.ikie/ferments/019f274c-a914-701e-95ab-9eeca15f5ccd/runtime.json +11 -0
  529. package/.ikie/ferments/019f274c-a951-720f-bc99-2ea22021a624/runtime.json +15 -0
  530. package/.ikie/ferments/019f274c-a978-750b-aecb-a5a2aa684cdf/runtime.json +15 -0
  531. package/.ikie/ferments/019f274c-a9a6-71e9-82ac-66c74cf51964/runtime.json +15 -0
  532. package/.ikie/ferments/019f274c-a9e0-77ae-96eb-dad523b6a843/runtime.json +13 -0
  533. package/.ikie/ferments/019f274c-aa2c-7658-a652-ca1a27093c42/runtime.json +15 -0
  534. package/.ikie/ferments/019f274c-aa77-72b4-a8de-56a2217c759f/runtime.json +15 -0
  535. package/.ikie/ferments/019f274c-aacf-74fa-943c-26412ddd8b5d/runtime.json +11 -0
  536. package/.ikie/ferments/019f274c-ab08-709f-aaff-09f10230738f/runtime.json +15 -0
  537. package/.ikie/ferments/019f274c-ab66-730b-86a5-7571dac8802c/runtime.json +15 -0
  538. package/.ikie/ferments/019f274c-abb2-77d2-91b6-ea175f561d8a/runtime.json +15 -0
  539. package/.ikie/ferments/019f274c-ac01-74ff-a2c6-28dbadc051e7/runtime.json +15 -0
  540. package/.ikie/ferments/019f274c-ac4b-75ad-93a6-aa6af74ca708/runtime.json +15 -0
  541. package/.ikie/ferments/019f274c-ac80-77b4-bfcf-f7a7187a42f6/runtime.json +15 -0
  542. package/.ikie/ferments/019f274c-acd9-7239-ad37-73d57031d1bc/runtime.json +15 -0
  543. package/.ikie/ferments/019f274c-ad22-74bb-9cf2-ed681dd73504/runtime.json +15 -0
  544. package/.ikie/ferments/019f274c-ad7d-720c-89bf-5a79ceec8173/runtime.json +15 -0
  545. package/.ikie/ferments/019f274c-adca-762a-b177-4d76b886003b/runtime.json +11 -0
  546. package/.ikie/ferments/019f274c-ae26-7109-bfaa-39d692fdc1ac/runtime.json +11 -0
  547. package/.ikie/ferments/019f274c-ae59-76bb-80ae-f556e764f2ca/reviews/phase-phase-1-1.json +63 -0
  548. package/.ikie/ferments/019f274c-ae59-76bb-80ae-f556e764f2ca/runtime.json +17 -0
  549. package/.ikie/ferments/019f274c-b059-76e5-9b73-bedc0d4b5aaa/reviews/phase-phase-1-1.json +63 -0
  550. package/.ikie/ferments/019f274c-b059-76e5-9b73-bedc0d4b5aaa/runtime.json +17 -0
  551. package/.ikie/ferments/019f274c-b21f-700a-adda-4bfd9d27a0ac/runtime.json +11 -0
  552. package/.ikie/ferments/019f274c-b91a-7306-8825-3581ef16ab34/runtime.json +11 -0
  553. package/.ikie/ferments/019f274c-b966-737f-a1c7-e8e7d3af929c/runtime.json +11 -0
  554. package/.ikie/ferments/019f274c-b99d-74dd-b8e8-1ddc50293a9a/runtime.json +11 -0
  555. package/.ikie/ferments/019f274c-ba0e-72ae-ad14-983edb8d90ac/runtime.json +11 -0
  556. package/.ikie/ferments/019f274c-ba4f-7101-b851-12564620c50f/pending-proposal.json +45 -0
  557. package/.ikie/ferments/019f274c-ba63-712c-858f-96cee1384cec/pending-proposal.json +45 -0
  558. package/.ikie/ferments/019f274c-bbe3-7343-a8b0-e6f91c3ab922/pending-proposal.json +45 -0
  559. package/.ikie/ferments/019f274c-bc4a-740e-a12a-9c04181702d9/pending-proposal.json +45 -0
  560. package/.ikie/ferments/019f274c-bc7b-707c-90b9-d30cf92b5fb9/pending-proposal.json +45 -0
  561. package/.ikie/ferments/019f274c-e044-750a-a9e1-623de3afa666/runtime.json +13 -0
  562. package/.ikie/ferments/019f274c-e07a-77cb-9f17-726e4afb3ee1/runtime.json +11 -0
  563. package/.ikie/ferments/019f274c-e0a2-754a-ac70-aac9cd3d3dc2/runtime.json +11 -0
  564. package/.ikie/ferments/019f274c-e0ba-72de-bf83-25a8319eddc5/runtime.json +11 -0
  565. package/.ikie/ferments/019f274c-e0cf-77c1-9c23-65745da294b4/runtime.json +11 -0
  566. package/.ikie/ferments/019f274c-e0e7-77f7-9436-0537e2095c6b/runtime.json +11 -0
  567. package/.ikie/ferments/019f274c-e103-70d7-abd9-01305b905259/runtime.json +11 -0
  568. package/.ikie/ferments/019f274c-e121-7328-9eab-3babb40f26b3/runtime.json +11 -0
  569. package/.ikie/ferments/019f274c-e135-76d4-9176-2033e41fa5a8/runtime.json +9 -0
  570. package/.ikie/ferments/019f274c-e157-7043-9b54-fd7c40cb0793/runtime.json +13 -0
  571. package/.ikie/ferments/019f274c-e181-718e-804d-d0edfaabd5cd/runtime.json +11 -0
  572. package/.ikie/ferments/019f274c-e19b-72ab-bf87-b7a53037becb/runtime.json +11 -0
  573. package/.ikie/ferments/019f274c-e20a-716e-8cab-f0cd93259148/runtime.json +11 -0
  574. package/.ikie/ferments/019f274c-e228-73a3-a655-48bc44db0325/runtime.json +9 -0
  575. package/.ikie/ferments/019f274c-e243-7609-bec4-905caa78d674/runtime.json +9 -0
  576. package/.ikie/ferments/019f274c-e258-76ba-912c-bab41dfeaac2/runtime.json +11 -0
  577. package/.ikie/ferments/019f274c-e35a-776b-a644-52ee82afec4d/runtime.json +11 -0
  578. package/.ikie/ferments/019f274c-e378-73e8-943d-f2fc2ee875ef/runtime.json +12 -0
  579. package/.ikie/ferments/019f274c-e3a6-757d-b33c-c6fbdd9cf8c7/runtime.json +11 -0
  580. package/.ikie/ferments/019f274c-e3c9-77a7-be2b-43891355a506/runtime.json +11 -0
  581. package/.ikie/ferments/019f274c-e3db-776b-8de6-fb1aeab60a7b/runtime.json +11 -0
  582. package/.ikie/ferments/019f274c-e3f4-700e-8780-2dee3c117eb8/runtime.json +11 -0
  583. package/.ikie/ferments/019f274c-e409-71af-a0f9-ff159811e472/runtime.json +13 -0
  584. package/.ikie/ferments/019f274c-e432-73cd-bd34-39f0e34a568d/runtime.json +11 -0
  585. package/.ikie/ferments/019f274c-eb55-73fe-bb2a-34b4a2df3f4e/reviews/phase-phase-1-1.json +41 -0
  586. package/.ikie/ferments/019f274c-eb55-73fe-bb2a-34b4a2df3f4e/runtime.json +11 -0
  587. package/.ikie/ferments/019f274c-eb9b-728e-93e2-80afb71ae50e/reviews/phase-phase-1-1.json +47 -0
  588. package/.ikie/ferments/019f274c-eb9b-728e-93e2-80afb71ae50e/runtime.json +13 -0
  589. package/.ikie/ferments/019f274c-ebf3-77bb-8f8a-6081787fbcb3/reviews/phase-phase-1-1.json +40 -0
  590. package/.ikie/ferments/019f274c-ebf3-77bb-8f8a-6081787fbcb3/runtime.json +9 -0
  591. package/.ikie/ferments/019f274c-ec22-7123-8c8f-0c129c2e0719/reviews/phase-phase-1-1.json +40 -0
  592. package/.ikie/ferments/019f274c-ec22-7123-8c8f-0c129c2e0719/runtime.json +9 -0
  593. package/.ikie/ferments/019f274c-ec85-757c-9600-8be68ceccb55/reviews/phase-phase-1-1.json +40 -0
  594. package/.ikie/ferments/019f274c-ec85-757c-9600-8be68ceccb55/runtime.json +9 -0
  595. package/.ikie/ferments/019f274c-ecd9-704e-8c99-65c64be0a8e1/reviews/phase-phase-1-1.json +40 -0
  596. package/.ikie/ferments/019f274c-ecd9-704e-8c99-65c64be0a8e1/runtime.json +9 -0
  597. package/.ikie/ferments/019f274c-ecee-70bb-9087-da3b4c57d281/reviews/phase-phase-1-1.json +40 -0
  598. package/.ikie/ferments/019f274c-ecee-70bb-9087-da3b4c57d281/runtime.json +9 -0
  599. package/.ikie/ferments/019f274c-ed18-77bf-8cde-812d1e273bda/reviews/phase-phase-1-1.json +62 -0
  600. package/.ikie/ferments/019f274c-ed18-77bf-8cde-812d1e273bda/runtime.json +9 -0
  601. package/.ikie/ferments/019f274f-0303-7543-9aa9-fa7f54d5f6c6/runtime.json +11 -0
  602. package/.ikie/ferments/019f274f-032c-70aa-b5b5-d695429a50bc/runtime.json +11 -0
  603. package/.ikie/ferments/019f274f-036d-763c-8cf9-cb62245aff49/runtime.json +11 -0
  604. package/.ikie/ferments/019f274f-03bd-709c-85ee-698745beac66/runtime.json +12 -0
  605. package/.ikie/ferments/019f274f-0404-75cf-8731-f0182bd84d87/runtime.json +11 -0
  606. package/.ikie/ferments/019f274f-0442-75fe-8cc3-44bfe5dd84bf/runtime.json +15 -0
  607. package/.ikie/ferments/019f274f-048f-759f-ae18-5fe9975647bf/runtime.json +15 -0
  608. package/.ikie/ferments/019f274f-04f1-72fa-a2ba-0b9e066ae6eb/runtime.json +15 -0
  609. package/.ikie/ferments/019f274f-0541-728d-8893-0b0b45547a56/runtime.json +13 -0
  610. package/.ikie/ferments/019f274f-058e-7508-b67a-ebe736113e1e/runtime.json +15 -0
  611. package/.ikie/ferments/019f274f-0625-77d9-bf99-bcdf0ca2d5b2/runtime.json +15 -0
  612. package/.ikie/ferments/019f274f-0694-715c-b008-29a3cf0d6c9c/runtime.json +11 -0
  613. package/.ikie/ferments/019f274f-06b1-71fb-a812-3fd3cefda2ea/runtime.json +15 -0
  614. package/.ikie/ferments/019f274f-06e9-701b-9396-dca2be2330e5/runtime.json +15 -0
  615. package/.ikie/ferments/019f274f-072b-76b2-8d77-32d0ad5abb81/runtime.json +15 -0
  616. package/.ikie/ferments/019f274f-0770-75ce-886f-c1c12d6682eb/runtime.json +15 -0
  617. package/.ikie/ferments/019f274f-07ab-75fc-a71b-ca3b4b4acca5/runtime.json +15 -0
  618. package/.ikie/ferments/019f274f-07f0-72cd-a577-316526b45983/runtime.json +15 -0
  619. package/.ikie/ferments/019f274f-0837-72ed-94f2-dd68e9273549/runtime.json +15 -0
  620. package/.ikie/ferments/019f274f-0866-765d-a2fc-8cce9d53e417/runtime.json +15 -0
  621. package/.ikie/ferments/019f274f-08bb-737e-8f23-4b2e069bc7e5/runtime.json +15 -0
  622. package/.ikie/ferments/019f274f-08f6-73aa-968a-85f55d5e047c/runtime.json +11 -0
  623. package/.ikie/ferments/019f274f-0949-77b7-8d2c-46fbeb423e3a/runtime.json +11 -0
  624. package/.ikie/ferments/019f274f-0979-71ad-91b5-d2e52366b74d/reviews/phase-phase-1-1.json +63 -0
  625. package/.ikie/ferments/019f274f-0979-71ad-91b5-d2e52366b74d/runtime.json +17 -0
  626. package/.ikie/ferments/019f274f-0b57-7329-884a-43e712cd093c/reviews/phase-phase-1-1.json +63 -0
  627. package/.ikie/ferments/019f274f-0b57-7329-884a-43e712cd093c/runtime.json +17 -0
  628. package/.ikie/ferments/019f274f-0d87-772d-a6f3-b71179eec14f/runtime.json +11 -0
  629. package/.ikie/ferments/019f274f-12f0-73be-b630-54a329974d0b/runtime.json +11 -0
  630. package/.ikie/ferments/019f274f-1332-7202-90be-f7e94dd16e66/runtime.json +11 -0
  631. package/.ikie/ferments/019f274f-1368-778a-b044-0306086fe9cf/runtime.json +11 -0
  632. package/.ikie/ferments/019f274f-13a9-7287-974d-8db5c1b7dda6/runtime.json +11 -0
  633. package/.ikie/ferments/019f274f-13d1-7069-91d8-2e4efe8d8982/pending-proposal.json +45 -0
  634. package/.ikie/ferments/019f274f-13f8-717c-92c9-9bc9b37ee2cc/pending-proposal.json +45 -0
  635. package/.ikie/ferments/019f274f-1566-753b-b053-f14ccb779e36/pending-proposal.json +45 -0
  636. package/.ikie/ferments/019f274f-15d3-76f8-8467-e368f0c40baf/pending-proposal.json +45 -0
  637. package/.ikie/ferments/019f274f-15f0-716f-92e7-d966f4476b09/pending-proposal.json +45 -0
  638. package/.ikie/ferments/019f274f-2a19-762d-be24-59afdd71b303/runtime.json +13 -0
  639. package/.ikie/ferments/019f274f-2a74-74cb-ab51-dd779739478e/runtime.json +11 -0
  640. package/.ikie/ferments/019f274f-2a92-71e1-9e68-15f750efc6ec/runtime.json +11 -0
  641. package/.ikie/ferments/019f274f-2ab1-73eb-8930-b9d161230fcc/runtime.json +11 -0
  642. package/.ikie/ferments/019f274f-2ad9-70ea-83a9-f8ae1af1edcf/runtime.json +11 -0
  643. package/.ikie/ferments/019f274f-2b02-77ea-b187-43489c9a88f8/runtime.json +11 -0
  644. package/.ikie/ferments/019f274f-2b2d-728c-9b69-7a6e4956a88c/runtime.json +11 -0
  645. package/.ikie/ferments/019f274f-2b42-7358-b1fa-9754d2ca530d/runtime.json +11 -0
  646. package/.ikie/ferments/019f274f-2b74-77ee-b062-8b111368fc58/runtime.json +9 -0
  647. package/.ikie/ferments/019f274f-2b9b-703b-8abd-5b4ff212ce66/runtime.json +13 -0
  648. package/.ikie/ferments/019f274f-2bd6-7109-93ec-12f609270c84/runtime.json +11 -0
  649. package/.ikie/ferments/019f274f-2bea-75cf-b3d2-aedca4b0c8a4/runtime.json +11 -0
  650. package/.ikie/ferments/019f274f-2c1c-7085-b221-ecf2a371e6cf/runtime.json +11 -0
  651. package/.ikie/ferments/019f274f-2c2f-71fb-9b03-41d6f8a5d2d6/runtime.json +9 -0
  652. package/.ikie/ferments/019f274f-2c5d-719d-a913-5255a7b3e376/runtime.json +9 -0
  653. package/.ikie/ferments/019f274f-2c92-75bb-b691-4efd9b706418/runtime.json +11 -0
  654. package/.ikie/ferments/019f274f-2d9e-7186-b8f9-0d5863265329/runtime.json +11 -0
  655. package/.ikie/ferments/019f274f-2dbb-73f9-8231-b52b6e1eb863/runtime.json +12 -0
  656. package/.ikie/ferments/019f274f-2ddf-7477-a5a2-a20be1921fbf/runtime.json +11 -0
  657. package/.ikie/ferments/019f274f-2e01-710b-8175-18eeb0e792e2/runtime.json +11 -0
  658. package/.ikie/ferments/019f274f-2e26-7217-a41e-3bd106e0a9cf/runtime.json +11 -0
  659. package/.ikie/ferments/019f274f-2e3a-72bc-9945-37a576bb7ef1/runtime.json +11 -0
  660. package/.ikie/ferments/019f274f-2e61-77e5-85ab-dda905bded90/runtime.json +13 -0
  661. package/.ikie/ferments/019f274f-2e7e-73ea-a7c9-14ab5125c3d3/runtime.json +11 -0
  662. package/.ikie/ferments/019f274f-4262-76b9-884a-9ff2121f2c3a/reviews/phase-phase-1-1.json +41 -0
  663. package/.ikie/ferments/019f274f-4262-76b9-884a-9ff2121f2c3a/runtime.json +11 -0
  664. package/.ikie/ferments/019f274f-42ce-753f-ba6d-c1c2be5b7c71/reviews/phase-phase-1-1.json +47 -0
  665. package/.ikie/ferments/019f274f-42ce-753f-ba6d-c1c2be5b7c71/runtime.json +13 -0
  666. package/.ikie/ferments/019f274f-4353-75ed-bad2-0f74d61ceff5/reviews/phase-phase-1-1.json +40 -0
  667. package/.ikie/ferments/019f274f-4353-75ed-bad2-0f74d61ceff5/runtime.json +9 -0
  668. package/.ikie/ferments/019f274f-4379-7716-af61-2381f422540e/reviews/phase-phase-1-1.json +40 -0
  669. package/.ikie/ferments/019f274f-4379-7716-af61-2381f422540e/runtime.json +9 -0
  670. package/.ikie/ferments/019f274f-43a1-716c-ba31-4b705e8afb1a/reviews/phase-phase-1-1.json +40 -0
  671. package/.ikie/ferments/019f274f-43a1-716c-ba31-4b705e8afb1a/runtime.json +9 -0
  672. package/.ikie/ferments/019f274f-43de-761a-b793-fca5ca243eea/reviews/phase-phase-1-1.json +40 -0
  673. package/.ikie/ferments/019f274f-43de-761a-b793-fca5ca243eea/runtime.json +9 -0
  674. package/.ikie/ferments/019f274f-4401-73e9-b9d8-99631bab030b/reviews/phase-phase-1-1.json +40 -0
  675. package/.ikie/ferments/019f274f-4401-73e9-b9d8-99631bab030b/runtime.json +9 -0
  676. package/.ikie/ferments/019f274f-442b-770b-b411-feeb46ae7a8d/reviews/phase-phase-1-1.json +62 -0
  677. package/.ikie/ferments/019f274f-442b-770b-b411-feeb46ae7a8d/runtime.json +9 -0
  678. package/.ikie/ferments/019f275c-3e9e-7557-b50e-0e56cc6b07f5/runtime.json +11 -0
  679. package/.ikie/ferments/019f275c-3ec3-73ea-b557-77cc517095f2/runtime.json +11 -0
  680. package/.ikie/ferments/019f275c-3ee5-774f-876e-3caacb9b1d95/runtime.json +11 -0
  681. package/.ikie/ferments/019f275c-3f28-73ee-8eae-568fec8011b6/runtime.json +12 -0
  682. package/.ikie/ferments/019f275c-3f57-70a8-ba4d-d179cceaabbf/runtime.json +11 -0
  683. package/.ikie/ferments/019f275c-3f88-72cb-abb5-8e0e176e1dd2/runtime.json +15 -0
  684. package/.ikie/ferments/019f275c-3fb4-7248-9c23-874baa6e2a9d/runtime.json +15 -0
  685. package/.ikie/ferments/019f275c-3fe1-759b-afd9-f5e47564de48/runtime.json +15 -0
  686. package/.ikie/ferments/019f275c-401f-74e8-b968-d325ae2faf56/runtime.json +13 -0
  687. package/.ikie/ferments/019f275c-4067-752e-a0d8-d85f670f9473/runtime.json +15 -0
  688. package/.ikie/ferments/019f275c-40a2-74de-b858-ef4ad52484ea/runtime.json +15 -0
  689. package/.ikie/ferments/019f275c-4105-738f-95d0-6e9f7f9568fb/runtime.json +11 -0
  690. package/.ikie/ferments/019f275c-411b-76e9-b030-df118a1b23b4/runtime.json +15 -0
  691. package/.ikie/ferments/019f275c-4153-74ec-8b93-e2e0e82c27b0/runtime.json +15 -0
  692. package/.ikie/ferments/019f275c-4199-739b-9af9-b1cfc26623c3/runtime.json +15 -0
  693. package/.ikie/ferments/019f275c-41cb-746b-8481-7ca9d82a8b64/runtime.json +15 -0
  694. package/.ikie/ferments/019f275c-4209-756f-b335-8e6dfe51bac1/runtime.json +15 -0
  695. package/.ikie/ferments/019f275c-424c-7512-ac17-b8c04dcf82ac/runtime.json +15 -0
  696. package/.ikie/ferments/019f275c-4269-74eb-a213-e221479a26e5/runtime.json +15 -0
  697. package/.ikie/ferments/019f275c-428b-71ea-acda-027b98d191d1/runtime.json +15 -0
  698. package/.ikie/ferments/019f275c-42bb-75da-b330-e9f101c36d5c/runtime.json +15 -0
  699. package/.ikie/ferments/019f275c-42e3-777a-8e8c-80772f6d6bcb/runtime.json +11 -0
  700. package/.ikie/ferments/019f275c-430b-7779-bcc7-95a0b6fc693d/runtime.json +11 -0
  701. package/.ikie/ferments/019f275c-432e-71f9-b65d-88d26f3b185f/reviews/phase-phase-1-1.json +63 -0
  702. package/.ikie/ferments/019f275c-432e-71f9-b65d-88d26f3b185f/runtime.json +17 -0
  703. package/.ikie/ferments/019f275c-447e-756d-8ec0-091e54bcc7b4/reviews/phase-phase-1-1.json +63 -0
  704. package/.ikie/ferments/019f275c-447e-756d-8ec0-091e54bcc7b4/runtime.json +17 -0
  705. package/.ikie/ferments/019f275c-4602-757e-9283-3606516f4d15/runtime.json +11 -0
  706. package/.ikie/ferments/019f275c-4a3b-75f0-8355-8524d1589242/runtime.json +11 -0
  707. package/.ikie/ferments/019f275c-4a5c-744e-9792-deb33fe1e244/runtime.json +11 -0
  708. package/.ikie/ferments/019f275c-4a79-73d2-beae-4e85f8906581/runtime.json +11 -0
  709. package/.ikie/ferments/019f275c-4a97-70b9-98d1-53d9326b4c95/runtime.json +11 -0
  710. package/.ikie/ferments/019f275c-4ac1-7452-ab7a-485bde641591/pending-proposal.json +45 -0
  711. package/.ikie/ferments/019f275c-4ad7-77ba-8a63-d8586db466e7/pending-proposal.json +45 -0
  712. package/.ikie/ferments/019f275c-4bee-77b9-8470-98c4aafeae43/pending-proposal.json +45 -0
  713. package/.ikie/ferments/019f275c-4c3d-712b-95f6-a671b7884658/pending-proposal.json +45 -0
  714. package/.ikie/ferments/019f275c-4c4e-73a0-accb-e76c29bc1f6d/pending-proposal.json +45 -0
  715. package/.ikie/ferments/019f275c-7598-775d-beed-cde3b6cb74e6/runtime.json +13 -0
  716. package/.ikie/ferments/019f275c-75c0-773d-9c0c-dd4943fc6092/runtime.json +11 -0
  717. package/.ikie/ferments/019f275c-75dc-7629-8a52-1eba66275779/runtime.json +11 -0
  718. package/.ikie/ferments/019f275c-75f3-742b-8494-e8a1facb02bb/runtime.json +11 -0
  719. package/.ikie/ferments/019f275c-760c-705e-8d98-7963d8830086/runtime.json +11 -0
  720. package/.ikie/ferments/019f275c-7627-763c-ae8e-20dde59c64b9/runtime.json +11 -0
  721. package/.ikie/ferments/019f275c-763c-74ae-b835-b52b57c52e9b/runtime.json +11 -0
  722. package/.ikie/ferments/019f275c-7650-7499-b744-7f38cfa776f4/runtime.json +11 -0
  723. package/.ikie/ferments/019f275c-766d-75b8-ba35-69e472baf630/runtime.json +9 -0
  724. package/.ikie/ferments/019f275c-7687-72cc-beac-339a11625f14/runtime.json +13 -0
  725. package/.ikie/ferments/019f275c-76a6-773d-a4c1-19a5ec313596/runtime.json +11 -0
  726. package/.ikie/ferments/019f275c-76c1-71b9-a49e-4b520fcef543/runtime.json +11 -0
  727. package/.ikie/ferments/019f275c-7706-761f-a9cf-7e412e88015d/runtime.json +11 -0
  728. package/.ikie/ferments/019f275c-772b-745f-a74d-de30f52a3316/runtime.json +9 -0
  729. package/.ikie/ferments/019f275c-7746-759c-a116-c2cd08e2f29b/runtime.json +9 -0
  730. package/.ikie/ferments/019f275c-7760-709d-83bc-4d6fff7ac768/runtime.json +11 -0
  731. package/.ikie/ferments/019f275c-780e-74db-9d7d-bcc430c1a964/runtime.json +11 -0
  732. package/.ikie/ferments/019f275c-7826-734e-8113-90111e82d96a/runtime.json +12 -0
  733. package/.ikie/ferments/019f275c-7849-72ed-8fb0-d1815d2f66d3/runtime.json +11 -0
  734. package/.ikie/ferments/019f275c-785f-716e-b077-eee453653ee0/runtime.json +11 -0
  735. package/.ikie/ferments/019f275c-7871-70fe-b543-bcdaaa10d320/runtime.json +11 -0
  736. package/.ikie/ferments/019f275c-7888-777d-8edf-1a5a906679d7/runtime.json +11 -0
  737. package/.ikie/ferments/019f275c-78b3-722e-9d1a-f354b0d0fa96/runtime.json +13 -0
  738. package/.ikie/ferments/019f275c-78cb-7568-ad11-191bc98cabe5/runtime.json +11 -0
  739. package/.ikie/ferments/019f275c-8905-76ae-beb3-2ec9138b799b/reviews/phase-phase-1-1.json +41 -0
  740. package/.ikie/ferments/019f275c-8905-76ae-beb3-2ec9138b799b/runtime.json +11 -0
  741. package/.ikie/ferments/019f275c-8970-713f-a498-af24ac57355a/reviews/phase-phase-1-1.json +47 -0
  742. package/.ikie/ferments/019f275c-8970-713f-a498-af24ac57355a/runtime.json +13 -0
  743. package/.ikie/ferments/019f275c-89c6-712f-b3c9-d9459bdaba76/reviews/phase-phase-1-1.json +40 -0
  744. package/.ikie/ferments/019f275c-89c6-712f-b3c9-d9459bdaba76/runtime.json +9 -0
  745. package/.ikie/ferments/019f275c-89e8-7105-9ba9-eda02056339a/reviews/phase-phase-1-1.json +40 -0
  746. package/.ikie/ferments/019f275c-89e8-7105-9ba9-eda02056339a/runtime.json +9 -0
  747. package/.ikie/ferments/019f275c-8a0d-71cb-bbb3-aa061c305aab/reviews/phase-phase-1-1.json +40 -0
  748. package/.ikie/ferments/019f275c-8a0d-71cb-bbb3-aa061c305aab/runtime.json +9 -0
  749. package/.ikie/ferments/019f275c-8a31-758b-87c7-1b2ec8b0bd7a/reviews/phase-phase-1-1.json +40 -0
  750. package/.ikie/ferments/019f275c-8a31-758b-87c7-1b2ec8b0bd7a/runtime.json +9 -0
  751. package/.ikie/ferments/019f275c-8a4f-7649-a250-4074bed6f208/reviews/phase-phase-1-1.json +40 -0
  752. package/.ikie/ferments/019f275c-8a4f-7649-a250-4074bed6f208/runtime.json +9 -0
  753. package/.ikie/ferments/019f275c-8a6e-706d-af6d-f6636f3b229e/reviews/phase-phase-1-1.json +62 -0
  754. package/.ikie/ferments/019f275c-8a6e-706d-af6d-f6636f3b229e/runtime.json +9 -0
  755. package/.ikie/ferments/019f275e-8903-721d-98f8-0135ab6b4698/runtime.json +11 -0
  756. package/.ikie/ferments/019f275e-8920-7644-a529-664b63f9bab1/runtime.json +11 -0
  757. package/.ikie/ferments/019f275e-8938-75c2-85ab-f5a50138a4eb/runtime.json +11 -0
  758. package/.ikie/ferments/019f275e-895e-74a1-b263-2f73d989898e/runtime.json +12 -0
  759. package/.ikie/ferments/019f275e-8977-75ee-9e9a-cc069fff1cfa/runtime.json +11 -0
  760. package/.ikie/ferments/019f275e-899d-773b-abe3-e93c56f57cf1/runtime.json +11 -0
  761. package/.ikie/ferments/019f275e-89d1-72ea-9362-d4ce4079e846/runtime.json +15 -0
  762. package/.ikie/ferments/019f275e-89f9-7007-b382-a55e983d9520/runtime.json +15 -0
  763. package/.ikie/ferments/019f275e-8a1d-7687-a56e-94ead3cafbf8/runtime.json +15 -0
  764. package/.ikie/ferments/019f275e-8a49-760f-9639-3ce1494f37e9/runtime.json +13 -0
  765. package/.ikie/ferments/019f275e-8a7d-7461-b978-c3478b99b386/runtime.json +15 -0
  766. package/.ikie/ferments/019f275e-8aac-736d-bd96-6b442359993b/runtime.json +15 -0
  767. package/.ikie/ferments/019f275e-8ae6-7298-a523-d2fb7287bed3/runtime.json +11 -0
  768. package/.ikie/ferments/019f275e-8b01-7059-85a1-a665334ced3e/runtime.json +15 -0
  769. package/.ikie/ferments/019f275e-8b29-7295-be5b-0468763ab101/runtime.json +15 -0
  770. package/.ikie/ferments/019f275e-8b51-7204-9d30-0a67dae9c341/runtime.json +15 -0
  771. package/.ikie/ferments/019f275e-8b78-71eb-a8a3-1448d3373912/runtime.json +15 -0
  772. package/.ikie/ferments/019f275e-8b9d-76bf-9caa-0fed193b85bf/runtime.json +15 -0
  773. package/.ikie/ferments/019f275e-8bc0-71df-9356-19d3075c9568/runtime.json +15 -0
  774. package/.ikie/ferments/019f275e-8be2-75bd-be4a-ba2ede0e95f3/runtime.json +15 -0
  775. package/.ikie/ferments/019f275e-8c0b-714a-a389-20ffe6d0e66d/runtime.json +15 -0
  776. package/.ikie/ferments/019f275e-8c30-7371-86af-78e5f5ac8b23/runtime.json +15 -0
  777. package/.ikie/ferments/019f275e-8c5a-7383-bd79-c7fec3a71946/runtime.json +11 -0
  778. package/.ikie/ferments/019f275e-8c75-76b1-bcaa-81e67fc35aa8/runtime.json +11 -0
  779. package/.ikie/ferments/019f275e-8caa-71e9-9e66-0d30c4a03123/reviews/phase-phase-1-1.json +63 -0
  780. package/.ikie/ferments/019f275e-8caa-71e9-9e66-0d30c4a03123/runtime.json +17 -0
  781. package/.ikie/ferments/019f275e-8e59-7787-84f8-fcf93ec75949/reviews/phase-phase-1-1.json +63 -0
  782. package/.ikie/ferments/019f275e-8e59-7787-84f8-fcf93ec75949/runtime.json +17 -0
  783. package/.ikie/ferments/019f275e-8ffb-70c2-844e-e1f4fa4c2cc4/runtime.json +11 -0
  784. package/.ikie/ferments/019f275e-949b-7158-a426-07bcca442439/runtime.json +11 -0
  785. package/.ikie/ferments/019f275e-94c6-7479-abcb-c22fc19445a0/runtime.json +11 -0
  786. package/.ikie/ferments/019f275e-94eb-76e9-a148-fb5001492823/runtime.json +11 -0
  787. package/.ikie/ferments/019f275e-9516-765a-b8ee-e88e5ab2530f/runtime.json +11 -0
  788. package/.ikie/ferments/019f275e-9539-740f-bbdb-09b82f71fc81/pending-proposal.json +45 -0
  789. package/.ikie/ferments/019f275e-954f-73e0-9286-fdf09cb1cbc6/pending-proposal.json +45 -0
  790. package/.ikie/ferments/019f275e-967d-73dc-bfaf-18e44335cff8/pending-proposal.json +45 -0
  791. package/.ikie/ferments/019f275e-96f0-702d-b0d2-f2aeb1c7ee15/pending-proposal.json +45 -0
  792. package/.ikie/ferments/019f275e-9708-770c-bae2-2652e32be3cf/pending-proposal.json +45 -0
  793. package/.ikie/ferments/019f275e-c992-77a4-960a-d6d51983c9d6/runtime.json +13 -0
  794. package/.ikie/ferments/019f275e-c9cf-724a-a59f-8e34f026db5e/runtime.json +11 -0
  795. package/.ikie/ferments/019f275e-c9e6-7647-9517-b2b25cd1f495/runtime.json +11 -0
  796. package/.ikie/ferments/019f275e-ca11-716b-832b-11fc14ce1ded/runtime.json +11 -0
  797. package/.ikie/ferments/019f275e-ca2f-74df-90fa-2eed00b55ecf/runtime.json +11 -0
  798. package/.ikie/ferments/019f275e-ca49-77ed-bb62-cd9c3c1176a5/runtime.json +11 -0
  799. package/.ikie/ferments/019f275e-ca62-77ca-aed0-74728cab4be4/runtime.json +11 -0
  800. package/.ikie/ferments/019f275e-ca7a-76aa-a860-42152a699337/runtime.json +11 -0
  801. package/.ikie/ferments/019f275e-ca9b-766c-9ad4-2f86ff5c9dbe/runtime.json +9 -0
  802. package/.ikie/ferments/019f275e-cabc-77cf-a94a-9f8988667998/runtime.json +13 -0
  803. package/.ikie/ferments/019f275e-cae6-76d9-8682-d138cbd0e3cf/runtime.json +11 -0
  804. package/.ikie/ferments/019f275e-cb0a-7361-8e72-84e44afa7847/runtime.json +11 -0
  805. package/.ikie/ferments/019f275e-cb67-71dd-a7b7-35d98fca2379/runtime.json +11 -0
  806. package/.ikie/ferments/019f275e-cb8c-75c8-9a02-812c50dbcc28/runtime.json +9 -0
  807. package/.ikie/ferments/019f275e-cba7-74c5-8a0e-facff616ecf0/runtime.json +9 -0
  808. package/.ikie/ferments/019f275e-cbc6-719a-a1e9-86fad18fb0de/runtime.json +11 -0
  809. package/.ikie/ferments/019f275e-cc83-7608-878d-3b107b55db48/runtime.json +11 -0
  810. package/.ikie/ferments/019f275e-cc96-72f9-9e5d-a350ea59c5b7/runtime.json +12 -0
  811. package/.ikie/ferments/019f275e-ccb5-72bf-8ad6-8ea4f87f86c0/runtime.json +11 -0
  812. package/.ikie/ferments/019f275e-ccd9-77de-89ff-25fa626c05b4/runtime.json +11 -0
  813. package/.ikie/ferments/019f275e-ccfb-777a-8a40-1ccaf4c139c4/runtime.json +11 -0
  814. package/.ikie/ferments/019f275e-cd15-7785-be69-1f9ef80faa52/runtime.json +11 -0
  815. package/.ikie/ferments/019f275e-cd31-7629-9034-57bcde8cf8e1/runtime.json +13 -0
  816. package/.ikie/ferments/019f275e-cd56-74be-8cdd-94af39b5593b/runtime.json +11 -0
  817. package/.ikie/ferments/019f275e-db71-73fb-9992-6d52de708265/reviews/phase-phase-1-1.json +41 -0
  818. package/.ikie/ferments/019f275e-db71-73fb-9992-6d52de708265/runtime.json +11 -0
  819. package/.ikie/ferments/019f275e-dbc0-725b-bb55-3eca5072215b/reviews/phase-phase-1-1.json +47 -0
  820. package/.ikie/ferments/019f275e-dbc0-725b-bb55-3eca5072215b/runtime.json +13 -0
  821. package/.ikie/ferments/019f275e-dc11-7320-bc60-fbca50c8e709/reviews/phase-phase-1-1.json +40 -0
  822. package/.ikie/ferments/019f275e-dc11-7320-bc60-fbca50c8e709/runtime.json +9 -0
  823. package/.ikie/ferments/019f275e-dc39-73ee-9d63-d8fbb906d877/reviews/phase-phase-1-1.json +40 -0
  824. package/.ikie/ferments/019f275e-dc39-73ee-9d63-d8fbb906d877/runtime.json +9 -0
  825. package/.ikie/ferments/019f275e-dc60-7649-9918-b236d9a16cef/reviews/phase-phase-1-1.json +40 -0
  826. package/.ikie/ferments/019f275e-dc60-7649-9918-b236d9a16cef/runtime.json +9 -0
  827. package/.ikie/ferments/019f275e-dc83-7030-aa35-3a78b18fadb4/reviews/phase-phase-1-1.json +40 -0
  828. package/.ikie/ferments/019f275e-dc83-7030-aa35-3a78b18fadb4/runtime.json +9 -0
  829. package/.ikie/ferments/019f275e-dcb3-706f-b3b0-b44556b7d3cb/reviews/phase-phase-1-1.json +40 -0
  830. package/.ikie/ferments/019f275e-dcb3-706f-b3b0-b44556b7d3cb/runtime.json +9 -0
  831. package/.ikie/ferments/019f275e-dcd6-717c-afe6-82a959a0fcbd/reviews/phase-phase-1-1.json +62 -0
  832. package/.ikie/ferments/019f275e-dcd6-717c-afe6-82a959a0fcbd/runtime.json +9 -0
  833. package/.ikie/ferments/019f2764-6cde-7610-b409-ee715ca796e8/runtime.json +11 -0
  834. package/.ikie/ferments/019f2764-6cfa-733d-8231-937535e2e6b8/runtime.json +11 -0
  835. package/.ikie/ferments/019f2764-6d11-7611-b216-dcdaa468d686/runtime.json +11 -0
  836. package/.ikie/ferments/019f2764-6d33-728f-901c-4fef8141050d/runtime.json +12 -0
  837. package/.ikie/ferments/019f2764-6d5d-7314-9e98-3851effc803f/runtime.json +11 -0
  838. package/.ikie/ferments/019f2764-6d87-722e-bf53-0dd6182ea7c6/runtime.json +15 -0
  839. package/.ikie/ferments/019f2764-6daa-7052-b766-8aef8e542b88/runtime.json +15 -0
  840. package/.ikie/ferments/019f2764-6dc9-73fc-8665-a3f8b51f7450/runtime.json +15 -0
  841. package/.ikie/ferments/019f2764-6df3-7368-94a2-5369f3276848/runtime.json +13 -0
  842. package/.ikie/ferments/019f2764-6e25-762c-a0e0-0ef60c6e2653/runtime.json +15 -0
  843. package/.ikie/ferments/019f2764-6e58-733d-ab0e-8fad4b2c665e/runtime.json +15 -0
  844. package/.ikie/ferments/019f2764-6ead-742a-afc5-e10a044333ec/runtime.json +11 -0
  845. package/.ikie/ferments/019f2764-6ec9-7566-a4f0-e0d14f80e103/runtime.json +15 -0
  846. package/.ikie/ferments/019f2764-6efe-727d-a81b-36fbde2904b3/runtime.json +15 -0
  847. package/.ikie/ferments/019f2764-6f3d-7292-bbf4-88e9ee6b077e/runtime.json +15 -0
  848. package/.ikie/ferments/019f2764-6f6c-758f-9427-652571b7494f/runtime.json +15 -0
  849. package/.ikie/ferments/019f2764-6faa-700b-8d2d-cbed35957db8/runtime.json +15 -0
  850. package/.ikie/ferments/019f2764-6fcb-71d8-9daf-225746805ba4/runtime.json +15 -0
  851. package/.ikie/ferments/019f2764-6ff0-7573-9208-e236e2969c5a/runtime.json +15 -0
  852. package/.ikie/ferments/019f2764-7012-77ce-97c9-6e99dd0367b3/runtime.json +15 -0
  853. package/.ikie/ferments/019f2764-703d-7554-8008-5104879d081d/runtime.json +15 -0
  854. package/.ikie/ferments/019f2764-7082-7399-80d5-659015dc6129/runtime.json +11 -0
  855. package/.ikie/ferments/019f2764-70b4-7581-b83e-9945010b008b/runtime.json +11 -0
  856. package/.ikie/ferments/019f2764-70d2-71a1-8b2f-1db7c0de5d5b/reviews/phase-phase-1-1.json +63 -0
  857. package/.ikie/ferments/019f2764-70d2-71a1-8b2f-1db7c0de5d5b/runtime.json +17 -0
  858. package/.ikie/ferments/019f2764-7256-714b-9804-17a6ad3c7996/reviews/phase-phase-1-1.json +63 -0
  859. package/.ikie/ferments/019f2764-7256-714b-9804-17a6ad3c7996/runtime.json +17 -0
  860. package/.ikie/ferments/019f2764-742b-711f-9997-ae6ce141d7d9/runtime.json +11 -0
  861. package/.ikie/ferments/019f2764-78e4-765c-bcf6-ae76955d98c0/runtime.json +11 -0
  862. package/.ikie/ferments/019f2764-7900-7573-afaf-c32d1b6a7be0/runtime.json +11 -0
  863. package/.ikie/ferments/019f2764-7920-7463-b2c3-132980285998/runtime.json +11 -0
  864. package/.ikie/ferments/019f2764-7947-721f-9c5e-6fc087b2e912/runtime.json +11 -0
  865. package/.ikie/ferments/019f2764-7967-735b-9066-12a93c490f17/pending-proposal.json +45 -0
  866. package/.ikie/ferments/019f2764-798b-749d-b86b-90c55c838b29/pending-proposal.json +45 -0
  867. package/.ikie/ferments/019f2764-7a9f-747c-81ce-f27825e1cefb/pending-proposal.json +45 -0
  868. package/.ikie/ferments/019f2764-7afc-745a-8d70-a2ebf234977d/pending-proposal.json +45 -0
  869. package/.ikie/ferments/019f2764-7b0f-715d-a410-e707593c0f1b/pending-proposal.json +45 -0
  870. package/.ikie/ferments/019f2764-a49c-750d-8022-8d5ef7b34341/runtime.json +13 -0
  871. package/.ikie/ferments/019f2764-a4c0-7779-a268-1589e2c4d025/runtime.json +11 -0
  872. package/.ikie/ferments/019f2764-a4e2-706f-8cc3-f71f13a5334c/runtime.json +11 -0
  873. package/.ikie/ferments/019f2764-a4fc-765c-b248-0fd90d273737/runtime.json +11 -0
  874. package/.ikie/ferments/019f2764-a511-7719-b577-47d9389dc68c/runtime.json +11 -0
  875. package/.ikie/ferments/019f2764-a524-731c-91d5-99c2242128e7/runtime.json +11 -0
  876. package/.ikie/ferments/019f2764-a53c-7308-a4a2-2c4ebd0af1f2/runtime.json +11 -0
  877. package/.ikie/ferments/019f2764-a555-762a-b6ec-c7a1ea59914b/runtime.json +11 -0
  878. package/.ikie/ferments/019f2764-a56e-776a-8421-d52ce16332e6/runtime.json +9 -0
  879. package/.ikie/ferments/019f2764-a584-75ad-8cf4-02ad739aeac6/runtime.json +13 -0
  880. package/.ikie/ferments/019f2764-a5a6-716c-8803-03dfe8638639/runtime.json +11 -0
  881. package/.ikie/ferments/019f2764-a5cb-75a8-9184-8bc493e04858/runtime.json +11 -0
  882. package/.ikie/ferments/019f2764-a613-726d-9770-828b95668f3d/runtime.json +11 -0
  883. package/.ikie/ferments/019f2764-a62b-703f-ad34-e560da58091f/runtime.json +9 -0
  884. package/.ikie/ferments/019f2764-a646-75a7-a048-e1c6a57c17db/runtime.json +9 -0
  885. package/.ikie/ferments/019f2764-a65d-7369-8043-22e8aa877564/runtime.json +11 -0
  886. package/.ikie/ferments/019f2764-a714-7737-9aca-229d1f730df1/runtime.json +11 -0
  887. package/.ikie/ferments/019f2764-a725-71af-91db-6146483607ce/runtime.json +12 -0
  888. package/.ikie/ferments/019f2764-a748-721c-a9bb-9a5cd1a6390b/runtime.json +11 -0
  889. package/.ikie/ferments/019f2764-a761-7632-84ba-5d4da92e371d/runtime.json +11 -0
  890. package/.ikie/ferments/019f2764-a776-76dd-a48e-148e4d5e6dcd/runtime.json +11 -0
  891. package/.ikie/ferments/019f2764-a78f-77d0-9647-ffb2ed828229/runtime.json +11 -0
  892. package/.ikie/ferments/019f2764-a7ab-716e-958d-c3f3c4d33a34/runtime.json +13 -0
  893. package/.ikie/ferments/019f2764-a7cb-775b-8844-8faa27f1ac1c/runtime.json +11 -0
  894. package/.ikie/ferments/019f2764-bd5e-773d-9b24-9da824db3174/reviews/phase-phase-1-1.json +41 -0
  895. package/.ikie/ferments/019f2764-bd5e-773d-9b24-9da824db3174/runtime.json +11 -0
  896. package/.ikie/ferments/019f2764-bda9-7207-b421-beff2d49cd2a/reviews/phase-phase-1-1.json +47 -0
  897. package/.ikie/ferments/019f2764-bda9-7207-b421-beff2d49cd2a/runtime.json +13 -0
  898. package/.ikie/ferments/019f2764-be1e-775f-b937-81b9fd368168/reviews/phase-phase-1-1.json +40 -0
  899. package/.ikie/ferments/019f2764-be1e-775f-b937-81b9fd368168/runtime.json +9 -0
  900. package/.ikie/ferments/019f2764-be38-7792-b549-8583fd6c5e70/reviews/phase-phase-1-1.json +40 -0
  901. package/.ikie/ferments/019f2764-be38-7792-b549-8583fd6c5e70/runtime.json +9 -0
  902. package/.ikie/ferments/019f2764-be5e-73da-85c5-508167795c94/reviews/phase-phase-1-1.json +40 -0
  903. package/.ikie/ferments/019f2764-be5e-73da-85c5-508167795c94/runtime.json +9 -0
  904. package/.ikie/ferments/019f2764-be82-721a-aa06-3b54c6236827/reviews/phase-phase-1-1.json +40 -0
  905. package/.ikie/ferments/019f2764-be82-721a-aa06-3b54c6236827/runtime.json +9 -0
  906. package/.ikie/ferments/019f2764-be97-703d-8e0a-6496ed0a83ca/reviews/phase-phase-1-1.json +40 -0
  907. package/.ikie/ferments/019f2764-be97-703d-8e0a-6496ed0a83ca/runtime.json +9 -0
  908. package/.ikie/ferments/019f2764-bebc-756a-a6ca-0f40b9705a0f/reviews/phase-phase-1-1.json +62 -0
  909. package/.ikie/ferments/019f2764-bebc-756a-a6ca-0f40b9705a0f/runtime.json +9 -0
  910. package/.ikie/ferments/019f2766-a81a-73aa-ba58-4a0192a7b079/runtime.json +11 -0
  911. package/.ikie/ferments/019f2766-a839-708c-b3bf-4c3f2279558e/runtime.json +11 -0
  912. package/.ikie/ferments/019f2766-a852-7641-a85f-69ea0ce5d73b/runtime.json +11 -0
  913. package/.ikie/ferments/019f2766-a877-74b8-b1de-3ffbbcb6f14b/runtime.json +12 -0
  914. package/.ikie/ferments/019f2766-a892-767d-b447-2e7a666f42f0/runtime.json +11 -0
  915. package/.ikie/ferments/019f2766-a8c2-7178-b06c-00d7646d1966/runtime.json +11 -0
  916. package/.ikie/ferments/019f2766-a8f5-713b-92d4-c4c70e48c5db/runtime.json +15 -0
  917. package/.ikie/ferments/019f2766-a91c-76a8-9d47-7e07b7843506/runtime.json +15 -0
  918. package/.ikie/ferments/019f2766-a944-7458-bae5-e3c38b3eec06/runtime.json +15 -0
  919. package/.ikie/ferments/019f2766-a973-77da-b2c0-d4f59f145d19/runtime.json +13 -0
  920. package/.ikie/ferments/019f2766-a9ae-701f-b8af-2d02369bc2f1/runtime.json +15 -0
  921. package/.ikie/ferments/019f2766-a9e5-7319-882f-58450ee132ea/runtime.json +15 -0
  922. package/.ikie/ferments/019f2766-aa3a-722b-9ed0-f38465896d02/runtime.json +11 -0
  923. package/.ikie/ferments/019f2766-aa58-7389-b25e-688385ff4a7f/runtime.json +15 -0
  924. package/.ikie/ferments/019f2766-aa8c-72f1-8b4e-a5260ac64189/runtime.json +15 -0
  925. package/.ikie/ferments/019f2766-aab7-7310-a9ec-b3027823b960/runtime.json +15 -0
  926. package/.ikie/ferments/019f2766-aae0-714c-b796-491d0c0d0e5b/runtime.json +15 -0
  927. package/.ikie/ferments/019f2766-ab05-740a-9fe0-2882dcad789b/runtime.json +15 -0
  928. package/.ikie/ferments/019f2766-ab2d-7188-9d25-545da08208e3/runtime.json +15 -0
  929. package/.ikie/ferments/019f2766-ab55-71d1-aafa-b6c62c6d7c7c/runtime.json +15 -0
  930. package/.ikie/ferments/019f2766-ab7f-76a1-9cde-c84ebb38a76c/runtime.json +15 -0
  931. package/.ikie/ferments/019f2766-abad-71db-9b6c-c341a91e609c/runtime.json +15 -0
  932. package/.ikie/ferments/019f2766-abd1-7392-a14e-a62f58887e86/runtime.json +11 -0
  933. package/.ikie/ferments/019f2766-abee-7229-9251-77f5474df062/runtime.json +11 -0
  934. package/.ikie/ferments/019f2766-ac13-77ab-ad1f-179bbf19f285/reviews/phase-phase-1-1.json +63 -0
  935. package/.ikie/ferments/019f2766-ac13-77ab-ad1f-179bbf19f285/runtime.json +17 -0
  936. package/.ikie/ferments/019f2766-ad4e-771a-8809-da61d5e9187d/reviews/phase-phase-1-1.json +63 -0
  937. package/.ikie/ferments/019f2766-ad4e-771a-8809-da61d5e9187d/runtime.json +17 -0
  938. package/.ikie/ferments/019f2766-aec7-72c7-8400-65d8774d93fe/runtime.json +11 -0
  939. package/.ikie/ferments/019f2766-b2e5-775e-a211-97476c9184fa/runtime.json +11 -0
  940. package/.ikie/ferments/019f2766-b303-70c5-a66a-e39ce29d0a4a/runtime.json +11 -0
  941. package/.ikie/ferments/019f2766-b32e-7618-860c-3cf1a98c2562/runtime.json +11 -0
  942. package/.ikie/ferments/019f2766-b353-719b-9299-207b9a3b41b3/runtime.json +11 -0
  943. package/.ikie/ferments/019f2766-b374-72e3-a804-8f3c82dc2059/pending-proposal.json +45 -0
  944. package/.ikie/ferments/019f2766-b38b-75ca-83c3-d4e5625f814b/pending-proposal.json +45 -0
  945. package/.ikie/ferments/019f2766-b495-73d6-a0d3-b26c033d4769/pending-proposal.json +45 -0
  946. package/.ikie/ferments/019f2766-b4e1-70f8-a38e-c478ab72c091/pending-proposal.json +45 -0
  947. package/.ikie/ferments/019f2766-b4f5-7671-b2c4-76d6f9f68cd3/pending-proposal.json +45 -0
  948. package/.ikie/ferments/019f2766-d341-7410-8d94-056f70b5d884/runtime.json +11 -0
  949. package/.ikie/ferments/019f2766-d35f-71a3-bdd3-c749aa870ff8/runtime.json +11 -0
  950. package/.ikie/ferments/019f2766-d382-70be-9a79-094070335d58/runtime.json +11 -0
  951. package/.ikie/ferments/019f2766-d3ae-75c7-b83e-4636e859cf7d/runtime.json +12 -0
  952. package/.ikie/ferments/019f2766-d3c7-778d-b399-f3e13fa34204/runtime.json +11 -0
  953. package/.ikie/ferments/019f2766-d3f0-7730-9e47-9bbc5483d5c9/runtime.json +11 -0
  954. package/.ikie/ferments/019f2766-d422-74ab-8e0b-6b5f139658b8/runtime.json +15 -0
  955. package/.ikie/ferments/019f2766-d448-7428-94ec-084521c6f60a/runtime.json +15 -0
  956. package/.ikie/ferments/019f2766-d46e-730e-89a6-dd0907baa5aa/runtime.json +15 -0
  957. package/.ikie/ferments/019f2766-d49b-71df-91f7-b4fb8e050c88/runtime.json +13 -0
  958. package/.ikie/ferments/019f2766-d4d6-72fd-b5ab-8aa8554c3ac8/runtime.json +15 -0
  959. package/.ikie/ferments/019f2766-d50b-7146-a0e2-bcc33cbf8168/runtime.json +15 -0
  960. package/.ikie/ferments/019f2766-d54e-7614-a157-8c6225b09552/runtime.json +11 -0
  961. package/.ikie/ferments/019f2766-d571-72f9-ac5f-9a58f8913af1/runtime.json +15 -0
  962. package/.ikie/ferments/019f2766-d5aa-7756-b523-29a10b1f0f93/runtime.json +15 -0
  963. package/.ikie/ferments/019f2766-d5ce-77b9-9746-ca5281e76d1e/runtime.json +15 -0
  964. package/.ikie/ferments/019f2766-d5f2-76ee-92f0-88e85515bb8c/runtime.json +15 -0
  965. package/.ikie/ferments/019f2766-d617-7669-8175-57038e3790b0/runtime.json +15 -0
  966. package/.ikie/ferments/019f2766-d63b-72aa-a6ca-f355b068db00/runtime.json +15 -0
  967. package/.ikie/ferments/019f2766-d664-754e-b827-42f9c6fc161b/runtime.json +15 -0
  968. package/.ikie/ferments/019f2766-d68c-710d-8769-befe67aad042/runtime.json +15 -0
  969. package/.ikie/ferments/019f2766-d6af-767c-9547-eee7f9c08dcf/runtime.json +15 -0
  970. package/.ikie/ferments/019f2766-d6d5-751e-8752-dcdc451712e2/runtime.json +11 -0
  971. package/.ikie/ferments/019f2766-d6f7-77b8-807d-75d914ff0302/runtime.json +11 -0
  972. package/.ikie/ferments/019f2766-d720-7159-97a9-820f305b3805/reviews/phase-phase-1-1.json +63 -0
  973. package/.ikie/ferments/019f2766-d720-7159-97a9-820f305b3805/runtime.json +17 -0
  974. package/.ikie/ferments/019f2766-d87f-729d-be05-90c4adb20ade/reviews/phase-phase-1-1.json +63 -0
  975. package/.ikie/ferments/019f2766-d87f-729d-be05-90c4adb20ade/runtime.json +17 -0
  976. package/.ikie/ferments/019f2766-da17-724b-ab3c-7154c7845381/runtime.json +11 -0
  977. package/.ikie/ferments/019f2766-ddf5-7470-a884-297c8936753a/runtime.json +11 -0
  978. package/.ikie/ferments/019f2766-de1a-7283-89b6-a249b9c8bdc1/runtime.json +11 -0
  979. package/.ikie/ferments/019f2766-de39-7771-a717-14beb4313f79/runtime.json +11 -0
  980. package/.ikie/ferments/019f2766-de5b-7418-bbcc-2ed38543137c/runtime.json +11 -0
  981. package/.ikie/ferments/019f2766-de7d-76cc-a74f-def9d1d99ac3/pending-proposal.json +45 -0
  982. package/.ikie/ferments/019f2766-de92-75a2-bcae-86efd5efe066/pending-proposal.json +45 -0
  983. package/.ikie/ferments/019f2766-dfb5-771c-adc0-9e948e0b8f18/pending-proposal.json +45 -0
  984. package/.ikie/ferments/019f2766-dff6-71cd-a14e-ab9e88792ca4/pending-proposal.json +45 -0
  985. package/.ikie/ferments/019f2766-e006-727b-83d9-af9c71158bef/pending-proposal.json +45 -0
  986. package/.ikie/ferments/019f2767-0345-74ba-a163-0c909ee37df1/runtime.json +11 -0
  987. package/.ikie/ferments/019f2767-036c-713d-9ef9-58a1191bd341/runtime.json +11 -0
  988. package/.ikie/ferments/019f2767-0387-72e6-b8b6-314fedade6e0/runtime.json +11 -0
  989. package/.ikie/ferments/019f2767-03af-738b-acde-360fa30a55f8/runtime.json +12 -0
  990. package/.ikie/ferments/019f2767-03cc-76e8-ae01-5b33c85fb46b/runtime.json +11 -0
  991. package/.ikie/ferments/019f2767-0409-7745-8f9d-a41ce8b7b11e/runtime.json +11 -0
  992. package/.ikie/ferments/019f2767-0467-70a9-8a75-2688109ab9c3/runtime.json +15 -0
  993. package/.ikie/ferments/019f2767-0493-7047-b2c9-a7ed6f70c89f/runtime.json +15 -0
  994. package/.ikie/ferments/019f2767-04b7-7486-a7cf-5ad7a09060a7/runtime.json +15 -0
  995. package/.ikie/ferments/019f2767-050f-713f-ba94-c01b549b3dfa/runtime.json +13 -0
  996. package/.ikie/ferments/019f2767-0561-7481-90da-2febe6cffddd/runtime.json +15 -0
  997. package/.ikie/ferments/019f2767-059c-74bb-b3fb-5e762939b3f6/runtime.json +15 -0
  998. package/.ikie/ferments/019f2767-05f6-7778-87d7-bd17f16cbfb5/runtime.json +11 -0
  999. package/.ikie/ferments/019f2767-0621-765e-9af4-4fd53e8fa0ec/runtime.json +15 -0
  1000. package/.ikie/ferments/019f2767-0652-77a4-86f8-fd32c3d03927/runtime.json +15 -0
  1001. package/.ikie/ferments/019f2767-067b-734b-85e5-cd7fc79c73cb/runtime.json +15 -0
  1002. package/.ikie/ferments/019f2767-06aa-71fa-a287-db9463cdae51/runtime.json +15 -0
  1003. package/.ikie/ferments/019f2767-06d5-771d-8f7b-cb18b2f9f122/runtime.json +15 -0
  1004. package/.ikie/ferments/019f2767-070a-7043-87fe-09012eaea4d6/runtime.json +15 -0
  1005. package/.ikie/ferments/019f2767-0733-707e-b141-7af7e0e43e30/runtime.json +15 -0
  1006. package/.ikie/ferments/019f2767-0751-7478-ae88-39af753f8f08/runtime.json +15 -0
  1007. package/.ikie/ferments/019f2767-0791-73af-be60-fe5a809f66bc/runtime.json +15 -0
  1008. package/.ikie/ferments/019f2767-07c5-720a-b9b7-1f96816c4122/runtime.json +11 -0
  1009. package/.ikie/ferments/019f2767-07e4-74fc-bf92-5f4c9c1cefab/runtime.json +11 -0
  1010. package/.ikie/ferments/019f2767-080c-77c8-a174-e8b97bd69510/reviews/phase-phase-1-1.json +63 -0
  1011. package/.ikie/ferments/019f2767-080c-77c8-a174-e8b97bd69510/runtime.json +17 -0
  1012. package/.ikie/ferments/019f2767-0986-7509-b1d0-7650aae65deb/reviews/phase-phase-1-1.json +63 -0
  1013. package/.ikie/ferments/019f2767-0986-7509-b1d0-7650aae65deb/runtime.json +17 -0
  1014. package/.ikie/ferments/019f2767-0b6e-7011-aec4-f728f98727ed/runtime.json +11 -0
  1015. package/.ikie/ferments/019f2767-10a6-75cc-850a-34d704f7eac9/runtime.json +11 -0
  1016. package/.ikie/ferments/019f2767-10cf-70aa-a00c-086ec4813201/runtime.json +11 -0
  1017. package/.ikie/ferments/019f2767-1101-74f7-8518-da795dd7aef7/runtime.json +11 -0
  1018. package/.ikie/ferments/019f2767-1140-738e-b9ce-35b94e415549/runtime.json +11 -0
  1019. package/.ikie/ferments/019f2767-1172-75a9-8f24-74316bfc7d53/pending-proposal.json +45 -0
  1020. package/.ikie/ferments/019f2767-118b-7048-a5d7-cffbef0e44e2/pending-proposal.json +45 -0
  1021. package/.ikie/ferments/019f2767-12be-730b-92b2-0bba958b78a1/pending-proposal.json +45 -0
  1022. package/.ikie/ferments/019f2767-131f-720b-b45a-382835a523ef/pending-proposal.json +45 -0
  1023. package/.ikie/ferments/019f2767-1335-74eb-b84c-9af1e9e52ff0/pending-proposal.json +45 -0
  1024. package/.ikie/ferments/019f2767-4563-715a-8c3c-cadf61ab94cf/runtime.json +13 -0
  1025. package/.ikie/ferments/019f2767-45b2-701b-990c-a8a30ff2c5f2/runtime.json +11 -0
  1026. package/.ikie/ferments/019f2767-45d7-705e-a8fc-202c2c894d5f/runtime.json +11 -0
  1027. package/.ikie/ferments/019f2767-45ee-773f-a4e7-6022c91b113c/runtime.json +11 -0
  1028. package/.ikie/ferments/019f2767-4613-7769-b4fa-6abde054e49d/runtime.json +11 -0
  1029. package/.ikie/ferments/019f2767-4626-704a-9d3e-6d51ff2c45c6/runtime.json +11 -0
  1030. package/.ikie/ferments/019f2767-4637-7346-b00e-35216ec55688/runtime.json +11 -0
  1031. package/.ikie/ferments/019f2767-4649-709c-9269-7d92ac49807a/runtime.json +11 -0
  1032. package/.ikie/ferments/019f2767-465e-76ec-a7c0-c63d79f0807f/runtime.json +9 -0
  1033. package/.ikie/ferments/019f2767-4679-76c1-8e62-1c105c4c6b0b/runtime.json +13 -0
  1034. package/.ikie/ferments/019f2767-4692-762a-963b-a53456d259fc/runtime.json +11 -0
  1035. package/.ikie/ferments/019f2767-46a7-7236-9510-fd0d5ecf273f/runtime.json +11 -0
  1036. package/.ikie/ferments/019f2767-46ee-705c-ad1a-e028ca79062a/runtime.json +11 -0
  1037. package/.ikie/ferments/019f2767-4702-741b-bb09-b4fd8cd9f15a/runtime.json +9 -0
  1038. package/.ikie/ferments/019f2767-4720-7192-9e90-89cc2710255a/runtime.json +9 -0
  1039. package/.ikie/ferments/019f2767-475f-70dc-9883-271aaa69c2b4/runtime.json +11 -0
  1040. package/.ikie/ferments/019f2767-4852-749f-9c8b-920b2c2b25d3/runtime.json +11 -0
  1041. package/.ikie/ferments/019f2767-486c-7309-a9ff-92579b04dc8c/runtime.json +12 -0
  1042. package/.ikie/ferments/019f2767-4899-771f-9f50-89e448dff488/runtime.json +11 -0
  1043. package/.ikie/ferments/019f2767-48ae-7328-a163-a959e2087743/runtime.json +11 -0
  1044. package/.ikie/ferments/019f2767-48ce-717a-828c-6b765da0a306/runtime.json +11 -0
  1045. package/.ikie/ferments/019f2767-48ef-707c-a17e-9db9da0eee1f/runtime.json +11 -0
  1046. package/.ikie/ferments/019f2767-490b-704b-9369-05fcbb050e2b/runtime.json +13 -0
  1047. package/.ikie/ferments/019f2767-4938-752e-a022-f76dadf8fcaf/runtime.json +11 -0
  1048. package/.ikie/ferments/019f2767-5cc6-73b9-b8e4-cb3719bbdc8d/reviews/phase-phase-1-1.json +41 -0
  1049. package/.ikie/ferments/019f2767-5cc6-73b9-b8e4-cb3719bbdc8d/runtime.json +11 -0
  1050. package/.ikie/ferments/019f2767-5d22-7419-840b-e18d2fe5a41d/reviews/phase-phase-1-1.json +47 -0
  1051. package/.ikie/ferments/019f2767-5d22-7419-840b-e18d2fe5a41d/runtime.json +13 -0
  1052. package/.ikie/ferments/019f2767-5d8c-75b0-bf28-5a0781cd0686/reviews/phase-phase-1-1.json +40 -0
  1053. package/.ikie/ferments/019f2767-5d8c-75b0-bf28-5a0781cd0686/runtime.json +9 -0
  1054. package/.ikie/ferments/019f2767-5dae-76e9-b23a-366527e3a529/reviews/phase-phase-1-1.json +40 -0
  1055. package/.ikie/ferments/019f2767-5dae-76e9-b23a-366527e3a529/runtime.json +9 -0
  1056. package/.ikie/ferments/019f2767-5dd4-73bf-821e-d74e53b266e1/reviews/phase-phase-1-1.json +40 -0
  1057. package/.ikie/ferments/019f2767-5dd4-73bf-821e-d74e53b266e1/runtime.json +9 -0
  1058. package/.ikie/ferments/019f2767-5de9-7518-a677-02b4926a0196/reviews/phase-phase-1-1.json +40 -0
  1059. package/.ikie/ferments/019f2767-5de9-7518-a677-02b4926a0196/runtime.json +9 -0
  1060. package/.ikie/ferments/019f2767-5dff-772a-b855-57afbb5e9c7e/reviews/phase-phase-1-1.json +40 -0
  1061. package/.ikie/ferments/019f2767-5dff-772a-b855-57afbb5e9c7e/runtime.json +9 -0
  1062. package/.ikie/ferments/019f2767-5e39-76a5-8dcc-6f9004f4a58e/reviews/phase-phase-1-1.json +62 -0
  1063. package/.ikie/ferments/019f2767-5e39-76a5-8dcc-6f9004f4a58e/runtime.json +9 -0
  1064. package/.ikie/ferments/019f2769-b766-74eb-844e-9903bf64f06d/runtime.json +11 -0
  1065. package/.ikie/ferments/019f2769-b784-72fa-a138-7bdc2fc6e070/runtime.json +11 -0
  1066. package/.ikie/ferments/019f2769-b79d-745b-b577-2ee15d5649b0/runtime.json +11 -0
  1067. package/.ikie/ferments/019f2769-b7c3-75be-9db0-360b0deea44b/runtime.json +12 -0
  1068. package/.ikie/ferments/019f2769-b7e0-758f-bd6a-734520ad3afa/runtime.json +11 -0
  1069. package/.ikie/ferments/019f2769-b807-721e-8827-30e490c8823c/runtime.json +11 -0
  1070. package/.ikie/ferments/019f2769-b836-727d-9c7f-b5a5f03dcc56/runtime.json +15 -0
  1071. package/.ikie/ferments/019f2769-b858-76ae-9fe0-b56d97afdf9b/runtime.json +15 -0
  1072. package/.ikie/ferments/019f2769-b87a-716c-9c81-14f1fa52f217/runtime.json +15 -0
  1073. package/.ikie/ferments/019f2769-b8a2-73dc-9d6d-ac781b700816/runtime.json +13 -0
  1074. package/.ikie/ferments/019f2769-b8d1-7689-9405-e97b063ec3a1/runtime.json +15 -0
  1075. package/.ikie/ferments/019f2769-b904-7154-8946-12e041f89921/runtime.json +15 -0
  1076. package/.ikie/ferments/019f2769-b941-713f-8e2b-1a608dec7ca6/runtime.json +11 -0
  1077. package/.ikie/ferments/019f2769-b95b-7122-bb5d-0bb3a2ad220a/runtime.json +15 -0
  1078. package/.ikie/ferments/019f2769-b97d-728d-b8fb-b1f302b1d819/runtime.json +15 -0
  1079. package/.ikie/ferments/019f2769-b99d-747b-853b-e415c006bfd2/runtime.json +15 -0
  1080. package/.ikie/ferments/019f2769-b9c0-76d6-a254-fba31ac6b662/runtime.json +15 -0
  1081. package/.ikie/ferments/019f2769-b9dd-7349-b246-95853d5d3af0/runtime.json +15 -0
  1082. package/.ikie/ferments/019f2769-b9fe-774f-80cd-06bfedd8a956/runtime.json +15 -0
  1083. package/.ikie/ferments/019f2769-ba1e-70d2-af18-3ea245abc903/runtime.json +15 -0
  1084. package/.ikie/ferments/019f2769-ba45-7730-aae9-9ca14bc6a81b/runtime.json +15 -0
  1085. package/.ikie/ferments/019f2769-ba72-7273-903c-d33bcd036a6b/runtime.json +15 -0
  1086. package/.ikie/ferments/019f2769-ba93-70f3-8884-7b067dd711a4/runtime.json +11 -0
  1087. package/.ikie/ferments/019f2769-baad-714f-8207-a7d630f37e84/runtime.json +11 -0
  1088. package/.ikie/ferments/019f2769-bac7-75ae-95cb-dda85f7fd6a8/reviews/phase-phase-1-1.json +63 -0
  1089. package/.ikie/ferments/019f2769-bac7-75ae-95cb-dda85f7fd6a8/runtime.json +17 -0
  1090. package/.ikie/ferments/019f2769-bbf3-745d-87d3-d594593afbf0/reviews/phase-phase-1-1.json +63 -0
  1091. package/.ikie/ferments/019f2769-bbf3-745d-87d3-d594593afbf0/runtime.json +17 -0
  1092. package/.ikie/ferments/019f2769-bd4e-735d-b931-2077f62d385a/runtime.json +11 -0
  1093. package/.ikie/ferments/019f2769-c103-723f-aebe-ab3ae76aedd9/runtime.json +11 -0
  1094. package/.ikie/ferments/019f2769-c11e-771a-b365-96bf54691b95/runtime.json +11 -0
  1095. package/.ikie/ferments/019f2769-c13b-749e-840d-5136528371f3/runtime.json +11 -0
  1096. package/.ikie/ferments/019f2769-c15a-7065-83b5-2064b699a6d9/runtime.json +11 -0
  1097. package/.ikie/ferments/019f2769-c175-77b2-80df-918134508175/pending-proposal.json +45 -0
  1098. package/.ikie/ferments/019f2769-c189-7508-8a46-3ff461bf759f/pending-proposal.json +45 -0
  1099. package/.ikie/ferments/019f2769-c27c-71eb-910f-36daf69588f8/pending-proposal.json +45 -0
  1100. package/.ikie/ferments/019f2769-c2c5-71bd-b6a6-dd0f8365cc7c/pending-proposal.json +45 -0
  1101. package/.ikie/ferments/019f2769-c2d6-7260-bab6-3e46b6e9100c/pending-proposal.json +45 -0
  1102. package/.ikie/ferments/019f2769-e6d9-700b-a486-64cad0909610/runtime.json +11 -0
  1103. package/.ikie/ferments/019f2769-e6f5-7524-955a-dd4d91813ee5/runtime.json +11 -0
  1104. package/.ikie/ferments/019f2769-e713-715e-9450-42b5250709c8/runtime.json +11 -0
  1105. package/.ikie/ferments/019f2769-e738-7537-b5d5-5209200233da/runtime.json +12 -0
  1106. package/.ikie/ferments/019f2769-e769-752f-b806-14f369200356/runtime.json +11 -0
  1107. package/.ikie/ferments/019f2769-e795-77e8-bc69-fa7496923f00/runtime.json +15 -0
  1108. package/.ikie/ferments/019f2769-e7bb-72a8-ba2a-6d90fe6003cc/runtime.json +15 -0
  1109. package/.ikie/ferments/019f2769-e7e1-719b-becd-d456fe580bf8/runtime.json +15 -0
  1110. package/.ikie/ferments/019f2769-e80b-7539-ac23-4ccf01499e01/runtime.json +13 -0
  1111. package/.ikie/ferments/019f2769-e83e-77c7-8415-7b3e76c827b1/runtime.json +15 -0
  1112. package/.ikie/ferments/019f2769-e86c-7008-8cdb-4d2ae411fc57/runtime.json +15 -0
  1113. package/.ikie/ferments/019f2769-e8ac-7480-b1cc-6913e20e012f/runtime.json +11 -0
  1114. package/.ikie/ferments/019f2769-e8ca-76bd-b0be-bee2f2a97d7d/runtime.json +15 -0
  1115. package/.ikie/ferments/019f2769-e904-7759-b2aa-dbb47427c11b/runtime.json +15 -0
  1116. package/.ikie/ferments/019f2769-e92a-7285-bbd7-ed4220ac3f44/runtime.json +15 -0
  1117. package/.ikie/ferments/019f2769-e95e-77eb-9e17-6b2ad4532f0c/runtime.json +15 -0
  1118. package/.ikie/ferments/019f2769-e992-75ea-adf9-53f548b600a0/runtime.json +15 -0
  1119. package/.ikie/ferments/019f2769-e9b9-75bc-ab7a-a4ba5e8f1124/runtime.json +15 -0
  1120. package/.ikie/ferments/019f2769-e9ec-700b-990f-320c347ee271/runtime.json +15 -0
  1121. package/.ikie/ferments/019f2769-ea15-72cb-96af-a45603082ee1/runtime.json +15 -0
  1122. package/.ikie/ferments/019f2769-ea42-735c-b71e-259c75688841/runtime.json +15 -0
  1123. package/.ikie/ferments/019f2769-ea6f-7074-acde-65385abd199a/runtime.json +11 -0
  1124. package/.ikie/ferments/019f2769-ea98-759c-aeda-90b28cab640c/runtime.json +11 -0
  1125. package/.ikie/ferments/019f2769-eac3-70a7-993e-435d9a1dfd91/reviews/phase-phase-1-1.json +63 -0
  1126. package/.ikie/ferments/019f2769-eac3-70a7-993e-435d9a1dfd91/runtime.json +17 -0
  1127. package/.ikie/ferments/019f2769-ec3c-7674-829a-fba66a9bc62e/reviews/phase-phase-1-1.json +63 -0
  1128. package/.ikie/ferments/019f2769-ec3c-7674-829a-fba66a9bc62e/runtime.json +17 -0
  1129. package/.ikie/ferments/019f2769-edcb-748c-be28-51e21c608c6f/runtime.json +11 -0
  1130. package/.ikie/ferments/019f2769-f2df-7759-811f-ef76a54375e8/runtime.json +11 -0
  1131. package/.ikie/ferments/019f2769-f311-7641-88b0-81c54945642f/runtime.json +11 -0
  1132. package/.ikie/ferments/019f2769-f363-723b-80f1-b52334dc6a15/runtime.json +11 -0
  1133. package/.ikie/ferments/019f2769-f38e-72cc-a4ac-81cefc3a95f4/runtime.json +11 -0
  1134. package/.ikie/ferments/019f2769-f3b6-763a-bf65-011ce164f5d4/pending-proposal.json +45 -0
  1135. package/.ikie/ferments/019f2769-f3c7-745e-9da1-37e14b1cfddf/pending-proposal.json +45 -0
  1136. package/.ikie/ferments/019f2769-f4e4-71b1-83f1-b16014904ec3/pending-proposal.json +45 -0
  1137. package/.ikie/ferments/019f2769-f556-761d-b331-acc7cc02317d/pending-proposal.json +45 -0
  1138. package/.ikie/ferments/019f2769-f56d-77af-82f3-b9915ca80a61/pending-proposal.json +45 -0
  1139. package/.ikie/ferments/019f276a-23f9-7653-8be0-dca748ac5e0f/runtime.json +13 -0
  1140. package/.ikie/ferments/019f276a-2428-731f-959b-8d346551f0c4/runtime.json +11 -0
  1141. package/.ikie/ferments/019f276a-2446-7250-be5c-bdb0ac1ef2fa/runtime.json +11 -0
  1142. package/.ikie/ferments/019f276a-2462-764e-a7f4-d9ab3876fbd2/runtime.json +11 -0
  1143. package/.ikie/ferments/019f276a-2482-768b-919e-d81a0709abd5/runtime.json +11 -0
  1144. package/.ikie/ferments/019f276a-2494-77ee-8b28-72b9b0d19d56/runtime.json +11 -0
  1145. package/.ikie/ferments/019f276a-24aa-76fd-8fba-2a1d73960010/runtime.json +11 -0
  1146. package/.ikie/ferments/019f276a-24c3-7799-bd35-0a3374f3e469/runtime.json +11 -0
  1147. package/.ikie/ferments/019f276a-24f1-7498-a372-975f72302a0d/runtime.json +9 -0
  1148. package/.ikie/ferments/019f276a-251e-71ac-ba90-af2a49c22b6b/runtime.json +13 -0
  1149. package/.ikie/ferments/019f276a-2545-746f-bdf3-ca3c11ab9968/runtime.json +11 -0
  1150. package/.ikie/ferments/019f276a-256d-765b-9f94-90047d4ca21e/runtime.json +11 -0
  1151. package/.ikie/ferments/019f276a-25cb-753b-9905-7250e4eea970/runtime.json +11 -0
  1152. package/.ikie/ferments/019f276a-25f8-73a2-aede-f2c017fa80c9/runtime.json +9 -0
  1153. package/.ikie/ferments/019f276a-2613-774b-80c0-3b206ac95435/runtime.json +9 -0
  1154. package/.ikie/ferments/019f276a-264e-73a3-90ad-017ef8ea05b6/runtime.json +11 -0
  1155. package/.ikie/ferments/019f276a-2760-758f-b0a6-cd04a8b0ee76/runtime.json +11 -0
  1156. package/.ikie/ferments/019f276a-277b-73a9-8655-6bf7018262dc/runtime.json +12 -0
  1157. package/.ikie/ferments/019f276a-27a6-709d-a90f-f1784e248fca/runtime.json +11 -0
  1158. package/.ikie/ferments/019f276a-27b7-75bf-b0b5-013581917821/runtime.json +11 -0
  1159. package/.ikie/ferments/019f276a-27ce-759a-93de-474988efc050/runtime.json +11 -0
  1160. package/.ikie/ferments/019f276a-27e9-7564-999a-73beef96d35c/runtime.json +11 -0
  1161. package/.ikie/ferments/019f276a-27fc-714b-9ddb-117b439b664e/runtime.json +13 -0
  1162. package/.ikie/ferments/019f276a-2824-762e-8def-3c17aa4041f9/runtime.json +11 -0
  1163. package/.ikie/ferments/019f276a-38fe-725b-9c16-f1b5174302d0/reviews/phase-phase-1-1.json +41 -0
  1164. package/.ikie/ferments/019f276a-38fe-725b-9c16-f1b5174302d0/runtime.json +11 -0
  1165. package/.ikie/ferments/019f276a-393c-75e2-b29f-092b82105a74/reviews/phase-phase-1-1.json +47 -0
  1166. package/.ikie/ferments/019f276a-393c-75e2-b29f-092b82105a74/runtime.json +13 -0
  1167. package/.ikie/ferments/019f276a-3990-75f9-9b6f-ab6d45bf8e32/reviews/phase-phase-1-1.json +40 -0
  1168. package/.ikie/ferments/019f276a-3990-75f9-9b6f-ab6d45bf8e32/runtime.json +9 -0
  1169. package/.ikie/ferments/019f276a-39ab-76bb-be69-8658a1b6a76f/reviews/phase-phase-1-1.json +40 -0
  1170. package/.ikie/ferments/019f276a-39ab-76bb-be69-8658a1b6a76f/runtime.json +9 -0
  1171. package/.ikie/ferments/019f276a-39c9-76ac-95a8-2d5575d26573/reviews/phase-phase-1-1.json +40 -0
  1172. package/.ikie/ferments/019f276a-39c9-76ac-95a8-2d5575d26573/runtime.json +9 -0
  1173. package/.ikie/ferments/019f276a-39f6-76cc-9011-3f6b08068155/reviews/phase-phase-1-1.json +40 -0
  1174. package/.ikie/ferments/019f276a-39f6-76cc-9011-3f6b08068155/runtime.json +9 -0
  1175. package/.ikie/ferments/019f276a-3a0c-76a9-80b2-2bb7952fe9d7/reviews/phase-phase-1-1.json +40 -0
  1176. package/.ikie/ferments/019f276a-3a0c-76a9-80b2-2bb7952fe9d7/runtime.json +9 -0
  1177. package/.ikie/ferments/019f276a-3a22-7140-8a4d-0d17ada653b3/reviews/phase-phase-1-1.json +62 -0
  1178. package/.ikie/ferments/019f276a-3a22-7140-8a4d-0d17ada653b3/runtime.json +9 -0
  1179. package/.ikie/ferments/019f276c-2f88-74ae-8bc2-5cec42d56757/runtime.json +11 -0
  1180. package/.ikie/ferments/019f276c-2fb8-7599-b61c-e73c85399ee0/runtime.json +11 -0
  1181. package/.ikie/ferments/019f276c-2fd9-75db-8e13-8e9137cecedd/runtime.json +11 -0
  1182. package/.ikie/ferments/019f276c-302f-760f-97e7-2f10f283dfe1/runtime.json +12 -0
  1183. package/.ikie/ferments/019f276c-3060-77ca-a0e3-d49781feca6d/runtime.json +11 -0
  1184. package/.ikie/ferments/019f276c-3091-744e-9394-a59b9f37db9e/runtime.json +11 -0
  1185. package/.ikie/ferments/019f276c-30da-76ba-bd76-a72e053f218d/runtime.json +15 -0
  1186. package/.ikie/ferments/019f276c-3110-7277-ab9a-820992db76da/runtime.json +15 -0
  1187. package/.ikie/ferments/019f276c-314a-740f-b533-a31c4e9ebd52/runtime.json +15 -0
  1188. package/.ikie/ferments/019f276c-3189-732c-a4ec-09e4f1e3a8da/runtime.json +13 -0
  1189. package/.ikie/ferments/019f276c-31ce-75c8-a4e9-507d408920b6/runtime.json +15 -0
  1190. package/.ikie/ferments/019f276c-320e-710b-b32a-4577244dcc6a/runtime.json +15 -0
  1191. package/.ikie/ferments/019f276c-3262-7611-af21-ad12693acdd5/runtime.json +11 -0
  1192. package/.ikie/ferments/019f276c-3288-7559-b7c3-299dd548decb/runtime.json +15 -0
  1193. package/.ikie/ferments/019f276c-32c4-70a0-899d-ad17469a015c/runtime.json +15 -0
  1194. package/.ikie/ferments/019f276c-32f0-7036-86ae-19c9f703cd9a/runtime.json +15 -0
  1195. package/.ikie/ferments/019f276c-3324-7021-8f89-d46fbfa45e00/runtime.json +15 -0
  1196. package/.ikie/ferments/019f276c-334b-71df-b20d-d9a7bcccdc0a/runtime.json +15 -0
  1197. package/.ikie/ferments/019f276c-3379-7593-957a-ee9631368280/runtime.json +15 -0
  1198. package/.ikie/ferments/019f276c-33a9-705d-a590-eff1c46bcd67/runtime.json +15 -0
  1199. package/.ikie/ferments/019f276c-33d5-7784-b35a-01d3c06b16c0/runtime.json +15 -0
  1200. package/.ikie/ferments/019f276c-341c-76ce-b950-7a7e7472eeb8/runtime.json +15 -0
  1201. package/.ikie/ferments/019f276c-3462-744d-b42a-9756a33b7223/runtime.json +11 -0
  1202. package/.ikie/ferments/019f276c-348e-706a-9791-5213dfd00593/runtime.json +11 -0
  1203. package/.ikie/ferments/019f276c-34b6-70f9-b678-d3a7d876758c/reviews/phase-phase-1-1.json +63 -0
  1204. package/.ikie/ferments/019f276c-34b6-70f9-b678-d3a7d876758c/runtime.json +17 -0
  1205. package/.ikie/ferments/019f276c-3640-75da-915e-b0dba80bfcda/reviews/phase-phase-1-1.json +63 -0
  1206. package/.ikie/ferments/019f276c-3640-75da-915e-b0dba80bfcda/runtime.json +17 -0
  1207. package/.ikie/ferments/019f276c-37df-76f9-b7a8-1285ee0ac11d/runtime.json +11 -0
  1208. package/.ikie/ferments/019f276c-3caa-748a-a0aa-9e068f18f2ac/runtime.json +11 -0
  1209. package/.ikie/ferments/019f276c-3cc8-7347-9764-dd4ab7f87646/runtime.json +11 -0
  1210. package/.ikie/ferments/019f276c-3cef-75dd-be90-593fd20a850d/runtime.json +11 -0
  1211. package/.ikie/ferments/019f276c-3d14-72af-ae89-6c0605227a05/runtime.json +11 -0
  1212. package/.ikie/ferments/019f276c-3d36-716c-ac4e-59444fdec814/pending-proposal.json +45 -0
  1213. package/.ikie/ferments/019f276c-3d4c-7208-9130-7f168aeba08e/pending-proposal.json +45 -0
  1214. package/.ikie/ferments/019f276c-3e7f-7552-a37f-61442d720fb9/pending-proposal.json +45 -0
  1215. package/.ikie/ferments/019f276c-3ed9-74f2-9332-d5a492d39130/pending-proposal.json +45 -0
  1216. package/.ikie/ferments/019f276c-3ef4-757e-b0c6-9d7c6f0326e7/pending-proposal.json +45 -0
  1217. package/.ikie/ferments/019f276c-651d-70ac-bfb4-5d033388e28c/runtime.json +13 -0
  1218. package/.ikie/ferments/019f276c-6546-7569-b609-74b2258985a8/runtime.json +11 -0
  1219. package/.ikie/ferments/019f276c-6566-71e2-b937-390aea78900a/runtime.json +11 -0
  1220. package/.ikie/ferments/019f276c-657c-75ee-864b-5b5601e3b9d1/runtime.json +11 -0
  1221. package/.ikie/ferments/019f276c-6590-7729-a6e7-466ace311e0d/runtime.json +11 -0
  1222. package/.ikie/ferments/019f276c-65a5-779f-a3da-36bc91cf31f3/runtime.json +11 -0
  1223. package/.ikie/ferments/019f276c-65b9-77f0-97fc-fcf70d7125b8/runtime.json +11 -0
  1224. package/.ikie/ferments/019f276c-65cd-74ef-9094-db3c5a98348b/runtime.json +11 -0
  1225. package/.ikie/ferments/019f276c-65e3-7632-9df9-58cfa083a065/runtime.json +9 -0
  1226. package/.ikie/ferments/019f276c-65fb-763a-aec7-54ece64d7342/runtime.json +13 -0
  1227. package/.ikie/ferments/019f276c-661a-74e9-81b1-d1ba625c04b0/runtime.json +11 -0
  1228. package/.ikie/ferments/019f276c-6630-7748-ab90-869f75ed2de5/runtime.json +11 -0
  1229. package/.ikie/ferments/019f276c-6670-758f-b0da-673d81bd319e/runtime.json +11 -0
  1230. package/.ikie/ferments/019f276c-6687-71fa-8286-2d25de36c9b4/runtime.json +9 -0
  1231. package/.ikie/ferments/019f276c-669d-7679-91d5-4df6315d3823/runtime.json +9 -0
  1232. package/.ikie/ferments/019f276c-66b3-72a6-974d-1bc3477eb6f2/runtime.json +11 -0
  1233. package/.ikie/ferments/019f276c-6769-776c-9868-0c929ee31f5f/runtime.json +11 -0
  1234. package/.ikie/ferments/019f276c-678e-7588-a059-c1efd9e9c9a6/runtime.json +12 -0
  1235. package/.ikie/ferments/019f276c-67af-729c-a5f8-79e8e78bbe9b/runtime.json +11 -0
  1236. package/.ikie/ferments/019f276c-67c3-70b8-8606-aad72ab0cd6f/runtime.json +11 -0
  1237. package/.ikie/ferments/019f276c-67d7-734c-83fd-132c54564004/runtime.json +11 -0
  1238. package/.ikie/ferments/019f276c-67ec-710d-8497-eba65301d741/runtime.json +11 -0
  1239. package/.ikie/ferments/019f276c-6805-742c-8a1c-f370733226ae/runtime.json +13 -0
  1240. package/.ikie/ferments/019f276c-6825-7768-8ca1-f5dac5c1d374/runtime.json +11 -0
  1241. package/.ikie/ferments/019f276c-7f49-751d-bbb8-f828debd3cb9/reviews/phase-phase-1-1.json +41 -0
  1242. package/.ikie/ferments/019f276c-7f49-751d-bbb8-f828debd3cb9/runtime.json +11 -0
  1243. package/.ikie/ferments/019f276c-7f7b-74d0-b46e-e8efa73fb5b5/reviews/phase-phase-1-1.json +47 -0
  1244. package/.ikie/ferments/019f276c-7f7b-74d0-b46e-e8efa73fb5b5/runtime.json +13 -0
  1245. package/.ikie/ferments/019f276c-8004-74fe-b37f-f9fc659f7f0c/reviews/phase-phase-1-1.json +40 -0
  1246. package/.ikie/ferments/019f276c-8004-74fe-b37f-f9fc659f7f0c/runtime.json +9 -0
  1247. package/.ikie/ferments/019f276c-8025-7328-afef-6703215c208c/reviews/phase-phase-1-1.json +40 -0
  1248. package/.ikie/ferments/019f276c-8025-7328-afef-6703215c208c/runtime.json +9 -0
  1249. package/.ikie/ferments/019f276c-8043-749c-8cbb-47d0df9819df/reviews/phase-phase-1-1.json +40 -0
  1250. package/.ikie/ferments/019f276c-8043-749c-8cbb-47d0df9819df/runtime.json +9 -0
  1251. package/.ikie/ferments/019f276c-8062-7436-99eb-80e09bc6b067/reviews/phase-phase-1-1.json +40 -0
  1252. package/.ikie/ferments/019f276c-8062-7436-99eb-80e09bc6b067/runtime.json +9 -0
  1253. package/.ikie/ferments/019f276c-8081-727c-aa11-d606a64b88ed/reviews/phase-phase-1-1.json +40 -0
  1254. package/.ikie/ferments/019f276c-8081-727c-aa11-d606a64b88ed/runtime.json +9 -0
  1255. package/.ikie/ferments/019f276c-80b6-7528-8687-e11cc4691930/reviews/phase-phase-1-1.json +62 -0
  1256. package/.ikie/ferments/019f276c-80b6-7528-8687-e11cc4691930/runtime.json +9 -0
  1257. package/AGENTS.md +120 -0
  1258. package/CLA.md +39 -0
  1259. package/CODE_OF_CONDUCT.md +83 -0
  1260. package/CONTRIBUTING.md +57 -0
  1261. package/LICENSE +203 -0
  1262. package/NOTICE +28 -0
  1263. package/README.md +568 -0
  1264. package/SECURITY.md +36 -0
  1265. package/TODO.md +33 -0
  1266. package/benchmark/audit-session/README.md +217 -0
  1267. package/benchmark/audit-session/audit-session-prompt.md +557 -0
  1268. package/benchmark/audit-session/audit-session.sh +323 -0
  1269. package/benchmark/manual/README.md +166 -0
  1270. package/benchmark/manual/__pycache__/check-session.cpython-313.pyc +0 -0
  1271. package/benchmark/manual/analyze-session.py +290 -0
  1272. package/benchmark/manual/benchmark.json +4 -0
  1273. package/benchmark/manual/check-session.py +268 -0
  1274. package/benchmark/manual/compare-sessions.py +118 -0
  1275. package/benchmark/manual/lib.sh +284 -0
  1276. package/benchmark/manual/new-session-claude.sh +86 -0
  1277. package/benchmark/manual/new-session.sh +191 -0
  1278. package/benchmark/manual/run-evaluation.sh +201 -0
  1279. package/benchmark/manual/seeds/explore-refactor/cmd/server/main.go +37 -0
  1280. package/benchmark/manual/seeds/explore-refactor/go.mod +3 -0
  1281. package/benchmark/manual/seeds/explore-refactor/internal/handler/audit.go +39 -0
  1282. package/benchmark/manual/seeds/explore-refactor/internal/handler/invitation.go +56 -0
  1283. package/benchmark/manual/seeds/explore-refactor/internal/handler/team.go +86 -0
  1284. package/benchmark/manual/seeds/explore-refactor/internal/handler/user.go +126 -0
  1285. package/benchmark/manual/seeds/explore-refactor/internal/model/model.go +37 -0
  1286. package/benchmark/manual/seeds/explore-refactor/internal/repository/audit.go +57 -0
  1287. package/benchmark/manual/seeds/explore-refactor/internal/repository/invitation.go +58 -0
  1288. package/benchmark/manual/seeds/explore-refactor/internal/repository/team.go +66 -0
  1289. package/benchmark/manual/seeds/explore-refactor/internal/repository/user.go +91 -0
  1290. package/benchmark/manual/seeds/explore-refactor/internal/service/invitation.go +45 -0
  1291. package/benchmark/manual/seeds/explore-refactor/internal/service/team.go +62 -0
  1292. package/benchmark/manual/seeds/explore-refactor/internal/service/user.go +94 -0
  1293. package/benchmark/manual/self-improvement.md +203 -0
  1294. package/benchmark/manual/session-summary.py +95 -0
  1295. package/benchmark/manual/start-self-improvement.sh +27 -0
  1296. package/benchmark/manual/tasks.md +154 -0
  1297. package/benchmark/terminal-bench-2/README.md +261 -0
  1298. package/benchmark/terminal-bench-2/config/retry.yaml +48 -0
  1299. package/benchmark/terminal-bench-2/docs/ferment-terminal-bench-analysis.md +233 -0
  1300. package/benchmark/terminal-bench-2/pyproject.toml +32 -0
  1301. package/benchmark/terminal-bench-2/scripts/analyze-ferment-bench.py +1193 -0
  1302. package/benchmark/terminal-bench-2/scripts/run-claude-code-ikie.sh +41 -0
  1303. package/benchmark/terminal-bench-2/scripts/run-gsd-ikie.sh +29 -0
  1304. package/benchmark/terminal-bench-2/scripts/run-local.sh +32 -0
  1305. package/benchmark/terminal-bench-2/scripts/run-opencode-ikie.sh +30 -0
  1306. package/benchmark/terminal-bench-2/scripts/run-release.sh +28 -0
  1307. package/benchmark/terminal-bench-2/src/ikie_agent/__init__.py +6 -0
  1308. package/benchmark/terminal-bench-2/src/ikie_agent/agent.py +445 -0
  1309. package/benchmark/terminal-bench-2/src/ikie_agent/agent_test.py +233 -0
  1310. package/benchmark/terminal-bench-2/src/ikie_agent/claude_code_ikie.py +356 -0
  1311. package/benchmark/terminal-bench-2/src/ikie_agent/claude_code_ikie_test.py +506 -0
  1312. package/benchmark/terminal-bench-2/src/ikie_agent/config.py +56 -0
  1313. package/benchmark/terminal-bench-2/src/ikie_agent/gateway.py +163 -0
  1314. package/benchmark/terminal-bench-2/src/ikie_agent/gsd_ikie.py +340 -0
  1315. package/benchmark/terminal-bench-2/src/ikie_agent/gsd_ikie_test.py +304 -0
  1316. package/benchmark/terminal-bench-2/src/ikie_agent/messages.py +27 -0
  1317. package/benchmark/terminal-bench-2/src/ikie_agent/opencode_ikie.py +146 -0
  1318. package/benchmark/terminal-bench-2/src/ikie_agent/opencode_ikie_test.py +308 -0
  1319. package/benchmark/terminal-bench-2/src/ikie_agent/release.py +174 -0
  1320. package/benchmark/terminal-bench-2/src/ikie_agent/retry_config_test.py +55 -0
  1321. package/benchmark/terminal-bench-2/uv.lock +1948 -0
  1322. package/biome.json +54 -0
  1323. package/docs/agents.md +295 -0
  1324. package/docs/bash-tool-guard.md +206 -0
  1325. package/docs/expected-execution-scenarios.md +348 -0
  1326. package/docs/ferment-storage-schema.md +199 -0
  1327. package/docs/ferment.md +633 -0
  1328. package/docs/hooks.md +263 -0
  1329. package/docs/subagents/README.md +22 -0
  1330. package/docs/subagents/code-reviewer.md +39 -0
  1331. package/docs/subagents/research-assistant.md +81 -0
  1332. package/docs/subagents/test-writer.md +49 -0
  1333. package/docs/teleport.md +424 -0
  1334. package/docs/windows/README.md +226 -0
  1335. package/extensions/active-tools.ts +74 -0
  1336. package/ikie.png +0 -0
  1337. package/package.json +125 -0
  1338. package/patches/@earendil-works__pi-ai@0.78.1.patch +68 -0
  1339. package/patches/@earendil-works__pi-coding-agent@0.78.1.patch +535 -0
  1340. package/patches/@earendil-works__pi-tui.patch +171 -0
  1341. package/patches/playwright-core@1.59.1.patch +24 -0
  1342. package/resources/oauth/error.html +185 -0
  1343. package/resources/oauth/success.html +185 -0
  1344. package/scripts/build-binary.js +113 -0
  1345. package/scripts/build-proxy-helper.js +66 -0
  1346. package/scripts/copy-resources.js +104 -0
  1347. package/scripts/dev-overlay.sh +52 -0
  1348. package/scripts/dev-startup.sh +82 -0
  1349. package/scripts/install-local.js +34 -0
  1350. package/scripts/install.ps1 +258 -0
  1351. package/scripts/install.sh +160 -0
  1352. package/scripts/package-release-asset.js +82 -0
  1353. package/scripts/patch-pi-ai-oauth.js +109 -0
  1354. package/scripts/run-tui-e2e.js +153 -0
  1355. package/scripts/set-version.js +31 -0
  1356. package/scripts/verify-acp-load.mjs +358 -0
  1357. package/scripts/verify-acp.mjs +217 -0
  1358. package/src/__mocks__/earendil-clipboard-image.js +6 -0
  1359. package/src/agent-discovery/agents/claude-code.test.ts +156 -0
  1360. package/src/agent-discovery/agents/claude-code.ts +85 -0
  1361. package/src/agent-discovery/agents/cursor.test.ts +178 -0
  1362. package/src/agent-discovery/agents/cursor.ts +74 -0
  1363. package/src/agent-discovery/agents/opencode.test.ts +461 -0
  1364. package/src/agent-discovery/agents/opencode.ts +156 -0
  1365. package/src/agent-discovery/agents/skills-only.test.ts +77 -0
  1366. package/src/agent-discovery/agents/skills-only.ts +47 -0
  1367. package/src/agent-discovery/engine.test.ts +408 -0
  1368. package/src/agent-discovery/engine.ts +117 -0
  1369. package/src/agent-discovery/index.ts +75 -0
  1370. package/src/agent-discovery/jsonc.ts +52 -0
  1371. package/src/ansi.ts +51 -0
  1372. package/src/api/me.test.ts +86 -0
  1373. package/src/api/me.ts +59 -0
  1374. package/src/auth/validator.test.ts +106 -0
  1375. package/src/auth/validator.ts +103 -0
  1376. package/src/auxiliary-files/resolver.test.ts +85 -0
  1377. package/src/auxiliary-files/resolver.ts +27 -0
  1378. package/src/auxiliary-files/validator.test.ts +68 -0
  1379. package/src/auxiliary-files/validator.ts +31 -0
  1380. package/src/cli-args.test.ts +232 -0
  1381. package/src/cli-args.ts +94 -0
  1382. package/src/cli-auth/callback-server.test.ts +169 -0
  1383. package/src/cli-auth/callback-server.ts +165 -0
  1384. package/src/cli-auth/index.test.ts +103 -0
  1385. package/src/cli-auth/index.ts +117 -0
  1386. package/src/cli-auth/oauth-page.ts +94 -0
  1387. package/src/cli.ts +564 -0
  1388. package/src/commands/_helpers.ts +87 -0
  1389. package/src/commands/banner.test.ts +39 -0
  1390. package/src/commands/banner.ts +74 -0
  1391. package/src/commands/claude.ts +28 -0
  1392. package/src/commands/config.test.ts +149 -0
  1393. package/src/commands/config.ts +98 -0
  1394. package/src/commands/cursor.ts +23 -0
  1395. package/src/commands/dispatch.test.ts +102 -0
  1396. package/src/commands/dispatch.ts +40 -0
  1397. package/src/commands/gsd2.ts +23 -0
  1398. package/src/commands/help.ts +104 -0
  1399. package/src/commands/login.ts +46 -0
  1400. package/src/commands/openclaw.ts +23 -0
  1401. package/src/commands/opencode.ts +31 -0
  1402. package/src/commands/registry.ts +44 -0
  1403. package/src/commands/resources.ts +77 -0
  1404. package/src/commands/setup-tools.test.ts +231 -0
  1405. package/src/commands/setup-tools.ts +164 -0
  1406. package/src/commands/setup.ts +28 -0
  1407. package/src/commands/update.test.ts +312 -0
  1408. package/src/commands/update.ts +291 -0
  1409. package/src/commands/version.ts +9 -0
  1410. package/src/components/editor.test.ts +182 -0
  1411. package/src/components/editor.ts +186 -0
  1412. package/src/components/footer.test.ts +790 -0
  1413. package/src/components/footer.ts +640 -0
  1414. package/src/components/logo-art.test.ts +30 -0
  1415. package/src/components/logo-art.ts +66 -0
  1416. package/src/components/logo.test.ts +316 -0
  1417. package/src/components/logo.ts +127 -0
  1418. package/src/components/tool-block.test.ts +75 -0
  1419. package/src/components/tool-block.ts +166 -0
  1420. package/src/config/footer-config.test.ts +191 -0
  1421. package/src/config/footer-config.ts +130 -0
  1422. package/src/config/json.test.ts +78 -0
  1423. package/src/config/json.ts +112 -0
  1424. package/src/config/scope.test.ts +49 -0
  1425. package/src/config/scope.ts +38 -0
  1426. package/src/config/shell-profile.test.ts +130 -0
  1427. package/src/config/shell-profile.ts +131 -0
  1428. package/src/config.test.ts +723 -0
  1429. package/src/config.ts +697 -0
  1430. package/src/entry.ts +62 -0
  1431. package/src/env.ts +4 -0
  1432. package/src/expand-state.ts +41 -0
  1433. package/src/extensions/activity.test.ts +160 -0
  1434. package/src/extensions/activity.ts +192 -0
  1435. package/src/extensions/agent-worker-context.test.ts +31 -0
  1436. package/src/extensions/agent-worker-context.ts +11 -0
  1437. package/src/extensions/agents/default-agents.test.ts +24 -0
  1438. package/src/extensions/agents/discovery-priority.test.ts +65 -0
  1439. package/src/extensions/agents/env.ts +33 -0
  1440. package/src/extensions/agents/index.test.ts +32 -0
  1441. package/src/extensions/agents/index.ts +2226 -0
  1442. package/src/extensions/agents/manager/agent-manager.test.ts +896 -0
  1443. package/src/extensions/agents/manager/agent-manager.ts +714 -0
  1444. package/src/extensions/agents/manager/agent-runner.test.ts +1846 -0
  1445. package/src/extensions/agents/manager/agent-runner.ts +964 -0
  1446. package/src/extensions/agents/manager/budget-retry-guard.test.ts +95 -0
  1447. package/src/extensions/agents/manager/budget-retry-guard.ts +57 -0
  1448. package/src/extensions/agents/manager/constants.ts +1 -0
  1449. package/src/extensions/agents/manager/group-join.ts +136 -0
  1450. package/src/extensions/agents/manager/output-file.test.ts +31 -0
  1451. package/src/extensions/agents/manager/output-file.ts +92 -0
  1452. package/src/extensions/agents/manager/session-file.test.ts +59 -0
  1453. package/src/extensions/agents/manager/session-file.ts +37 -0
  1454. package/src/extensions/agents/manager/usage.ts +52 -0
  1455. package/src/extensions/agents/memory/memory.test.ts +54 -0
  1456. package/src/extensions/agents/memory/memory.ts +166 -0
  1457. package/src/extensions/agents/memory.test.ts +54 -0
  1458. package/src/extensions/agents/package-resources.test.ts +147 -0
  1459. package/src/extensions/agents/package-resources.ts +37 -0
  1460. package/src/extensions/agents/personas/__snapshots__/default-agents.test.ts.snap +75 -0
  1461. package/src/extensions/agents/personas/agent-types.test.ts +33 -0
  1462. package/src/extensions/agents/personas/agent-types.ts +150 -0
  1463. package/src/extensions/agents/personas/custom-agents.test.ts +171 -0
  1464. package/src/extensions/agents/personas/custom-agents.ts +147 -0
  1465. package/src/extensions/agents/personas/default-agents.test.ts +101 -0
  1466. package/src/extensions/agents/personas/default-agents.ts +335 -0
  1467. package/src/extensions/agents/personas/discovery-priority.test.ts +65 -0
  1468. package/src/extensions/agents/personas/types.ts +229 -0
  1469. package/src/extensions/agents/prompt/context.ts +54 -0
  1470. package/src/extensions/agents/prompt/prompts.test.ts +314 -0
  1471. package/src/extensions/agents/prompt/prompts.ts +164 -0
  1472. package/src/extensions/agents/prompt/skill-loader.test.ts +41 -0
  1473. package/src/extensions/agents/prompt/skill-loader.ts +80 -0
  1474. package/src/extensions/agents/resolution/invocation-config.test.ts +81 -0
  1475. package/src/extensions/agents/resolution/invocation-config.ts +68 -0
  1476. package/src/extensions/agents/resolution/model-resolver.ts +85 -0
  1477. package/src/extensions/agents/resume-tool.test.ts +146 -0
  1478. package/src/extensions/agents/resume-tool.ts +90 -0
  1479. package/src/extensions/agents/settings.ts +163 -0
  1480. package/src/extensions/agents/skill-loader.test.ts +41 -0
  1481. package/src/extensions/agents/tool-result.ts +4 -0
  1482. package/src/extensions/agents/ui/agent-widget.ts +458 -0
  1483. package/src/extensions/agents/ui/conversation-viewer.ts +261 -0
  1484. package/src/extensions/agents/worker-budget-policy.ts +48 -0
  1485. package/src/extensions/agents/worker-report.test.ts +69 -0
  1486. package/src/extensions/agents/worker-report.ts +72 -0
  1487. package/src/extensions/assistant-prefix.ts +80 -0
  1488. package/src/extensions/bash-collapse.test.ts +21 -0
  1489. package/src/extensions/bash-collapse.ts +3 -0
  1490. package/src/extensions/bash-default-timeout.test.ts +189 -0
  1491. package/src/extensions/bash-default-timeout.ts +73 -0
  1492. package/src/extensions/bash-tool-guard-events.ts +39 -0
  1493. package/src/extensions/bash-tool-guard.integration.test.ts +771 -0
  1494. package/src/extensions/bash-tool-guard.test.ts +890 -0
  1495. package/src/extensions/bash-tool-guard.ts +640 -0
  1496. package/src/extensions/behaviours/bash-tokenize.test.ts +125 -0
  1497. package/src/extensions/behaviours/bash-tokenize.ts +272 -0
  1498. package/src/extensions/behaviours/bodies/bound-tool-output.md +11 -0
  1499. package/src/extensions/behaviours/bodies/gh-cli.md +80 -0
  1500. package/src/extensions/behaviours/bodies/git-hygiene.md +13 -0
  1501. package/src/extensions/behaviours/bodies/glab-cli.md +95 -0
  1502. package/src/extensions/behaviours/bodies/python-edit.md +10 -0
  1503. package/src/extensions/behaviours/bodies/re-read-before-edit.md +10 -0
  1504. package/src/extensions/behaviours/bodies.d.ts +7 -0
  1505. package/src/extensions/behaviours/build.test.ts +89 -0
  1506. package/src/extensions/behaviours/build.ts +63 -0
  1507. package/src/extensions/behaviours/engine.test.ts +300 -0
  1508. package/src/extensions/behaviours/engine.ts +131 -0
  1509. package/src/extensions/behaviours/eval-engine.test.ts +165 -0
  1510. package/src/extensions/behaviours/eval-engine.ts +104 -0
  1511. package/src/extensions/behaviours/frontmatter.ts +22 -0
  1512. package/src/extensions/behaviours/index.ts +35 -0
  1513. package/src/extensions/behaviours/matchers.test.ts +153 -0
  1514. package/src/extensions/behaviours/matchers.ts +69 -0
  1515. package/src/extensions/behaviours/registry.ts +73 -0
  1516. package/src/extensions/behaviours/session-context.test.ts +192 -0
  1517. package/src/extensions/behaviours/session-context.ts +170 -0
  1518. package/src/extensions/behaviours/stats.ts +47 -0
  1519. package/src/extensions/behaviours/tool-args.smoke.test.ts +34 -0
  1520. package/src/extensions/behaviours/tool-args.ts +65 -0
  1521. package/src/extensions/behaviours/triggers.ts +164 -0
  1522. package/src/extensions/behaviours/types.ts +49 -0
  1523. package/src/extensions/behaviours/wiring.smoke.test.ts +488 -0
  1524. package/src/extensions/behaviours/wiring.ts +196 -0
  1525. package/src/extensions/branch-command.test.ts +208 -0
  1526. package/src/extensions/branch-command.ts +89 -0
  1527. package/src/extensions/claude-code-hook-adapter/definition.test.ts +51 -0
  1528. package/src/extensions/claude-code-hook-adapter/definition.ts +36 -0
  1529. package/src/extensions/claude-code-hook-adapter/index.ts +6 -0
  1530. package/src/extensions/claude-code-skills/definition.test.ts +228 -0
  1531. package/src/extensions/claude-code-skills/definition.ts +475 -0
  1532. package/src/extensions/claude-code-skills/index.test.ts +227 -0
  1533. package/src/extensions/claude-code-skills/index.ts +101 -0
  1534. package/src/extensions/clipboard-image.test.ts +383 -0
  1535. package/src/extensions/clipboard-image.ts +266 -0
  1536. package/src/extensions/compaction-thresholds.test.ts +8 -0
  1537. package/src/extensions/compaction-thresholds.ts +13 -0
  1538. package/src/extensions/curator/index.test.ts +33 -0
  1539. package/src/extensions/curator/index.ts +296 -0
  1540. package/src/extensions/curator/review.test.ts +82 -0
  1541. package/src/extensions/curator/review.ts +438 -0
  1542. package/src/extensions/curator/state.test.ts +79 -0
  1543. package/src/extensions/curator/state.ts +61 -0
  1544. package/src/extensions/curator/transitions.test.ts +96 -0
  1545. package/src/extensions/curator/transitions.ts +56 -0
  1546. package/src/extensions/customize-footer-command.test.ts +258 -0
  1547. package/src/extensions/customize-footer-command.ts +158 -0
  1548. package/src/extensions/deferred-action.ts +38 -0
  1549. package/src/extensions/disabled/tool-result-pruning.test.ts +397 -0
  1550. package/src/extensions/disabled/tool-result-pruning.ts +181 -0
  1551. package/src/extensions/exit-utils.ts +8 -0
  1552. package/src/extensions/exploration-guard.test.ts +646 -0
  1553. package/src/extensions/exploration-guard.ts +293 -0
  1554. package/src/extensions/ferment/action-tool-names.ts +25 -0
  1555. package/src/extensions/ferment/agent-spawn-guard.test.ts +339 -0
  1556. package/src/extensions/ferment/agent-spawn-guard.ts +188 -0
  1557. package/src/extensions/ferment/ask-user.test.ts +838 -0
  1558. package/src/extensions/ferment/ask-user.ts +569 -0
  1559. package/src/extensions/ferment/auto-compaction.test.ts +933 -0
  1560. package/src/extensions/ferment/auto-compaction.ts +525 -0
  1561. package/src/extensions/ferment/breadcrumb-renderer.ts +46 -0
  1562. package/src/extensions/ferment/colors.ts +95 -0
  1563. package/src/extensions/ferment/command-parser.test.ts +82 -0
  1564. package/src/extensions/ferment/command-parser.ts +52 -0
  1565. package/src/extensions/ferment/commands.test.ts +1659 -0
  1566. package/src/extensions/ferment/commands.ts +1025 -0
  1567. package/src/extensions/ferment/constants.ts +37 -0
  1568. package/src/extensions/ferment/contextual-options.test.ts +70 -0
  1569. package/src/extensions/ferment/contextual-options.ts +107 -0
  1570. package/src/extensions/ferment/continuation.test.ts +141 -0
  1571. package/src/extensions/ferment/continuation.ts +59 -0
  1572. package/src/extensions/ferment/derive-state.test.ts +222 -0
  1573. package/src/extensions/ferment/derive-state.ts +158 -0
  1574. package/src/extensions/ferment/domain-events-emitter.ts +255 -0
  1575. package/src/extensions/ferment/domain-events.ts +146 -0
  1576. package/src/extensions/ferment/events.test.ts +616 -0
  1577. package/src/extensions/ferment/events.ts +561 -0
  1578. package/src/extensions/ferment/footer-status.test.ts +62 -0
  1579. package/src/extensions/ferment/footer-status.ts +61 -0
  1580. package/src/extensions/ferment/format.test.ts +55 -0
  1581. package/src/extensions/ferment/format.ts +111 -0
  1582. package/src/extensions/ferment/fsm-adapter.test.ts +43 -0
  1583. package/src/extensions/ferment/fsm-adapter.ts +112 -0
  1584. package/src/extensions/ferment/gate-registry.test.ts +176 -0
  1585. package/src/extensions/ferment/gate-registry.ts +352 -0
  1586. package/src/extensions/ferment/gate-validation.test.ts +319 -0
  1587. package/src/extensions/ferment/gate-validation.ts +160 -0
  1588. package/src/extensions/ferment/git-init.test.ts +146 -0
  1589. package/src/extensions/ferment/git-init.ts +66 -0
  1590. package/src/extensions/ferment/index.test.ts +1439 -0
  1591. package/src/extensions/ferment/index.ts +337 -0
  1592. package/src/extensions/ferment/judge.test.ts +172 -0
  1593. package/src/extensions/ferment/judge.ts +342 -0
  1594. package/src/extensions/ferment/nudge.test.ts +700 -0
  1595. package/src/extensions/ferment/nudge.ts +332 -0
  1596. package/src/extensions/ferment/oneshot.test.ts +115 -0
  1597. package/src/extensions/ferment/oneshot.ts +52 -0
  1598. package/src/extensions/ferment/pending-proposal-store.test.ts +272 -0
  1599. package/src/extensions/ferment/pending-proposal-store.ts +142 -0
  1600. package/src/extensions/ferment/phase-editor.test.ts +174 -0
  1601. package/src/extensions/ferment/phase-editor.ts +148 -0
  1602. package/src/extensions/ferment/phase-evidence.test.ts +154 -0
  1603. package/src/extensions/ferment/phase-evidence.ts +179 -0
  1604. package/src/extensions/ferment/plan-review-trigger.ts +34 -0
  1605. package/src/extensions/ferment/plan-review.test.ts +182 -0
  1606. package/src/extensions/ferment/plan-review.ts +205 -0
  1607. package/src/extensions/ferment/progress-overlay.test.ts +197 -0
  1608. package/src/extensions/ferment/progress-overlay.ts +326 -0
  1609. package/src/extensions/ferment/project-tests.test.ts +160 -0
  1610. package/src/extensions/ferment/project-tests.ts +246 -0
  1611. package/src/extensions/ferment/prompt-block.test.ts +501 -0
  1612. package/src/extensions/ferment/prompt-block.ts +203 -0
  1613. package/src/extensions/ferment/prompt-ui.test.ts +311 -0
  1614. package/src/extensions/ferment/prompt-ui.ts +302 -0
  1615. package/src/extensions/ferment/resume.test.ts +218 -0
  1616. package/src/extensions/ferment/resume.ts +180 -0
  1617. package/src/extensions/ferment/review-evidence.ts +269 -0
  1618. package/src/extensions/ferment/runtime-state-store.test.ts +148 -0
  1619. package/src/extensions/ferment/runtime-state-store.ts +132 -0
  1620. package/src/extensions/ferment/runtime.test.ts +38 -0
  1621. package/src/extensions/ferment/runtime.ts +208 -0
  1622. package/src/extensions/ferment/scheduler.ts +226 -0
  1623. package/src/extensions/ferment/scoping-benchmark.test.ts +137 -0
  1624. package/src/extensions/ferment/scoping-confirmation.test.ts +209 -0
  1625. package/src/extensions/ferment/scoping-confirmation.ts +87 -0
  1626. package/src/extensions/ferment/scoping-flow.integration.test.ts +203 -0
  1627. package/src/extensions/ferment/scoping.test.ts +235 -0
  1628. package/src/extensions/ferment/scoping.ts +208 -0
  1629. package/src/extensions/ferment/state.test.ts +300 -0
  1630. package/src/extensions/ferment/state.ts +696 -0
  1631. package/src/extensions/ferment/tips.test.ts +171 -0
  1632. package/src/extensions/ferment/tips.ts +61 -0
  1633. package/src/extensions/ferment/todo-headless-wiring.test.ts +641 -0
  1634. package/src/extensions/ferment/todo-sync.test.ts +805 -0
  1635. package/src/extensions/ferment/todo-sync.ts +520 -0
  1636. package/src/extensions/ferment/tool-helpers.test.ts +121 -0
  1637. package/src/extensions/ferment/tool-helpers.ts +217 -0
  1638. package/src/extensions/ferment/tool-names.test.ts +55 -0
  1639. package/src/extensions/ferment/tool-names.ts +78 -0
  1640. package/src/extensions/ferment/tool-schemas.test.ts +587 -0
  1641. package/src/extensions/ferment/tool-schemas.ts +428 -0
  1642. package/src/extensions/ferment/tool-scope.test.ts +373 -0
  1643. package/src/extensions/ferment/tool-scope.ts +176 -0
  1644. package/src/extensions/ferment/tools/knowledge.ts +60 -0
  1645. package/src/extensions/ferment/tools/lifecycle.test.ts +1196 -0
  1646. package/src/extensions/ferment/tools/lifecycle.ts +1296 -0
  1647. package/src/extensions/ferment/tools/phases.test.ts +379 -0
  1648. package/src/extensions/ferment/tools/phases.ts +757 -0
  1649. package/src/extensions/ferment/tools/steps.test.ts +998 -0
  1650. package/src/extensions/ferment/tools/steps.ts +765 -0
  1651. package/src/extensions/ferment/tools.integration.test.ts +1975 -0
  1652. package/src/extensions/ferment/ui.ts +10 -0
  1653. package/src/extensions/ferment/worker-prompt.test.ts +285 -0
  1654. package/src/extensions/ferment/worker-prompt.ts +85 -0
  1655. package/src/extensions/ferment/worktree.ts +44 -0
  1656. package/src/extensions/format.ts +12 -0
  1657. package/src/extensions/help.ts +172 -0
  1658. package/src/extensions/hide-thinking.test.ts +407 -0
  1659. package/src/extensions/hide-thinking.ts +375 -0
  1660. package/src/extensions/hook-adapters/adapter.integration.test.ts +134 -0
  1661. package/src/extensions/hook-adapters/adapter.test.ts +1062 -0
  1662. package/src/extensions/hook-adapters/adapter.ts +784 -0
  1663. package/src/extensions/hook-adapters/discovery.test.ts +105 -0
  1664. package/src/extensions/hook-adapters/discovery.ts +213 -0
  1665. package/src/extensions/ide-adapter/ARCHITECTURE.md +77 -0
  1666. package/src/extensions/ide-adapter/CONTRACT.md +129 -0
  1667. package/src/extensions/ide-adapter/README.md +24 -0
  1668. package/src/extensions/ide-adapter/at-mentions.test.ts +40 -0
  1669. package/src/extensions/ide-adapter/at-mentions.ts +44 -0
  1670. package/src/extensions/ide-adapter/index.test.ts +434 -0
  1671. package/src/extensions/ide-adapter/index.ts +250 -0
  1672. package/src/extensions/ide-adapter/lockfile.test.ts +137 -0
  1673. package/src/extensions/ide-adapter/lockfile.ts +82 -0
  1674. package/src/extensions/ide-adapter/mcp-client.test.ts +285 -0
  1675. package/src/extensions/ide-adapter/mcp-client.ts +208 -0
  1676. package/src/extensions/ide-adapter/types.ts +47 -0
  1677. package/src/extensions/ikie-minimal-tints.ts +124 -0
  1678. package/src/extensions/ikie-process.ts +49 -0
  1679. package/src/extensions/improve/SKILL.md +51 -0
  1680. package/src/extensions/improve/index.ts +72 -0
  1681. package/src/extensions/input-history.test.ts +475 -0
  1682. package/src/extensions/input-history.ts +111 -0
  1683. package/src/extensions/llm-response-log.test.ts +200 -0
  1684. package/src/extensions/llm-response-log.ts +87 -0
  1685. package/src/extensions/login/flow.test.ts +47 -0
  1686. package/src/extensions/login/flow.ts +638 -0
  1687. package/src/extensions/login/index.ts +57 -0
  1688. package/src/extensions/login/startup-auth.test.ts +510 -0
  1689. package/src/extensions/login/startup-auth.ts +205 -0
  1690. package/src/extensions/loop-guard.test.ts +993 -0
  1691. package/src/extensions/loop-guard.ts +710 -0
  1692. package/src/extensions/lsp/client.ts +501 -0
  1693. package/src/extensions/lsp/edits.test.ts +69 -0
  1694. package/src/extensions/lsp/edits.ts +78 -0
  1695. package/src/extensions/lsp/lsp-entry.test.ts +24 -0
  1696. package/src/extensions/lsp/servers.ts +76 -0
  1697. package/src/extensions/lsp/types.ts +166 -0
  1698. package/src/extensions/lsp/utils.test.ts +81 -0
  1699. package/src/extensions/lsp/utils.ts +80 -0
  1700. package/src/extensions/lsp.test.ts +1049 -0
  1701. package/src/extensions/lsp.ts +470 -0
  1702. package/src/extensions/mcp-adapter/CHANGELOG.md +264 -0
  1703. package/src/extensions/mcp-adapter/LICENSE +21 -0
  1704. package/src/extensions/mcp-adapter/README.md +316 -0
  1705. package/src/extensions/mcp-adapter/app-bridge.bundle.js +10430 -0
  1706. package/src/extensions/mcp-adapter/bm25.ts +187 -0
  1707. package/src/extensions/mcp-adapter/cache-resolver.integration.test.ts +282 -0
  1708. package/src/extensions/mcp-adapter/commands.ts +235 -0
  1709. package/src/extensions/mcp-adapter/config.test.ts +189 -0
  1710. package/src/extensions/mcp-adapter/config.ts +233 -0
  1711. package/src/extensions/mcp-adapter/consent-manager.ts +64 -0
  1712. package/src/extensions/mcp-adapter/context-providers.test.ts +123 -0
  1713. package/src/extensions/mcp-adapter/context-providers.ts +55 -0
  1714. package/src/extensions/mcp-adapter/direct-tool-visibility.test.ts +61 -0
  1715. package/src/extensions/mcp-adapter/direct-tool-visibility.ts +47 -0
  1716. package/src/extensions/mcp-adapter/direct-tools.ts +413 -0
  1717. package/src/extensions/mcp-adapter/errors.ts +198 -0
  1718. package/src/extensions/mcp-adapter/glimpse-ui.ts +78 -0
  1719. package/src/extensions/mcp-adapter/host-html-template.ts +423 -0
  1720. package/src/extensions/mcp-adapter/index.test.ts +323 -0
  1721. package/src/extensions/mcp-adapter/index.ts +604 -0
  1722. package/src/extensions/mcp-adapter/init.ts +402 -0
  1723. package/src/extensions/mcp-adapter/lifecycle.ts +93 -0
  1724. package/src/extensions/mcp-adapter/logger.ts +169 -0
  1725. package/src/extensions/mcp-adapter/mcp-auth-flow.ts +394 -0
  1726. package/src/extensions/mcp-adapter/mcp-auth.ts +267 -0
  1727. package/src/extensions/mcp-adapter/mcp-callback-server.ts +284 -0
  1728. package/src/extensions/mcp-adapter/mcp-oauth-provider.ts +288 -0
  1729. package/src/extensions/mcp-adapter/mcp-panel.test.ts +321 -0
  1730. package/src/extensions/mcp-adapter/mcp-panel.ts +835 -0
  1731. package/src/extensions/mcp-adapter/metadata-cache.test.ts +83 -0
  1732. package/src/extensions/mcp-adapter/metadata-cache.ts +332 -0
  1733. package/src/extensions/mcp-adapter/npx-resolver.ts +429 -0
  1734. package/src/extensions/mcp-adapter/oauth-handler.ts +57 -0
  1735. package/src/extensions/mcp-adapter/proxy-modes.test.ts +147 -0
  1736. package/src/extensions/mcp-adapter/proxy-modes.ts +1035 -0
  1737. package/src/extensions/mcp-adapter/resource-tools.ts +17 -0
  1738. package/src/extensions/mcp-adapter/server-manager.ts +355 -0
  1739. package/src/extensions/mcp-adapter/state.ts +45 -0
  1740. package/src/extensions/mcp-adapter/tool-metadata.test.ts +115 -0
  1741. package/src/extensions/mcp-adapter/tool-metadata.ts +185 -0
  1742. package/src/extensions/mcp-adapter/tool-registrar.ts +46 -0
  1743. package/src/extensions/mcp-adapter/types.ts +423 -0
  1744. package/src/extensions/mcp-adapter/ui-resource-handler.ts +143 -0
  1745. package/src/extensions/mcp-adapter/ui-server.ts +619 -0
  1746. package/src/extensions/mcp-adapter/ui-session.ts +378 -0
  1747. package/src/extensions/mcp-adapter/ui-stream-types.ts +93 -0
  1748. package/src/extensions/mcp-adapter/utils.ts +76 -0
  1749. package/src/extensions/model-catalog/builtin-models.ts +180 -0
  1750. package/src/extensions/model-catalog/guidelines/claude-family.ts +49 -0
  1751. package/src/extensions/model-catalog/guidelines/default-orchestration-guidelines.ts +11 -0
  1752. package/src/extensions/model-catalog/guidelines/default-phase-guidelines.ts +59 -0
  1753. package/src/extensions/model-catalog/guidelines/guidelines-resolver.test.ts +191 -0
  1754. package/src/extensions/model-catalog/guidelines/guidelines-resolver.ts +39 -0
  1755. package/src/extensions/model-catalog/guidelines/kimi-family.ts +82 -0
  1756. package/src/extensions/model-catalog/guidelines/minimax-family.ts +62 -0
  1757. package/src/extensions/model-catalog/guidelines/nemotron-family.ts +53 -0
  1758. package/src/extensions/model-catalog/index.ts +10 -0
  1759. package/src/extensions/model-catalog/model-metadata.test.ts +688 -0
  1760. package/src/extensions/model-catalog/model-metadata.ts +250 -0
  1761. package/src/extensions/model-catalog/model-registry.test.ts +228 -0
  1762. package/src/extensions/model-catalog/model-registry.ts +116 -0
  1763. package/src/extensions/model-catalog/ref-utils.ts +22 -0
  1764. package/src/extensions/model-catalog/types.ts +41 -0
  1765. package/src/extensions/model-guard.test.ts +756 -0
  1766. package/src/extensions/model-guard.ts +402 -0
  1767. package/src/extensions/model-switch.test.ts +1105 -0
  1768. package/src/extensions/model-switch.ts +261 -0
  1769. package/src/extensions/onboarding/picker-editor.ts +22 -0
  1770. package/src/extensions/onboarding/session-mode-picker.test.ts +135 -0
  1771. package/src/extensions/onboarding/session-mode-picker.ts +136 -0
  1772. package/src/extensions/onboarding/session-mode-startup.test.ts +237 -0
  1773. package/src/extensions/onboarding/session-mode-startup.ts +36 -0
  1774. package/src/extensions/onboarding/session-mode.test.ts +501 -0
  1775. package/src/extensions/onboarding/session-mode.ts +363 -0
  1776. package/src/extensions/orchestration/continuation-nudge.test.ts +595 -0
  1777. package/src/extensions/orchestration/continuation-nudge.ts +270 -0
  1778. package/src/extensions/orchestration/model-metadata.test.ts +671 -0
  1779. package/src/extensions/orchestration/model-metadata.ts +246 -0
  1780. package/src/extensions/orchestration/model-ref-utils.ts +5 -0
  1781. package/src/extensions/orchestration/model-registry/builtin-models.ts +223 -0
  1782. package/src/extensions/orchestration/model-registry/guidelines/claude-family.ts +49 -0
  1783. package/src/extensions/orchestration/model-registry/guidelines/default-orchestration-guidelines.ts +11 -0
  1784. package/src/extensions/orchestration/model-registry/guidelines/default-phase-guidelines.ts +67 -0
  1785. package/src/extensions/orchestration/model-registry/guidelines/guidelines-resolver.test.ts +273 -0
  1786. package/src/extensions/orchestration/model-registry/guidelines/guidelines-resolver.ts +39 -0
  1787. package/src/extensions/orchestration/model-registry/guidelines/kimi-family.ts +89 -0
  1788. package/src/extensions/orchestration/model-registry/guidelines/minimax-family.ts +68 -0
  1789. package/src/extensions/orchestration/model-registry/guidelines/nemotron-family.ts +60 -0
  1790. package/src/extensions/orchestration/model-registry/index.ts +4 -0
  1791. package/src/extensions/orchestration/model-registry/model-registry.test.ts +228 -0
  1792. package/src/extensions/orchestration/model-registry/model-registry.ts +116 -0
  1793. package/src/extensions/orchestration/model-registry/types.ts +41 -0
  1794. package/src/extensions/orchestration/model-roles-command.test.ts +367 -0
  1795. package/src/extensions/orchestration/model-roles-command.ts +531 -0
  1796. package/src/extensions/orchestration/model-roles.test.ts +448 -0
  1797. package/src/extensions/orchestration/model-roles.ts +302 -0
  1798. package/src/extensions/orchestration/orchestration-instructions.test.ts +459 -0
  1799. package/src/extensions/orchestration/orchestration-instructions.ts +614 -0
  1800. package/src/extensions/orphan-tool-result-sanitizer.test.ts +198 -0
  1801. package/src/extensions/orphan-tool-result-sanitizer.ts +128 -0
  1802. package/src/extensions/permissions/classifier-model.test.ts +127 -0
  1803. package/src/extensions/permissions/classifier-model.ts +65 -0
  1804. package/src/extensions/permissions/classifier.test.ts +334 -0
  1805. package/src/extensions/permissions/classifier.ts +228 -0
  1806. package/src/extensions/permissions/commands.ts +244 -0
  1807. package/src/extensions/permissions/config.test.ts +101 -0
  1808. package/src/extensions/permissions/config.ts +143 -0
  1809. package/src/extensions/permissions/constants.ts +1 -0
  1810. package/src/extensions/permissions/index.test.ts +1822 -0
  1811. package/src/extensions/permissions/index.ts +1193 -0
  1812. package/src/extensions/permissions/keybindings.test.ts +130 -0
  1813. package/src/extensions/permissions/keybindings.ts +91 -0
  1814. package/src/extensions/permissions/mode-controller-registry.ts +50 -0
  1815. package/src/extensions/permissions/mode-controller.ts +91 -0
  1816. package/src/extensions/permissions/mode.test.ts +51 -0
  1817. package/src/extensions/permissions/mode.ts +29 -0
  1818. package/src/extensions/permissions/plan-persistence.test.ts +56 -0
  1819. package/src/extensions/permissions/plan-persistence.ts +12 -0
  1820. package/src/extensions/permissions/plan-persona.test.ts +42 -0
  1821. package/src/extensions/permissions/prompter.ts +21 -0
  1822. package/src/extensions/permissions/prompts/classifier-system-prompt.ts +33 -0
  1823. package/src/extensions/permissions/prompts/plan-mode-supplement.test.ts +59 -0
  1824. package/src/extensions/permissions/prompts/plan-mode-supplement.ts +38 -0
  1825. package/src/extensions/permissions/prompts.test.ts +67 -0
  1826. package/src/extensions/permissions/prompts.ts +212 -0
  1827. package/src/extensions/permissions/rules.test.ts +327 -0
  1828. package/src/extensions/permissions/rules.ts +210 -0
  1829. package/src/extensions/permissions/select-utils.ts +2 -0
  1830. package/src/extensions/permissions/session-memory.test.ts +75 -0
  1831. package/src/extensions/permissions/session-memory.ts +94 -0
  1832. package/src/extensions/permissions/taxonomy.test.ts +684 -0
  1833. package/src/extensions/permissions/taxonomy.ts +616 -0
  1834. package/src/extensions/permissions/types.ts +70 -0
  1835. package/src/extensions/pi-compat.test.ts +201 -0
  1836. package/src/extensions/pi-package-lookup/index.test.ts +177 -0
  1837. package/src/extensions/pi-package-lookup/index.ts +263 -0
  1838. package/src/extensions/pi-package-lookup/native-compat.test.ts +230 -0
  1839. package/src/extensions/pi-package-lookup/native-compat.ts +279 -0
  1840. package/src/extensions/plugin-package-hook-adapter/definition.test.ts +220 -0
  1841. package/src/extensions/plugin-package-hook-adapter/definition.ts +60 -0
  1842. package/src/extensions/plugin-package-hook-adapter/index.ts +4 -0
  1843. package/src/extensions/prompt-construction/context-files.test.ts +167 -0
  1844. package/src/extensions/prompt-construction/context-files.ts +111 -0
  1845. package/src/extensions/prompt-construction/index.ts +8 -0
  1846. package/src/extensions/prompt-construction/prompt-enrichment.test.ts +1103 -0
  1847. package/src/extensions/prompt-construction/prompt-enrichment.ts +588 -0
  1848. package/src/extensions/prompt-construction/system-prompt-blocks.test.ts +323 -0
  1849. package/src/extensions/prompt-construction/system-prompt-blocks.ts +122 -0
  1850. package/src/extensions/prompt-construction/system-prompt.test.ts +528 -0
  1851. package/src/extensions/prompt-construction/system-prompt.ts +316 -0
  1852. package/src/extensions/prompt-construction/tool-visibility.test.ts +170 -0
  1853. package/src/extensions/prompt-construction/tool-visibility.ts +121 -0
  1854. package/src/extensions/prompt-summary.test.ts +56 -0
  1855. package/src/extensions/prompt-summary.ts +258 -0
  1856. package/src/extensions/questionnaire/constants.ts +6 -0
  1857. package/src/extensions/questionnaire/index.ts +8 -0
  1858. package/src/extensions/questionnaire/questionnaire-fallback.test.ts +948 -0
  1859. package/src/extensions/questionnaire/questionnaire-fallback.ts +230 -0
  1860. package/src/extensions/questionnaire/questionnaire-form.ts +314 -0
  1861. package/src/extensions/questionnaire/questionnaire-reducer.test.ts +508 -0
  1862. package/src/extensions/questionnaire/questionnaire-reducer.ts +510 -0
  1863. package/src/extensions/questionnaire/questionnaire.test.ts +425 -0
  1864. package/src/extensions/questionnaire/questionnaire.ts +280 -0
  1865. package/src/extensions/report-bug.test.ts +301 -0
  1866. package/src/extensions/report-bug.ts +93 -0
  1867. package/src/extensions/review-write-guard.integration.test.ts +167 -0
  1868. package/src/extensions/review-write-guard.test.ts +150 -0
  1869. package/src/extensions/review-write-guard.ts +143 -0
  1870. package/src/extensions/rtk-rewrite.test.ts +325 -0
  1871. package/src/extensions/rtk-rewrite.ts +201 -0
  1872. package/src/extensions/session-metadata/index.test.ts +158 -0
  1873. package/src/extensions/session-metadata/index.ts +66 -0
  1874. package/src/extensions/session-name.test.ts +248 -0
  1875. package/src/extensions/session-name.ts +192 -0
  1876. package/src/extensions/session-repair/orphan-tool-result-repair.test.ts +227 -0
  1877. package/src/extensions/session-repair/orphan-tool-result-repair.ts +183 -0
  1878. package/src/extensions/shared-footer.ts +24 -0
  1879. package/src/extensions/shared-input.test.ts +27 -0
  1880. package/src/extensions/shared-input.ts +24 -0
  1881. package/src/extensions/shutdown-marker.test.ts +195 -0
  1882. package/src/extensions/shutdown-marker.ts +61 -0
  1883. package/src/extensions/skills-manager/index.test.ts +17 -0
  1884. package/src/extensions/skills-manager/index.ts +18 -0
  1885. package/src/extensions/skills-manager/skill-manager.test.ts +350 -0
  1886. package/src/extensions/skills-manager/skill-manager.ts +508 -0
  1887. package/src/extensions/skills-manager/tool.test.ts +234 -0
  1888. package/src/extensions/skills-manager/tool.ts +241 -0
  1889. package/src/extensions/skills-manager/usage.test.ts +119 -0
  1890. package/src/extensions/skills-manager/usage.ts +249 -0
  1891. package/src/extensions/slash-commands.ts +22 -0
  1892. package/src/extensions/spinner.ts +117 -0
  1893. package/src/extensions/stale-ctx.ts +15 -0
  1894. package/src/extensions/startup-update.test.ts +130 -0
  1895. package/src/extensions/startup-update.ts +33 -0
  1896. package/src/extensions/stats/api.ts +168 -0
  1897. package/src/extensions/stats/display.ts +210 -0
  1898. package/src/extensions/stats/index.ts +130 -0
  1899. package/src/extensions/stats/stats.test.ts +547 -0
  1900. package/src/extensions/stats/types.ts +263 -0
  1901. package/src/extensions/stats/visual.ts +439 -0
  1902. package/src/extensions/strip-images.test.ts +118 -0
  1903. package/src/extensions/strip-images.ts +162 -0
  1904. package/src/extensions/superpowers/config.ts +10 -0
  1905. package/src/extensions/superpowers.test.ts +17 -0
  1906. package/src/extensions/superpowers.ts +5 -0
  1907. package/src/extensions/surveys/index.test.ts +200 -0
  1908. package/src/extensions/surveys/index.ts +107 -0
  1909. package/src/extensions/surveys/survey.test.ts +157 -0
  1910. package/src/extensions/surveys/survey.ts +204 -0
  1911. package/src/extensions/tags.test.ts +275 -0
  1912. package/src/extensions/tags.ts +662 -0
  1913. package/src/extensions/telemetry/README.md +113 -0
  1914. package/src/extensions/telemetry/accumulator.test.ts +260 -0
  1915. package/src/extensions/telemetry/accumulator.ts +146 -0
  1916. package/src/extensions/telemetry/config-snapshot.test.ts +259 -0
  1917. package/src/extensions/telemetry/config-snapshot.ts +177 -0
  1918. package/src/extensions/telemetry/handlers/messages.test.ts +422 -0
  1919. package/src/extensions/telemetry/handlers/messages.ts +113 -0
  1920. package/src/extensions/telemetry/handlers/session.test.ts +198 -0
  1921. package/src/extensions/telemetry/handlers/session.ts +24 -0
  1922. package/src/extensions/telemetry/handlers/tools.test.ts +416 -0
  1923. package/src/extensions/telemetry/handlers/tools.ts +171 -0
  1924. package/src/extensions/telemetry/handlers/transport-errors.test.ts +178 -0
  1925. package/src/extensions/telemetry/handlers/transport-errors.ts +42 -0
  1926. package/src/extensions/telemetry/helpers.test.ts +266 -0
  1927. package/src/extensions/telemetry/helpers.ts +146 -0
  1928. package/src/extensions/telemetry/index.test.ts +1170 -0
  1929. package/src/extensions/telemetry/index.ts +609 -0
  1930. package/src/extensions/telemetry/pre-session.test.ts +390 -0
  1931. package/src/extensions/telemetry/pre-session.ts +135 -0
  1932. package/src/extensions/telemetry/session-context.test.ts +487 -0
  1933. package/src/extensions/telemetry/session-context.ts +281 -0
  1934. package/src/extensions/telemetry/session-type.ts +5 -0
  1935. package/src/extensions/telemetry/settings-change-emitter.test.ts +197 -0
  1936. package/src/extensions/telemetry/settings-change-emitter.ts +127 -0
  1937. package/src/extensions/telemetry/survey.test.ts +140 -0
  1938. package/src/extensions/telemetry/survey.ts +70 -0
  1939. package/src/extensions/telemetry/transport.test.ts +301 -0
  1940. package/src/extensions/telemetry/transport.ts +217 -0
  1941. package/src/extensions/teleport/commands/args.test.ts +166 -0
  1942. package/src/extensions/teleport/commands/args.ts +226 -0
  1943. package/src/extensions/teleport/commands/attach.test.ts +209 -0
  1944. package/src/extensions/teleport/commands/attach.ts +91 -0
  1945. package/src/extensions/teleport/commands/errors.ts +26 -0
  1946. package/src/extensions/teleport/commands/remote-sessions.test.ts +350 -0
  1947. package/src/extensions/teleport/commands/remote-sessions.ts +193 -0
  1948. package/src/extensions/teleport/commands/ssh-config.ts +25 -0
  1949. package/src/extensions/teleport/commands/sync.test.ts +104 -0
  1950. package/src/extensions/teleport/commands/sync.ts +205 -0
  1951. package/src/extensions/teleport/commands/teleport.test.ts +593 -0
  1952. package/src/extensions/teleport/commands/teleport.ts +359 -0
  1953. package/src/extensions/teleport/commands/terminal.test.ts +228 -0
  1954. package/src/extensions/teleport/commands/terminal.ts +97 -0
  1955. package/src/extensions/teleport/commands/workspace-ref.test.ts +269 -0
  1956. package/src/extensions/teleport/commands/workspace-ref.ts +105 -0
  1957. package/src/extensions/teleport/index.test.ts +72 -0
  1958. package/src/extensions/teleport/index.ts +66 -0
  1959. package/src/extensions/teleport/overlay/keybindings.test.ts +101 -0
  1960. package/src/extensions/teleport/overlay/keybindings.ts +65 -0
  1961. package/src/extensions/teleport/overlay/overlay-component.test.ts +102 -0
  1962. package/src/extensions/teleport/overlay/overlay-component.ts +284 -0
  1963. package/src/extensions/teleport/overlay/reconnect-banner.test.ts +63 -0
  1964. package/src/extensions/teleport/overlay/reconnect-banner.ts +69 -0
  1965. package/src/extensions/teleport/overlay/tab-bar.test.ts +72 -0
  1966. package/src/extensions/teleport/overlay/tab-bar.ts +146 -0
  1967. package/src/extensions/teleport/overlay/tab-manager.test.ts +484 -0
  1968. package/src/extensions/teleport/overlay/tab-manager.ts +293 -0
  1969. package/src/extensions/teleport/preflight/git.test.ts +94 -0
  1970. package/src/extensions/teleport/preflight/git.ts +40 -0
  1971. package/src/extensions/teleport/preflight/index.test.ts +97 -0
  1972. package/src/extensions/teleport/preflight/index.ts +43 -0
  1973. package/src/extensions/teleport/preflight/rsync.test.ts +39 -0
  1974. package/src/extensions/teleport/preflight/rsync.ts +23 -0
  1975. package/src/extensions/teleport/preflight/workspace-size.ts +2 -0
  1976. package/src/extensions/teleport/provisioning/concurrency.ts +40 -0
  1977. package/src/extensions/teleport/provisioning/constants.ts +3 -0
  1978. package/src/extensions/teleport/provisioning/estimate-bytes.test.ts +107 -0
  1979. package/src/extensions/teleport/provisioning/estimate-bytes.ts +123 -0
  1980. package/src/extensions/teleport/provisioning/git-provision.test.ts +76 -0
  1981. package/src/extensions/teleport/provisioning/git-provision.ts +54 -0
  1982. package/src/extensions/teleport/provisioning/include-list.test.ts +222 -0
  1983. package/src/extensions/teleport/provisioning/include-list.ts +203 -0
  1984. package/src/extensions/teleport/provisioning/paths.ts +54 -0
  1985. package/src/extensions/teleport/provisioning/proxy-command.ts +30 -0
  1986. package/src/extensions/teleport/provisioning/rsync-runner.test.ts +544 -0
  1987. package/src/extensions/teleport/provisioning/rsync-runner.ts +675 -0
  1988. package/src/extensions/teleport/pty/mouse-capture.ts +7 -0
  1989. package/src/extensions/teleport/pty/reconnect-supervisor.ts +117 -0
  1990. package/src/extensions/teleport/pty/terminal-component.test.ts +282 -0
  1991. package/src/extensions/teleport/pty/terminal-component.ts +331 -0
  1992. package/src/extensions/teleport/pty/websocket-transport.test.ts +440 -0
  1993. package/src/extensions/teleport/pty/websocket-transport.ts +228 -0
  1994. package/src/extensions/teleport/pty/xterm-core.test.ts +79 -0
  1995. package/src/extensions/teleport/pty/xterm-core.ts +159 -0
  1996. package/src/extensions/teleport/session-filter.ts +10 -0
  1997. package/src/extensions/teleport/ssh-config/paths.ts +27 -0
  1998. package/src/extensions/teleport/ssh-config/render.test.ts +111 -0
  1999. package/src/extensions/teleport/ssh-config/render.ts +97 -0
  2000. package/src/extensions/teleport/ssh-config/sync.test.ts +170 -0
  2001. package/src/extensions/teleport/ssh-config/sync.ts +92 -0
  2002. package/src/extensions/teleport/types.ts +14 -0
  2003. package/src/extensions/teleport/ui/format-bytes.ts +13 -0
  2004. package/src/extensions/teleport/ui/git-token-prompt.ts +164 -0
  2005. package/src/extensions/teleport/ui/help-modal.ts +100 -0
  2006. package/src/extensions/teleport/ui/progress.test.ts +236 -0
  2007. package/src/extensions/teleport/ui/progress.ts +345 -0
  2008. package/src/extensions/teleport/ui/remote-sessions-panel.test.ts +221 -0
  2009. package/src/extensions/teleport/ui/remote-sessions-panel.ts +309 -0
  2010. package/src/extensions/teleport/ui/sessions-table.ts +24 -0
  2011. package/src/extensions/teleport/ui/sync-progress-row.ts +30 -0
  2012. package/src/extensions/teleport/ui/tty-handoff.ts +131 -0
  2013. package/src/extensions/teleport/ui/workspaces-panel.test.ts +307 -0
  2014. package/src/extensions/teleport/ui/workspaces-panel.ts +364 -0
  2015. package/src/extensions/teleport/ui/workspaces-table.ts +12 -0
  2016. package/src/extensions/terminal-colors.ts +256 -0
  2017. package/src/extensions/terminal-compat/keyboard-capability.test.ts +69 -0
  2018. package/src/extensions/terminal-compat/keyboard-capability.ts +103 -0
  2019. package/src/extensions/terminal-compat/startup-warning.test.ts +273 -0
  2020. package/src/extensions/terminal-compat/startup-warning.ts +77 -0
  2021. package/src/extensions/theme-selector.test.ts +297 -0
  2022. package/src/extensions/theme-selector.ts +156 -0
  2023. package/src/extensions/thinking-steps/index.ts +429 -0
  2024. package/src/extensions/thinking-steps/internal-patch.ts +483 -0
  2025. package/src/extensions/thinking-steps/parse.ts +1376 -0
  2026. package/src/extensions/thinking-steps/persistence.ts +95 -0
  2027. package/src/extensions/thinking-steps/render.ts +496 -0
  2028. package/src/extensions/thinking-steps/state.ts +482 -0
  2029. package/src/extensions/thinking-steps/types.ts +55 -0
  2030. package/src/extensions/tips/general-tips.test.ts +33 -0
  2031. package/src/extensions/tips/general-tips.ts +81 -0
  2032. package/src/extensions/tips/index.test.ts +198 -0
  2033. package/src/extensions/tips/index.ts +231 -0
  2034. package/src/extensions/tips/presenter.test.ts +160 -0
  2035. package/src/extensions/tips/presenter.ts +170 -0
  2036. package/src/extensions/tips/registry.test.ts +59 -0
  2037. package/src/extensions/tips/registry.ts +66 -0
  2038. package/src/extensions/tips/tip-row.test.ts +97 -0
  2039. package/src/extensions/tips/tip-row.ts +48 -0
  2040. package/src/extensions/tips/tips-panel.test.ts +222 -0
  2041. package/src/extensions/tips/tips-panel.ts +310 -0
  2042. package/src/extensions/tips/types.ts +21 -0
  2043. package/src/extensions/todos/command.test.ts +103 -0
  2044. package/src/extensions/todos/command.ts +266 -0
  2045. package/src/extensions/todos/constants.ts +1 -0
  2046. package/src/extensions/todos/index.test.ts +405 -0
  2047. package/src/extensions/todos/index.ts +238 -0
  2048. package/src/extensions/todos/prompt-block.test.ts +219 -0
  2049. package/src/extensions/todos/prompt-block.ts +176 -0
  2050. package/src/extensions/todos/reducer.test.ts +141 -0
  2051. package/src/extensions/todos/reducer.ts +155 -0
  2052. package/src/extensions/todos/scope.test.ts +42 -0
  2053. package/src/extensions/todos/scope.ts +109 -0
  2054. package/src/extensions/todos/store.test.ts +78 -0
  2055. package/src/extensions/todos/store.ts +92 -0
  2056. package/src/extensions/todos/tool.test.ts +84 -0
  2057. package/src/extensions/todos/tool.ts +240 -0
  2058. package/src/extensions/todos/types.ts +79 -0
  2059. package/src/extensions/todos/widget.test.ts +348 -0
  2060. package/src/extensions/todos/widget.ts +332 -0
  2061. package/src/extensions/tool-grouping.test.ts +387 -0
  2062. package/src/extensions/tool-grouping.ts +346 -0
  2063. package/src/extensions/tool-rendering.test.ts +401 -0
  2064. package/src/extensions/tool-rendering.ts +4511 -0
  2065. package/src/extensions/trace-id.test.ts +230 -0
  2066. package/src/extensions/trace-id.ts +46 -0
  2067. package/src/extensions/ui-branch-poll.test.ts +164 -0
  2068. package/src/extensions/ui-branch-poll.ts +57 -0
  2069. package/src/extensions/ui.test.ts +185 -0
  2070. package/src/extensions/ui.ts +649 -0
  2071. package/src/extensions/web-fetch/browser-pool.test.ts +237 -0
  2072. package/src/extensions/web-fetch/browser-pool.ts +145 -0
  2073. package/src/extensions/web-fetch/cache.test.ts +196 -0
  2074. package/src/extensions/web-fetch/cache.ts +114 -0
  2075. package/src/extensions/web-fetch/content-converter.test.ts +341 -0
  2076. package/src/extensions/web-fetch/content-converter.ts +188 -0
  2077. package/src/extensions/web-fetch/execute-handler.test.ts +384 -0
  2078. package/src/extensions/web-fetch/execute-handler.ts +131 -0
  2079. package/src/extensions/web-fetch/index.ts +113 -0
  2080. package/src/extensions/web-fetch/integration.test.ts +618 -0
  2081. package/src/extensions/web-fetch/page-fetcher.test.ts +532 -0
  2082. package/src/extensions/web-fetch/page-fetcher.ts +358 -0
  2083. package/src/extensions/web-fetch/url-validator.test.ts +230 -0
  2084. package/src/extensions/web-fetch/url-validator.ts +153 -0
  2085. package/src/extensions/web-search/execute-handler.test.ts +216 -0
  2086. package/src/extensions/web-search/execute-handler.ts +151 -0
  2087. package/src/extensions/web-search/index.ts +107 -0
  2088. package/src/ferment/engine.test.ts +279 -0
  2089. package/src/ferment/engine.ts +320 -0
  2090. package/src/ferment/event-mapper.ts +313 -0
  2091. package/src/ferment/event-store.property.test.ts +240 -0
  2092. package/src/ferment/event-store.test.ts +780 -0
  2093. package/src/ferment/event-store.ts +1332 -0
  2094. package/src/ferment/fsm.test.ts +630 -0
  2095. package/src/ferment/fsm.ts +466 -0
  2096. package/src/ferment/lifecycle.ts +35 -0
  2097. package/src/ferment/state-machine.test.ts +1215 -0
  2098. package/src/ferment/state-machine.ts +994 -0
  2099. package/src/ferment/stats.test.ts +31 -0
  2100. package/src/ferment/stats.ts +334 -0
  2101. package/src/ferment/store.test.ts +543 -0
  2102. package/src/ferment/store.ts +906 -0
  2103. package/src/ferment/success-criteria.ts +51 -0
  2104. package/src/ferment/text.ts +11 -0
  2105. package/src/ferment/title.test.ts +35 -0
  2106. package/src/ferment/title.ts +28 -0
  2107. package/src/ferment/types.ts +277 -0
  2108. package/src/fs-paths.test.ts +104 -0
  2109. package/src/fs-paths.ts +112 -0
  2110. package/src/integrations/__fixtures__/models.ts +72 -0
  2111. package/src/integrations/bun-sqlite.d.ts +22 -0
  2112. package/src/integrations/claude-code.test.ts +488 -0
  2113. package/src/integrations/claude-code.ts +221 -0
  2114. package/src/integrations/constants.ts +9 -0
  2115. package/src/integrations/cursor.test.ts +91 -0
  2116. package/src/integrations/cursor.ts +188 -0
  2117. package/src/integrations/detect.ts +92 -0
  2118. package/src/integrations/gsd2.test.ts +146 -0
  2119. package/src/integrations/gsd2.ts +162 -0
  2120. package/src/integrations/models.ts +212 -0
  2121. package/src/integrations/openclaw.test.ts +314 -0
  2122. package/src/integrations/openclaw.ts +276 -0
  2123. package/src/integrations/opencode.test.ts +216 -0
  2124. package/src/integrations/opencode.ts +226 -0
  2125. package/src/integrations/provider/opencode.ts +37 -0
  2126. package/src/integrations/registry.test.ts +43 -0
  2127. package/src/integrations/registry.ts +33 -0
  2128. package/src/integrations/spawn.ts +88 -0
  2129. package/src/integrations/types.ts +35 -0
  2130. package/src/login-command-patch.test.ts +609 -0
  2131. package/src/login-command-patch.ts +299 -0
  2132. package/src/models.test.ts +827 -0
  2133. package/src/models.ts +379 -0
  2134. package/src/modes/acp/acp-prompter.ts +64 -0
  2135. package/src/modes/acp/acp-ui-context.test.ts +1001 -0
  2136. package/src/modes/acp/acp-ui-context.ts +435 -0
  2137. package/src/modes/acp/capabilities.ts +36 -0
  2138. package/src/modes/acp/commands.test.ts +29 -0
  2139. package/src/modes/acp/commands.ts +19 -0
  2140. package/src/modes/acp/permission-prompter-registry.ts +17 -0
  2141. package/src/modes/acp/server.test.ts +4392 -0
  2142. package/src/modes/acp/server.ts +1569 -0
  2143. package/src/modes/acp/utils.ts +10 -0
  2144. package/src/oauth-page-patch.test.ts +84 -0
  2145. package/src/ollama.test.ts +1469 -0
  2146. package/src/ollama.ts +491 -0
  2147. package/src/paste-interceptor.test.ts +179 -0
  2148. package/src/paste-interceptor.ts +61 -0
  2149. package/src/paste-to-editor-patch.test.ts +24 -0
  2150. package/src/paste-to-editor-patch.ts +27 -0
  2151. package/src/posthog-device.ts +31 -0
  2152. package/src/proxy.test.ts +36 -0
  2153. package/src/proxy.ts +36 -0
  2154. package/src/resources/bash-hook-discovery.ts +69 -0
  2155. package/src/resources/bash-hooks.test.ts +93 -0
  2156. package/src/resources/bash-hooks.ts +109 -0
  2157. package/src/resources/claude-code-hook-resources.ts +35 -0
  2158. package/src/resources/definitions.test.ts +92 -0
  2159. package/src/resources/definitions.ts +149 -0
  2160. package/src/resources/extension.test.ts +168 -0
  2161. package/src/resources/extension.ts +114 -0
  2162. package/src/resources/filter.ts +11 -0
  2163. package/src/resources/package-resources.test.ts +234 -0
  2164. package/src/resources/package-resources.ts +152 -0
  2165. package/src/resources/rtk-install.test.ts +37 -0
  2166. package/src/resources/rtk-install.ts +289 -0
  2167. package/src/resources/store.test.ts +118 -0
  2168. package/src/resources/store.ts +76 -0
  2169. package/src/resources/tool-blocker.ts +14 -0
  2170. package/src/resources/types.ts +23 -0
  2171. package/src/resources/ui.test.ts +74 -0
  2172. package/src/resources/ui.ts +221 -0
  2173. package/src/sandbox/cloud/auth.test.ts +219 -0
  2174. package/src/sandbox/cloud/auth.ts +127 -0
  2175. package/src/sandbox/cloud/http.test.ts +88 -0
  2176. package/src/sandbox/cloud/http.ts +46 -0
  2177. package/src/sandbox/cloud/index.ts +18 -0
  2178. package/src/sandbox/cloud/keys.test.ts +44 -0
  2179. package/src/sandbox/cloud/keys.ts +34 -0
  2180. package/src/sandbox/cloud/readiness.test.ts +115 -0
  2181. package/src/sandbox/cloud/readiness.ts +122 -0
  2182. package/src/sandbox/cloud/types.ts +70 -0
  2183. package/src/sandbox/cloud/uri.test.ts +51 -0
  2184. package/src/sandbox/cloud/uri.ts +30 -0
  2185. package/src/sandbox/cloud/workspaces.test.ts +249 -0
  2186. package/src/sandbox/cloud/workspaces.ts +161 -0
  2187. package/src/sandbox/constants.ts +2 -0
  2188. package/src/sandbox/git-credentials.test.ts +89 -0
  2189. package/src/sandbox/git-credentials.ts +72 -0
  2190. package/src/sandbox/worker/client.test.ts +156 -0
  2191. package/src/sandbox/worker/client.ts +201 -0
  2192. package/src/sandbox/worker/git-identity.test.ts +99 -0
  2193. package/src/sandbox/worker/git-identity.ts +69 -0
  2194. package/src/sandbox/worker/index.ts +36 -0
  2195. package/src/sandbox/worker/secrets.test.ts +61 -0
  2196. package/src/sandbox/worker/secrets.ts +28 -0
  2197. package/src/sandbox/worker/sessions.test.ts +197 -0
  2198. package/src/sandbox/worker/sessions.ts +32 -0
  2199. package/src/sandbox/worker/status.test.ts +57 -0
  2200. package/src/sandbox/worker/status.ts +6 -0
  2201. package/src/sandbox/worker/types.ts +119 -0
  2202. package/src/set-package-dir.ts +5 -0
  2203. package/src/settings-watcher.test.ts +116 -0
  2204. package/src/settings-watcher.ts +79 -0
  2205. package/src/setup-wizard/apply-tools.test.ts +131 -0
  2206. package/src/setup-wizard/apply-tools.ts +70 -0
  2207. package/src/setup-wizard/index.ts +107 -0
  2208. package/src/setup-wizard/prompt.ts +126 -0
  2209. package/src/setup-wizard/shell-profile.test.ts +154 -0
  2210. package/src/setup-wizard/shell-profile.ts +169 -0
  2211. package/src/setup-wizard/state.ts +45 -0
  2212. package/src/setup-wizard/steps/auth.test.ts +145 -0
  2213. package/src/setup-wizard/steps/auth.ts +130 -0
  2214. package/src/setup-wizard/steps/done.test.ts +267 -0
  2215. package/src/setup-wizard/steps/done.ts +121 -0
  2216. package/src/setup-wizard/steps/rtk.ts +6 -0
  2217. package/src/setup-wizard/steps/telemetry.test.ts +46 -0
  2218. package/src/setup-wizard/steps/telemetry.ts +41 -0
  2219. package/src/setup-wizard/steps/tools.ts +45 -0
  2220. package/src/setup-wizard/steps/welcome.ts +42 -0
  2221. package/src/setup-wizard.test.ts +384 -0
  2222. package/src/setup-wizard.ts +405 -0
  2223. package/src/shared/planning/entry-trigger-registry.test.ts +427 -0
  2224. package/src/shared/planning/entry-trigger-registry.ts +216 -0
  2225. package/src/shared/planning/plan-artifact-store.test.ts +338 -0
  2226. package/src/shared/planning/plan-artifact-store.ts +244 -0
  2227. package/src/shared/planning/plan-decomposition.test.ts +183 -0
  2228. package/src/shared/planning/plan-decomposition.ts +338 -0
  2229. package/src/shared/planning/planning-stop-nudge.test.ts +217 -0
  2230. package/src/shared/planning/planning-stop-nudge.ts +133 -0
  2231. package/src/shared/planning/prompt-supplement-registry.test.ts +264 -0
  2232. package/src/shared/planning/prompt-supplement-registry.ts +250 -0
  2233. package/src/shared/planning/read-only-tool-registry.test.ts +96 -0
  2234. package/src/shared/planning/read-only-tool-registry.ts +98 -0
  2235. package/src/shared/planning/shared-planning-process.test.ts +224 -0
  2236. package/src/shared/planning/shared-planning-process.ts +128 -0
  2237. package/src/shared/planning/tool-catalog.test.ts +344 -0
  2238. package/src/shared/planning/tool-catalog.ts +258 -0
  2239. package/src/shared/planning/tool-profile-manager.test.ts +409 -0
  2240. package/src/shared/planning/tool-profile-manager.ts +281 -0
  2241. package/src/skill-paths.test.ts +33 -0
  2242. package/src/skill-paths.ts +18 -0
  2243. package/src/skills-wizard.ts +44 -0
  2244. package/src/ssh-proxy.test.ts +102 -0
  2245. package/src/ssh-proxy.ts +79 -0
  2246. package/src/startup-context.ts +23 -0
  2247. package/src/startup-settings.test.ts +37 -0
  2248. package/src/startup-settings.ts +26 -0
  2249. package/src/terminal-bg-probe.test.ts +131 -0
  2250. package/src/terminal-bg-probe.ts +238 -0
  2251. package/src/theme-file-watcher.ts +95 -0
  2252. package/src/types/before-provider-headers.ts +48 -0
  2253. package/src/types/pi-coding-agent-utils.d.ts +34 -0
  2254. package/src/update/extract.ts +75 -0
  2255. package/src/update/github.test.ts +133 -0
  2256. package/src/update/github.ts +190 -0
  2257. package/src/update/install.test.ts +210 -0
  2258. package/src/update/install.ts +205 -0
  2259. package/src/update/paths.test.ts +97 -0
  2260. package/src/update/paths.ts +109 -0
  2261. package/src/update/state.test.ts +215 -0
  2262. package/src/update/state.ts +94 -0
  2263. package/src/update/workflow.test.ts +397 -0
  2264. package/src/update/workflow.ts +217 -0
  2265. package/src/upstream-retry-patch.test.ts +77 -0
  2266. package/src/upstream-retry-patch.ts +41 -0
  2267. package/src/utils/clipboard-image.test.ts +117 -0
  2268. package/src/utils/clipboard-image.ts +316 -0
  2269. package/src/utils/clipboard-linux-routing.test.ts +100 -0
  2270. package/src/utils/clipboard-linux-subprocess.test.ts +176 -0
  2271. package/src/utils/clipboard-linux-subprocess.ts +58 -0
  2272. package/src/utils/clipboard-native-harness-wsl.test.ts +109 -0
  2273. package/src/utils/clipboard-native-harness.test.ts +54 -0
  2274. package/src/utils/clipboard-native-harness.ts +146 -0
  2275. package/src/utils/clipboard-read.test.ts +88 -0
  2276. package/src/utils/clipboard-read.ts +69 -0
  2277. package/src/utils/export-post-process.test.ts +539 -0
  2278. package/src/utils/export-post-process.ts +213 -0
  2279. package/src/utils/http.test.ts +302 -0
  2280. package/src/utils/http.ts +106 -0
  2281. package/src/utils/image-registry.test.ts +88 -0
  2282. package/src/utils/image-registry.ts +132 -0
  2283. package/src/utils/image-utils.test.ts +58 -0
  2284. package/src/utils/image-utils.ts +38 -0
  2285. package/src/utils/os-metadata.ts +65 -0
  2286. package/src/utils/sandbox.test.ts +98 -0
  2287. package/src/utils/sandbox.ts +24 -0
  2288. package/src/utils/session-metadata-store.test.ts +228 -0
  2289. package/src/utils/session-metadata-store.ts +96 -0
  2290. package/src/utils/spawn-ikie-subprocess.ts +57 -0
  2291. package/src/utils/trace-id-export.test.ts +343 -0
  2292. package/src/utils/trace-id-export.ts +84 -0
  2293. package/src/utils.test.ts +38 -0
  2294. package/src/utils.ts +65 -0
  2295. package/test-cases/README.md +54 -0
  2296. package/test-cases/bitcoin-price.md +52 -0
  2297. package/test-cases/golang-question.md +29 -0
  2298. package/test-cases/offender.md +32 -0
  2299. package/test-cases/pi-mono-design.md +27 -0
  2300. package/test-cases/pi-mono-tool-card-loop.txt +1381 -0
  2301. package/test-cases/pi-mono-tool-card.md +60 -0
  2302. package/test-cases/pokemon.md +27 -0
  2303. package/test-cases/problem-740.md +20 -0
  2304. package/test-cases/python-project.md +24 -0
  2305. package/test-cases/remove-home-directory.md +53 -0
  2306. package/test-cases/use-gh.md +25 -0
  2307. package/tests/e2e/acp/all-capabilities.test.ts +102 -0
  2308. package/tests/e2e/acp/elicitation-dialogs.test.ts +139 -0
  2309. package/tests/e2e/acp/elicitation-only.test.ts +76 -0
  2310. package/tests/e2e/acp/message-id.test.ts +139 -0
  2311. package/tests/e2e/acp/no-capabilities.test.ts +71 -0
  2312. package/tests/e2e/acp/permission-flow.test.ts +237 -0
  2313. package/tests/e2e/acp/support/acp-fixture.ts +413 -0
  2314. package/tests/e2e/acp/support/scenarios.ts +55 -0
  2315. package/tests/e2e/acp/support/test-dialog-extension.js +22 -0
  2316. package/tests/e2e/acp/support/test-ui-extension.js +14 -0
  2317. package/tests/e2e/acp/vitest.config.ts +12 -0
  2318. package/tests/e2e/tui/ask-user-form.test.ts +310 -0
  2319. package/tests/e2e/tui/basic-session-lifecycle.test.ts +20 -0
  2320. package/tests/e2e/tui/branch-resume.test.ts +71 -0
  2321. package/tests/e2e/tui/cooking-animation.test.ts +213 -0
  2322. package/tests/e2e/tui/editor-narrow-layout.test.ts +47 -0
  2323. package/tests/e2e/tui/extension-custom-headers.test.ts +75 -0
  2324. package/tests/e2e/tui/ferment-draft-proposal-persistence.test.ts +125 -0
  2325. package/tests/e2e/tui/ferment-new-runs-planning.test.ts +211 -0
  2326. package/tests/e2e/tui/ferment-phase-review.test.ts +78 -0
  2327. package/tests/e2e/tui/ferment-plan-review-suppression.test.ts +404 -0
  2328. package/tests/e2e/tui/multi-model-command.test.ts +624 -0
  2329. package/tests/e2e/tui/nudge-wiring.test.ts +129 -0
  2330. package/tests/e2e/tui/ollama-models.test.ts +143 -0
  2331. package/tests/e2e/tui/oneshot-bypasses-dropdown.test.ts +97 -0
  2332. package/tests/e2e/tui/plan-mode-tool-switch.test.ts +73 -0
  2333. package/tests/e2e/tui/plan-review-dismissal.test.ts +291 -0
  2334. package/tests/e2e/tui/plan-to-ferment-promo.test.ts +204 -0
  2335. package/tests/e2e/tui/skip-list.js +9 -0
  2336. package/tests/e2e/tui/support/assertions.ts +41 -0
  2337. package/tests/e2e/tui/support/fake-ollama-server.ts +356 -0
  2338. package/tests/e2e/tui/support/fake-openai-server.ts +361 -0
  2339. package/tests/e2e/tui/support/ikie-fixture.ts +374 -0
  2340. package/tests/e2e/tui/theme-selector.test.ts +99 -0
  2341. package/tests/e2e/tui/todo-overlay.test.ts +163 -0
  2342. package/tests/e2e/tui/todo-widget-ferment.test.ts +346 -0
  2343. package/tests/e2e/tui/tui-test.config.ts +6 -0
  2344. package/tests/smoke/agent-session-tracking.test.ts +203 -0
  2345. package/tests/smoke/binary.test.ts +186 -0
  2346. package/tests/smoke/ferment-oneshot-exit.test.ts +514 -0
  2347. package/tests/smoke/harness.ts +236 -0
  2348. package/tests/smoke/interactive-paste.test.ts +167 -0
  2349. package/tests/smoke/vitest.config.ts +12 -0
  2350. package/tests/smoke/web-fetch.test.ts +41 -0
  2351. package/tests/smoke/web-search.test.ts +47 -0
  2352. package/themes/catppuccin-macchiato.json +82 -0
  2353. package/themes/dark.json +87 -0
  2354. package/themes/dracula.json +79 -0
  2355. package/themes/github-dark.json +80 -0
  2356. package/themes/github-light.json +80 -0
  2357. package/themes/ikie-light.json +92 -0
  2358. package/themes/ikie-minimal.json +79 -0
  2359. package/themes/ikie.json +96 -0
  2360. package/themes/light.json +86 -0
  2361. package/themes/lucent-orng.json +79 -0
  2362. package/themes/monokai.json +78 -0
  2363. package/themes/neon.json +87 -0
  2364. package/themes/night-owl.json +87 -0
  2365. package/themes/nord.json +82 -0
  2366. package/themes/one-dark.json +79 -0
  2367. package/themes/solarized-dark.json +81 -0
  2368. package/themes/solarized-light.json +81 -0
  2369. package/tools/proxy-helper/Makefile +11 -0
  2370. package/tools/proxy-helper/cmd/proxy/proxy.go +211 -0
  2371. package/tools/proxy-helper/cmd/proxy/proxy_test.go +309 -0
  2372. package/tools/proxy-helper/go.mod +13 -0
  2373. package/tools/proxy-helper/go.sum +12 -0
  2374. package/tools/proxy-helper/main.go +29 -0
  2375. package/tools/proxy-helper/pkg/cast/cast.go +287 -0
  2376. package/tsconfig.json +17 -0
  2377. package/vendor/superpowers/.claude-plugin/marketplace.json +20 -0
  2378. package/vendor/superpowers/.claude-plugin/plugin.json +20 -0
  2379. package/vendor/superpowers/.codex-plugin/plugin.json +47 -0
  2380. package/vendor/superpowers/.cursor-plugin/plugin.json +25 -0
  2381. package/vendor/superpowers/.gitattributes +18 -0
  2382. package/vendor/superpowers/.github/FUNDING.yml +3 -0
  2383. package/vendor/superpowers/.github/ISSUE_TEMPLATE/bug_report.md +52 -0
  2384. package/vendor/superpowers/.github/ISSUE_TEMPLATE/config.yml +5 -0
  2385. package/vendor/superpowers/.github/ISSUE_TEMPLATE/feature_request.md +34 -0
  2386. package/vendor/superpowers/.github/ISSUE_TEMPLATE/platform_support.md +23 -0
  2387. package/vendor/superpowers/.github/PULL_REQUEST_TEMPLATE.md +126 -0
  2388. package/vendor/superpowers/.opencode/INSTALL.md +110 -0
  2389. package/vendor/superpowers/.opencode/plugins/superpowers.js +135 -0
  2390. package/vendor/superpowers/.version-bump.json +20 -0
  2391. package/vendor/superpowers/CLAUDE.md +106 -0
  2392. package/vendor/superpowers/CODE_OF_CONDUCT.md +128 -0
  2393. package/vendor/superpowers/GEMINI.md +2 -0
  2394. package/vendor/superpowers/LICENSE +21 -0
  2395. package/vendor/superpowers/README.md +233 -0
  2396. package/vendor/superpowers/RELEASE-NOTES.md +1180 -0
  2397. package/vendor/superpowers/assets/app-icon.png +0 -0
  2398. package/vendor/superpowers/assets/superpowers-small.svg +1 -0
  2399. package/vendor/superpowers/docs/README.opencode.md +157 -0
  2400. package/vendor/superpowers/docs/plans/2025-11-22-opencode-support-design.md +294 -0
  2401. package/vendor/superpowers/docs/plans/2025-11-22-opencode-support-implementation.md +1095 -0
  2402. package/vendor/superpowers/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +711 -0
  2403. package/vendor/superpowers/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
  2404. package/vendor/superpowers/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
  2405. package/vendor/superpowers/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
  2406. package/vendor/superpowers/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +479 -0
  2407. package/vendor/superpowers/docs/superpowers/plans/2026-03-23-codex-app-compatibility.md +564 -0
  2408. package/vendor/superpowers/docs/superpowers/plans/2026-04-06-worktree-rototill.md +879 -0
  2409. package/vendor/superpowers/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
  2410. package/vendor/superpowers/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
  2411. package/vendor/superpowers/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +118 -0
  2412. package/vendor/superpowers/docs/superpowers/specs/2026-03-23-codex-app-compatibility-design.md +244 -0
  2413. package/vendor/superpowers/docs/superpowers/specs/2026-04-06-worktree-rototill-design.md +342 -0
  2414. package/vendor/superpowers/docs/testing.md +303 -0
  2415. package/vendor/superpowers/docs/windows/polyglot-hooks.md +212 -0
  2416. package/vendor/superpowers/gemini-extension.json +6 -0
  2417. package/vendor/superpowers/hooks/hooks-cursor.json +10 -0
  2418. package/vendor/superpowers/hooks/hooks.json +16 -0
  2419. package/vendor/superpowers/hooks/run-hook.cmd +46 -0
  2420. package/vendor/superpowers/hooks/session-start +57 -0
  2421. package/vendor/superpowers/package.json +6 -0
  2422. package/vendor/superpowers/scripts/bump-version.sh +220 -0
  2423. package/vendor/superpowers/scripts/sync-to-codex-plugin.sh +462 -0
  2424. package/vendor/superpowers/skills/brainstorming/SKILL.md +164 -0
  2425. package/vendor/superpowers/skills/brainstorming/scripts/frame-template.html +214 -0
  2426. package/vendor/superpowers/skills/brainstorming/scripts/helper.js +88 -0
  2427. package/vendor/superpowers/skills/brainstorming/scripts/server.cjs +354 -0
  2428. package/vendor/superpowers/skills/brainstorming/scripts/start-server.sh +148 -0
  2429. package/vendor/superpowers/skills/brainstorming/scripts/stop-server.sh +56 -0
  2430. package/vendor/superpowers/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  2431. package/vendor/superpowers/skills/brainstorming/visual-companion.md +287 -0
  2432. package/vendor/superpowers/skills/dispatching-parallel-agents/SKILL.md +182 -0
  2433. package/vendor/superpowers/skills/executing-plans/SKILL.md +70 -0
  2434. package/vendor/superpowers/skills/finishing-a-development-branch/SKILL.md +251 -0
  2435. package/vendor/superpowers/skills/receiving-code-review/SKILL.md +213 -0
  2436. package/vendor/superpowers/skills/requesting-code-review/SKILL.md +103 -0
  2437. package/vendor/superpowers/skills/requesting-code-review/code-reviewer.md +168 -0
  2438. package/vendor/superpowers/skills/subagent-driven-development/SKILL.md +279 -0
  2439. package/vendor/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +25 -0
  2440. package/vendor/superpowers/skills/subagent-driven-development/implementer-prompt.md +113 -0
  2441. package/vendor/superpowers/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  2442. package/vendor/superpowers/skills/systematic-debugging/CREATION-LOG.md +119 -0
  2443. package/vendor/superpowers/skills/systematic-debugging/SKILL.md +296 -0
  2444. package/vendor/superpowers/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  2445. package/vendor/superpowers/skills/systematic-debugging/condition-based-waiting.md +115 -0
  2446. package/vendor/superpowers/skills/systematic-debugging/defense-in-depth.md +122 -0
  2447. package/vendor/superpowers/skills/systematic-debugging/find-polluter.sh +63 -0
  2448. package/vendor/superpowers/skills/systematic-debugging/root-cause-tracing.md +169 -0
  2449. package/vendor/superpowers/skills/systematic-debugging/test-academic.md +14 -0
  2450. package/vendor/superpowers/skills/systematic-debugging/test-pressure-1.md +58 -0
  2451. package/vendor/superpowers/skills/systematic-debugging/test-pressure-2.md +68 -0
  2452. package/vendor/superpowers/skills/systematic-debugging/test-pressure-3.md +69 -0
  2453. package/vendor/superpowers/skills/test-driven-development/SKILL.md +371 -0
  2454. package/vendor/superpowers/skills/test-driven-development/testing-anti-patterns.md +299 -0
  2455. package/vendor/superpowers/skills/using-git-worktrees/SKILL.md +215 -0
  2456. package/vendor/superpowers/skills/using-superpowers/SKILL.md +117 -0
  2457. package/vendor/superpowers/skills/using-superpowers/references/codex-tools.md +59 -0
  2458. package/vendor/superpowers/skills/using-superpowers/references/copilot-tools.md +42 -0
  2459. package/vendor/superpowers/skills/using-superpowers/references/gemini-tools.md +51 -0
  2460. package/vendor/superpowers/skills/verification-before-completion/SKILL.md +139 -0
  2461. package/vendor/superpowers/skills/writing-plans/SKILL.md +152 -0
  2462. package/vendor/superpowers/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  2463. package/vendor/superpowers/skills/writing-skills/SKILL.md +655 -0
  2464. package/vendor/superpowers/skills/writing-skills/anthropic-best-practices.md +1150 -0
  2465. package/vendor/superpowers/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  2466. package/vendor/superpowers/skills/writing-skills/graphviz-conventions.dot +172 -0
  2467. package/vendor/superpowers/skills/writing-skills/persuasion-principles.md +187 -0
  2468. package/vendor/superpowers/skills/writing-skills/render-graphs.js +168 -0
  2469. package/vendor/superpowers/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  2470. package/vendor/superpowers/tests/brainstorm-server/package-lock.json +36 -0
  2471. package/vendor/superpowers/tests/brainstorm-server/package.json +10 -0
  2472. package/vendor/superpowers/tests/brainstorm-server/server.test.js +427 -0
  2473. package/vendor/superpowers/tests/brainstorm-server/windows-lifecycle.test.sh +351 -0
  2474. package/vendor/superpowers/tests/brainstorm-server/ws-protocol.test.js +392 -0
  2475. package/vendor/superpowers/tests/claude-code/README.md +170 -0
  2476. package/vendor/superpowers/tests/claude-code/analyze-token-usage.py +168 -0
  2477. package/vendor/superpowers/tests/claude-code/run-skill-tests.sh +188 -0
  2478. package/vendor/superpowers/tests/claude-code/test-document-review-system.sh +177 -0
  2479. package/vendor/superpowers/tests/claude-code/test-helpers.sh +202 -0
  2480. package/vendor/superpowers/tests/claude-code/test-requesting-code-review.sh +214 -0
  2481. package/vendor/superpowers/tests/claude-code/test-subagent-driven-development-integration.sh +322 -0
  2482. package/vendor/superpowers/tests/claude-code/test-subagent-driven-development.sh +165 -0
  2483. package/vendor/superpowers/tests/claude-code/test-worktree-native-preference.sh +176 -0
  2484. package/vendor/superpowers/tests/codex-plugin-sync/test-sync-to-codex-plugin.sh +615 -0
  2485. package/vendor/superpowers/tests/explicit-skill-requests/prompts/action-oriented.txt +3 -0
  2486. package/vendor/superpowers/tests/explicit-skill-requests/prompts/after-planning-flow.txt +17 -0
  2487. package/vendor/superpowers/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +11 -0
  2488. package/vendor/superpowers/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +8 -0
  2489. package/vendor/superpowers/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +3 -0
  2490. package/vendor/superpowers/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +1 -0
  2491. package/vendor/superpowers/tests/explicit-skill-requests/prompts/skip-formalities.txt +3 -0
  2492. package/vendor/superpowers/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +1 -0
  2493. package/vendor/superpowers/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +1 -0
  2494. package/vendor/superpowers/tests/explicit-skill-requests/run-all.sh +70 -0
  2495. package/vendor/superpowers/tests/explicit-skill-requests/run-claude-describes-sdd.sh +100 -0
  2496. package/vendor/superpowers/tests/explicit-skill-requests/run-extended-multiturn-test.sh +113 -0
  2497. package/vendor/superpowers/tests/explicit-skill-requests/run-haiku-test.sh +144 -0
  2498. package/vendor/superpowers/tests/explicit-skill-requests/run-multiturn-test.sh +143 -0
  2499. package/vendor/superpowers/tests/explicit-skill-requests/run-test.sh +136 -0
  2500. package/vendor/superpowers/tests/opencode/run-tests.sh +165 -0
  2501. package/vendor/superpowers/tests/opencode/setup.sh +88 -0
  2502. package/vendor/superpowers/tests/opencode/test-bootstrap-caching.mjs +124 -0
  2503. package/vendor/superpowers/tests/opencode/test-bootstrap-caching.sh +32 -0
  2504. package/vendor/superpowers/tests/opencode/test-plugin-loading.sh +82 -0
  2505. package/vendor/superpowers/tests/opencode/test-priority.sh +217 -0
  2506. package/vendor/superpowers/tests/opencode/test-tools.sh +95 -0
  2507. package/vendor/superpowers/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +8 -0
  2508. package/vendor/superpowers/tests/skill-triggering/prompts/executing-plans.txt +1 -0
  2509. package/vendor/superpowers/tests/skill-triggering/prompts/requesting-code-review.txt +3 -0
  2510. package/vendor/superpowers/tests/skill-triggering/prompts/systematic-debugging.txt +11 -0
  2511. package/vendor/superpowers/tests/skill-triggering/prompts/test-driven-development.txt +7 -0
  2512. package/vendor/superpowers/tests/skill-triggering/prompts/writing-plans.txt +10 -0
  2513. package/vendor/superpowers/tests/skill-triggering/run-all.sh +60 -0
  2514. package/vendor/superpowers/tests/skill-triggering/run-test.sh +88 -0
  2515. package/vendor/superpowers/tests/subagent-driven-dev/go-fractals/design.md +81 -0
  2516. package/vendor/superpowers/tests/subagent-driven-dev/go-fractals/plan.md +172 -0
  2517. package/vendor/superpowers/tests/subagent-driven-dev/go-fractals/scaffold.sh +45 -0
  2518. package/vendor/superpowers/tests/subagent-driven-dev/run-test.sh +106 -0
  2519. package/vendor/superpowers/tests/subagent-driven-dev/svelte-todo/design.md +70 -0
  2520. package/vendor/superpowers/tests/subagent-driven-dev/svelte-todo/plan.md +222 -0
  2521. package/vendor/superpowers/tests/subagent-driven-dev/svelte-todo/scaffold.sh +46 -0
  2522. package/vitest.config.ts +22 -0
@@ -0,0 +1,1822 @@
1
+ import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"
2
+ import { tmpdir } from "node:os"
3
+ import { join } from "node:path"
4
+ import type {
5
+ ExtensionAPI,
6
+ ExtensionContext,
7
+ ExtensionUIContext,
8
+ ToolCallEvent,
9
+ ToolInfo,
10
+ } from "@earendil-works/pi-coding-agent"
11
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"
12
+ import { registerAcpPrompter, unregisterAcpPrompter } from "../../modes/acp/permission-prompter-registry.js"
13
+ import { runAsAgentWorker } from "../agent-worker-context.js"
14
+ import { PARENT_SESSION_ID_ENV_KEY } from "../agents/manager/constants.js"
15
+ import { FERMENT_TOOLS } from "../ferment/tool-names.js"
16
+ import { type EnvironmentInfo, buildSystemPrompt } from "../prompt-construction/system-prompt.js"
17
+ import { createToolVisibility } from "../prompt-construction/tool-visibility.js"
18
+ import { TODO_TOOL_NAMES } from "../todos/tool.js"
19
+ import { classifyToolCall } from "./classifier.js"
20
+ import { PERMISSIONS_ENV_KEY } from "./constants.js"
21
+ import permissionsExtension, {
22
+ checkCompoundCommand,
23
+ handleCompoundConfirm,
24
+ isLaunchedWithYolo,
25
+ notifyFermentActive,
26
+ } from "./index.js"
27
+ import { unregisterSessionPermissionFlagController } from "./mode-controller-registry.js"
28
+ import { getPermissionMode } from "./mode-controller.js"
29
+ import { SessionMemory } from "./session-memory.js"
30
+ import type { Rule } from "./types.js"
31
+
32
+ vi.mock("node:fs", async (importOriginal) => {
33
+ const actual = await importOriginal<typeof import("node:fs")>()
34
+ return {
35
+ ...actual,
36
+ existsSync: vi.fn(actual.existsSync),
37
+ mkdirSync: vi.fn(actual.mkdirSync),
38
+ readFileSync: vi.fn(actual.readFileSync),
39
+ writeFileSync: vi.fn(actual.writeFileSync),
40
+ }
41
+ })
42
+
43
+ vi.mock("./classifier.js", () => ({
44
+ classifyToolCall: vi.fn(async () => ({ verdict: "safe", reason: "mock safe" })),
45
+ }))
46
+
47
+ const testEnv: EnvironmentInfo = {
48
+ os: "Linux",
49
+ rawPlatform: "linux",
50
+ cpuArchitecture: "x64",
51
+ shell: "/bin/bash",
52
+ osRelease: "6.1.0-test",
53
+ osVersion: "#1 SMP PREEMPT_DYNAMIC Test",
54
+ username: "testuser",
55
+ homeDir: "/home/testuser",
56
+ cwd: "/test",
57
+ documentsDir: "/test/.ikie/docs",
58
+ localDate: "2026-01-01",
59
+ isGitRepo: false,
60
+ }
61
+
62
+ const TEST_SESSION_ID = "test-session"
63
+
64
+ // Helper to create mock ExtensionContext with ui.select
65
+ // When an AbortSignal is passed and aborted=true, returns undefined to trigger "aborted" outcome
66
+ function createMockContext(
67
+ selectResults: (string | undefined)[] = [],
68
+ sessionId = TEST_SESSION_ID,
69
+ opts?: { uiContext?: Partial<ExtensionUIContext>; abortOnFirstSelect?: boolean },
70
+ ): ExtensionContext {
71
+ let selectCallIndex = 0
72
+ return {
73
+ hasUI: true,
74
+ mode: "tui",
75
+ cwd: "/test",
76
+ sessionManager: { getSessionId: () => sessionId },
77
+ ui: {
78
+ select: vi.fn(async (_: string, __: string[], selectOpts?: { signal?: AbortSignal }) => {
79
+ if (selectOpts?.signal?.aborted) {
80
+ return undefined
81
+ }
82
+ const result = selectResults[selectCallIndex]
83
+ selectCallIndex++
84
+ return result
85
+ }),
86
+ input: vi.fn(async () => ""),
87
+ notify: vi.fn(),
88
+ setStatus: vi.fn(),
89
+ setWorkingVisible: vi.fn(),
90
+ theme: {
91
+ fg: vi.fn((_, s) => s),
92
+ getFgAnsi: vi.fn(() => ""),
93
+ },
94
+ onTerminalInput: vi.fn(() => () => {}),
95
+ ...opts?.uiContext,
96
+ },
97
+ } as unknown as ExtensionContext
98
+ }
99
+
100
+ function createClassifierContext(): ExtensionContext {
101
+ const model = { provider: "test-provider", id: "test-model" }
102
+ return {
103
+ ...createMockContext([]),
104
+ hasUI: false,
105
+ cwd: "/test",
106
+ model,
107
+ modelRegistry: {
108
+ getAvailable: vi.fn(() => [model]),
109
+ find: vi.fn(() => model),
110
+ },
111
+ } as unknown as ExtensionContext
112
+ }
113
+
114
+ // Helper to create a mock tool call event
115
+ function createMockEvent(): ToolCallEvent {
116
+ return {
117
+ type: "tool_call",
118
+ toolCallId: "tool-call-1",
119
+ toolName: "bash",
120
+ input: { command: "echo a && echo b" },
121
+ cwd: "/test",
122
+ } as unknown as ToolCallEvent
123
+ }
124
+
125
+ type ExtensionHandler = (event: unknown, ctx: ExtensionContext) => unknown | Promise<unknown>
126
+ type RegisteredCommand = {
127
+ handler: (args: string, ctx: ExtensionContext) => unknown | Promise<unknown>
128
+ }
129
+
130
+ function createPermissionsHarness(
131
+ toolNames: string[],
132
+ flags: Record<string, boolean | string | undefined> = {},
133
+ initialActiveTools: string[] = toolNames,
134
+ ) {
135
+ const handlers = new Map<string, ExtensionHandler[]>()
136
+ const commands = new Map<string, RegisteredCommand>()
137
+ const tools = toolNames.map((name) => ({ name, description: `${name} tool` }) as ToolInfo)
138
+ let activeTools = [...initialActiveTools]
139
+
140
+ const pi = {
141
+ registerFlag: vi.fn(),
142
+ getFlag: vi.fn((name: string) => flags[name]),
143
+ registerCommand: vi.fn((name: string, command: RegisteredCommand) => {
144
+ commands.set(name, command)
145
+ }),
146
+ on: vi.fn((event: string, handler: ExtensionHandler) => {
147
+ const list = handlers.get(event) ?? []
148
+ list.push(handler)
149
+ handlers.set(event, list)
150
+ }),
151
+ getAllTools: vi.fn(() => tools),
152
+ getActiveTools: vi.fn(() => activeTools),
153
+ setActiveTools: vi.fn((names: string[]) => {
154
+ const known = new Set(toolNames)
155
+ activeTools = names.filter((name) => known.has(name))
156
+ }),
157
+ sendMessage: vi.fn(),
158
+ } as unknown as ExtensionAPI
159
+
160
+ permissionsExtension(pi)
161
+
162
+ return {
163
+ pi,
164
+ commands,
165
+ activeTools: () => activeTools,
166
+ async fire(event: string, payload: unknown, ctx: ExtensionContext = createMockContext([])) {
167
+ let result: unknown
168
+ for (const handler of handlers.get(event) ?? []) {
169
+ result = await handler(payload, ctx)
170
+ }
171
+ return result
172
+ },
173
+ }
174
+ }
175
+
176
+ describe("isLaunchedWithYolo", () => {
177
+ afterEach(() => {
178
+ notifyFermentActive(false)
179
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
180
+ Reflect.deleteProperty(process.env, PERMISSIONS_ENV_KEY)
181
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${TEST_SESSION_ID}`)
182
+ vi.unstubAllEnvs()
183
+ })
184
+
185
+ it("is true when yolo comes from the launch env", () => {
186
+ vi.stubEnv(PERMISSIONS_ENV_KEY, "yolo")
187
+ createPermissionsHarness(["bash"])
188
+
189
+ expect(isLaunchedWithYolo()).toBe(true)
190
+ })
191
+
192
+ it("is true when yolo comes from the launch CLI flag", async () => {
193
+ const harness = createPermissionsHarness(["bash"], { yolo: true })
194
+
195
+ await harness.fire("session_start", {}, createMockContext([]))
196
+
197
+ expect(isLaunchedWithYolo()).toBe(true)
198
+ })
199
+
200
+ it("is true after the user switches to yolo with the permissions command", async () => {
201
+ const harness = createPermissionsHarness(["bash"])
202
+ const command = harness.commands.get("permissions")
203
+ const ctx = createMockContext([])
204
+
205
+ expect(command).toBeDefined()
206
+ await command?.handler("mode yolo", ctx)
207
+
208
+ await harness.fire("session_start", {}, ctx)
209
+
210
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "user" })
211
+ expect(isLaunchedWithYolo()).toBe(true)
212
+ })
213
+
214
+ it("is true after the user cycles to yolo with shift+tab", async () => {
215
+ const harness = createPermissionsHarness(["bash"])
216
+ const ctx = createMockContext([])
217
+ let terminalHandler: ((data: string) => unknown) | undefined
218
+ ctx.ui.onTerminalInput = vi.fn((handler: (data: string) => unknown) => {
219
+ terminalHandler = handler
220
+ return () => {}
221
+ })
222
+
223
+ await harness.fire("session_start", {}, ctx)
224
+ expect(terminalHandler).toBeDefined()
225
+ terminalHandler?.("\x1b[Z")
226
+ terminalHandler?.("\x1b[Z")
227
+ terminalHandler?.("\x1b[Z")
228
+
229
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "user" })
230
+ expect(isLaunchedWithYolo()).toBe(true)
231
+ })
232
+
233
+ it("is false when yolo is only a runtime elevation (e.g. an active ferment)", async () => {
234
+ // No user-chosen yolo source: env unset, no CLI flag, default config.
235
+ const harness = createPermissionsHarness(["bash"])
236
+ // Fire session_start so sessionContext is set (required by onActiveFermentChange).
237
+ await harness.fire("session_start", {}, createMockContext([]))
238
+
239
+ // A ferment becoming active elevates runtimeMode to yolo and propagates it
240
+ // to the per-session env — the exact condition that previously let the
241
+ // start gate be bypassed silently.
242
+ notifyFermentActive(true)
243
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "ferment" })
244
+
245
+ // But runtime elevation must not count as user consent.
246
+ expect(isLaunchedWithYolo()).toBe(false)
247
+ })
248
+
249
+ it("keeps user-selected runtime yolo when ferment clears", async () => {
250
+ const harness = createPermissionsHarness(["bash"])
251
+ const command = harness.commands.get("permissions")
252
+ const ctx = createMockContext([])
253
+ await command?.handler("mode yolo", ctx)
254
+ await harness.fire("session_start", {}, ctx)
255
+
256
+ notifyFermentActive(true)
257
+ notifyFermentActive(false)
258
+
259
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "user" })
260
+ expect(isLaunchedWithYolo()).toBe(true)
261
+ })
262
+
263
+ it("keeps user-selected runtime yolo even during multiple ferment change callbacks", async () => {
264
+ const harness = createPermissionsHarness(["bash"])
265
+ const command = harness.commands.get("permissions")
266
+ const ctx = createMockContext([])
267
+ await command?.handler("mode auto", ctx)
268
+ await harness.fire("session_start", {}, ctx)
269
+
270
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "auto", source: "user" })
271
+
272
+ notifyFermentActive(true)
273
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "ferment" })
274
+
275
+ notifyFermentActive(true)
276
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "ferment" })
277
+
278
+ notifyFermentActive(true)
279
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "ferment" })
280
+
281
+ notifyFermentActive(false)
282
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "auto", source: "user" })
283
+ })
284
+
285
+ it("clears ferment-owned runtime yolo when ferment clears", async () => {
286
+ const harness = createPermissionsHarness(["bash"])
287
+ const ctx = createMockContext([])
288
+ await harness.fire("session_start", {}, ctx)
289
+
290
+ notifyFermentActive(true)
291
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "ferment" })
292
+ expect(isLaunchedWithYolo()).toBe(false)
293
+
294
+ notifyFermentActive(false)
295
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "default", source: "user" })
296
+ expect(isLaunchedWithYolo()).toBe(false)
297
+ })
298
+ })
299
+
300
+ describe("permissions plan-mode tool visibility", () => {
301
+ afterEach(() => {
302
+ notifyFermentActive(false)
303
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
304
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${TEST_SESSION_ID}`)
305
+ vi.unstubAllEnvs()
306
+ })
307
+
308
+ it("ferment activation leaves plan mode and restores agent tools for scoping", async () => {
309
+ vi.stubEnv(PERMISSIONS_ENV_KEY, "plan")
310
+ const harness = createPermissionsHarness(["read", "agent", "bash", "write", "grep"])
311
+ await harness.fire("session_start", {}, createMockContext([]))
312
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "plan", source: "user" })
313
+ expect(harness.activeTools().sort()).toEqual(["bash", "grep", "read"])
314
+
315
+ notifyFermentActive(true)
316
+
317
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "yolo", source: "ferment" })
318
+ expect(harness.activeTools().sort()).toEqual(["agent", "bash", "grep", "read", "write"])
319
+
320
+ notifyFermentActive(false)
321
+
322
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "plan", source: "user" })
323
+ expect(harness.activeTools().sort()).toEqual(["bash", "grep", "read"])
324
+ })
325
+
326
+ it("hides and blocks propose_ferment_scoping under explicit --plan", async () => {
327
+ const harness = createPermissionsHarness(["read", "bash", FERMENT_TOOLS.PROPOSE_SCOPING], { plan: true })
328
+
329
+ await harness.fire("session_start", {}, createMockContext([]))
330
+
331
+ expect(harness.activeTools().sort()).toEqual(["bash", "read"])
332
+ const result = await harness.fire(
333
+ "tool_call",
334
+ { toolName: FERMENT_TOOLS.PROPOSE_SCOPING, input: { prompt: "plan it" } },
335
+ createMockContext([]),
336
+ )
337
+
338
+ expect(result).toEqual(expect.objectContaining({ block: true }))
339
+ expect(JSON.stringify(result)).toContain("Plan mode")
340
+ })
341
+
342
+ it("keeps todo tools visible and allowed under explicit --plan", async () => {
343
+ const harness = createPermissionsHarness(["read", "bash", ...TODO_TOOL_NAMES], { plan: true })
344
+
345
+ await harness.fire("session_start", {}, createMockContext([]))
346
+
347
+ expect(harness.activeTools().sort()).toEqual(["bash", "read", ...TODO_TOOL_NAMES].sort())
348
+ for (const toolName of TODO_TOOL_NAMES) {
349
+ await expect(
350
+ harness.fire(
351
+ "tool_call",
352
+ { toolName, input: { todos: [{ content: "Plan task", status: "pending" }] } },
353
+ createMockContext([]),
354
+ ),
355
+ ).resolves.toBeUndefined()
356
+ }
357
+ })
358
+
359
+ it("allows the mcp gateway tool under explicit --plan", async () => {
360
+ const harness = createPermissionsHarness(["read", "mcp"], { plan: true })
361
+
362
+ await harness.fire("session_start", {}, createMockContext([]))
363
+
364
+ // mcp must be in the active set (cataloged as shared core)
365
+ expect(harness.activeTools().sort()).toEqual(["mcp", "read"])
366
+ // And the tool_call gate must not block it
367
+ await expect(
368
+ harness.fire("tool_call", { toolName: "mcp", input: { search: "jira" } }, createMockContext([])),
369
+ ).resolves.toBeUndefined()
370
+ })
371
+
372
+ it("blocks read calls targeting directories before upstream read", async () => {
373
+ const tmp = mkdtempSync(join(tmpdir(), "ikie-read-dir-"))
374
+ try {
375
+ const harness = createPermissionsHarness(["read"])
376
+ const result = await harness.fire("tool_call", { toolName: "read", input: { path: tmp } }, createMockContext([]))
377
+
378
+ expect(result).toEqual({
379
+ block: true,
380
+ reason: "Path is a directory; read only accepts files. List or search the directory instead.",
381
+ })
382
+ } finally {
383
+ rmSync(tmp, { recursive: true, force: true })
384
+ }
385
+ })
386
+
387
+ it("leaving plan mode does not restore tools hidden by another extension", async () => {
388
+ const harness = createPermissionsHarness(["read", "bash", "write", "edit", "grep"], { plan: true })
389
+ const peerVisibility = createToolVisibility(harness.pi)
390
+ peerVisibility.disable(["bash"])
391
+
392
+ await harness.fire("session_start", {}, createMockContext([]))
393
+ expect(harness.activeTools().sort()).toEqual(["grep", "read"])
394
+
395
+ const command = harness.commands.get("permissions")
396
+ expect(command).toBeDefined()
397
+ await command?.handler("mode default", createMockContext([]))
398
+
399
+ expect(harness.activeTools().sort()).toEqual(["edit", "grep", "read", "write"])
400
+
401
+ peerVisibility.enable(["bash"])
402
+ expect(harness.activeTools().sort()).toEqual(["bash", "edit", "grep", "read", "write"])
403
+ })
404
+
405
+ it("leaving plan mode does not activate mutating tools that were already inactive", async () => {
406
+ const harness = createPermissionsHarness(["read", "bash", "write", "edit", "grep"], { plan: true }, [
407
+ "read",
408
+ "bash",
409
+ "write",
410
+ "grep",
411
+ ])
412
+
413
+ await harness.fire("session_start", {}, createMockContext([]))
414
+ expect(harness.activeTools().sort()).toEqual(["bash", "grep", "read"])
415
+
416
+ const command = harness.commands.get("permissions")
417
+ expect(command).toBeDefined()
418
+ await command?.handler("mode default", createMockContext([]))
419
+
420
+ expect(harness.activeTools().sort()).toEqual(["bash", "grep", "read", "write"])
421
+ })
422
+ })
423
+
424
+ describe("plan mode assumption detection", () => {
425
+ afterEach(() => {
426
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
427
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${TEST_SESSION_ID}`)
428
+ vi.unstubAllEnvs()
429
+ })
430
+
431
+ // --- Integration tests for turn_end handler ---
432
+
433
+ function makeAssistantMessage(text: string): unknown {
434
+ return { role: "assistant", content: [{ type: "text", text }] }
435
+ }
436
+
437
+ async function fireTurnEnd(
438
+ harness: ReturnType<typeof createPermissionsHarness>,
439
+ text: string,
440
+ ctx: ExtensionContext,
441
+ ) {
442
+ return harness.fire("turn_end", { message: makeAssistantMessage(text) }, ctx)
443
+ }
444
+
445
+ it("shows approval menu when plan is clean", async () => {
446
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
447
+ await harness.fire("session_start", {}, createMockContext([]))
448
+
449
+ // Simulate: agent called tools, then produced clean plan text
450
+ await harness.fire("tool_execution_start", {})
451
+
452
+ const ctx = createMockContext(["No, do something else"])
453
+ await fireTurnEnd(
454
+ harness,
455
+ "# Plan\n\n## Goal\nFix the bug.\n\n## Chunk 1\nChange the code.\nAccept When: tests pass.\n\n## Verification\nRun test suite.\n\n<!-- PLAN_COMPLETE -->\n",
456
+ ctx,
457
+ )
458
+
459
+ expect(ctx.ui.select).toHaveBeenCalled()
460
+ })
461
+
462
+ it("shows approval menu even when assumptions section is present (agent is trusted)", async () => {
463
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
464
+ await harness.fire("session_start", {}, createMockContext([]))
465
+ await harness.fire("tool_execution_start", {})
466
+
467
+ const ctx = createMockContext(["No, do something else"])
468
+ await fireTurnEnd(
469
+ harness,
470
+ "# Plan\n\n## Assumptions\n- Database schema may differ\n\n## Chunks\n- Chunk 1\n\n<!-- PLAN_COMPLETE -->\n",
471
+ ctx,
472
+ )
473
+
474
+ expect(ctx.ui.select).toHaveBeenCalled()
475
+ })
476
+
477
+ it("shows approval menu even when open questions section is present", async () => {
478
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
479
+ await harness.fire("session_start", {}, createMockContext([]))
480
+ await harness.fire("tool_execution_start", {})
481
+
482
+ const ctx = createMockContext(["No, do something else"])
483
+ await fireTurnEnd(
484
+ harness,
485
+ "# Plan\n\n## Open Questions\n- Should we use JWT or sessions?\n\n## Chunks\n- Chunk 1\n\n<!-- PLAN_COMPLETE -->\n",
486
+ ctx,
487
+ )
488
+
489
+ expect(ctx.ui.select).toHaveBeenCalled()
490
+ })
491
+
492
+ it("allows plan with empty assumptions section", async () => {
493
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
494
+ await harness.fire("session_start", {}, createMockContext([]))
495
+ await harness.fire("tool_execution_start", {})
496
+
497
+ const ctx = createMockContext(["No, do something else"])
498
+ await fireTurnEnd(
499
+ harness,
500
+ "## Goal\nFix it.\n\n## Assumptions\n\n## Chunk 1\nChange code.\nAccept When: works.\n\n## Verification\nCheck tests.\n\n<!-- PLAN_COMPLETE -->\n",
501
+ ctx,
502
+ )
503
+
504
+ expect(ctx.ui.select).toHaveBeenCalled()
505
+ })
506
+
507
+ it("allows plan without assumptions section at all", async () => {
508
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
509
+ await harness.fire("session_start", {}, createMockContext([]))
510
+ await harness.fire("tool_execution_start", {})
511
+
512
+ const ctx = createMockContext(["No, do something else"])
513
+ await fireTurnEnd(
514
+ harness,
515
+ "## Goal\nDo the thing.\n\n## Chunk 1\nChange code.\nAccept When: works.\n\n## Verification\nCheck tests.\n\n<!-- PLAN_COMPLETE -->\n",
516
+ ctx,
517
+ )
518
+
519
+ expect(ctx.ui.select).toHaveBeenCalled()
520
+ })
521
+
522
+ it("shows menu for plan with assumptions (PLAN_COMPLETE is the gate)", async () => {
523
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
524
+ await harness.fire("session_start", {}, createMockContext([]))
525
+ await harness.fire("tool_execution_start", {})
526
+
527
+ const ctx = createMockContext(["No, do something else"])
528
+ await fireTurnEnd(harness, "## ASSUMPTIONS\n- Schema TBD\n\n<!-- PLAN_COMPLETE -->\n", ctx)
529
+
530
+ expect(ctx.ui.select).toHaveBeenCalled()
531
+ })
532
+
533
+ it("shows menu for plan with assumptions after blank line", async () => {
534
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
535
+ await harness.fire("session_start", {}, createMockContext([]))
536
+ await harness.fire("tool_execution_start", {})
537
+
538
+ const ctx = createMockContext(["No, do something else"])
539
+ await fireTurnEnd(harness, "## Assumptions\n\n- Database schema may differ\n\n<!-- PLAN_COMPLETE -->\n", ctx)
540
+
541
+ expect(ctx.ui.select).toHaveBeenCalled()
542
+ })
543
+
544
+ it("review gate approves well-structured plan and shows menu", async () => {
545
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
546
+ await harness.fire("session_start", {}, createMockContext([]))
547
+ await harness.fire("tool_execution_start", {})
548
+
549
+ const ctx = createMockContext(["No, do something else"])
550
+ await fireTurnEnd(
551
+ harness,
552
+ "## Goal\nAdd auth.\n\n## Chunk 1\nImplement login.\nAccept When: tests pass.\n\n## Verification\nRun the test suite.\n\n<!-- PLAN_COMPLETE -->\n",
553
+ ctx,
554
+ )
555
+
556
+ expect(ctx.ui.select).toHaveBeenCalled()
557
+ expect(harness.pi.sendMessage).not.toHaveBeenCalledWith(
558
+ expect.objectContaining({ customType: "plan-review-blocked" }),
559
+ expect.anything(),
560
+ )
561
+ })
562
+
563
+ it("review gate: menu shows for any plan with PLAN_COMPLETE marker", async () => {
564
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
565
+ await harness.fire("session_start", {}, createMockContext([]))
566
+ await harness.fire("tool_execution_start", {})
567
+
568
+ const ctx = createMockContext(["No, do something else"])
569
+ await fireTurnEnd(
570
+ harness,
571
+ "## Chunk 1\nJust a chunk.\n\nSome extra lines\nto make it non-simple.\nMore content here.\n\n<!-- PLAN_COMPLETE -->\n",
572
+ ctx,
573
+ )
574
+
575
+ expect(ctx.ui.select).toHaveBeenCalled()
576
+ })
577
+
578
+ it("review gate skips simple plans and shows menu immediately", async () => {
579
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
580
+ await harness.fire("session_start", {}, createMockContext([]))
581
+ await harness.fire("tool_execution_start", {})
582
+
583
+ const ctx = createMockContext(["No, do something else"])
584
+ await fireTurnEnd(harness, "## Chunk 1\nJust one chunk.\n\n<!-- PLAN_COMPLETE -->\n", ctx)
585
+
586
+ expect(ctx.ui.select).toHaveBeenCalled()
587
+ })
588
+
589
+ it("review menu offers Execute / Rework / Start as ferment", async () => {
590
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
591
+ await harness.fire("session_start", {}, createMockContext([]))
592
+
593
+ const planText =
594
+ "# Plan\n\n## Goal\nAdd caching layer.\n\n## Chunks\n- Chunk 1\nImplement cache.\n\n## Verification\nRun tests.\n\n<!-- PLAN_COMPLETE -->"
595
+ const ctx = createMockContext(["Rework the plan"])
596
+ await fireTurnEnd(harness, planText, ctx)
597
+
598
+ expect(ctx.ui.select).toHaveBeenCalledWith("Plan complete. How would you like to proceed?", [
599
+ "Execute the plan",
600
+ "Rework the plan",
601
+ "Start as ferment",
602
+ ])
603
+ expect(harness.pi.sendMessage).not.toHaveBeenCalled()
604
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "plan", source: "user" })
605
+ })
606
+
607
+ it("oneshot sessions skip the plan-complete dropdown entirely", async () => {
608
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
609
+ // Simulate a oneshot session: pi.getFlag returns true for ferment-oneshot.
610
+ ;(harness.pi as { getFlag?: (n: string) => unknown }).getFlag = (n: string) =>
611
+ n === "ferment-oneshot" ? true : undefined
612
+ await harness.fire("session_start", {}, createMockContext([]))
613
+
614
+ const planText =
615
+ "# Plan\n\n## Goal\nAdd caching layer.\n\n## Chunks\n- Chunk 1\nImplement cache.\n\n<!-- PLAN_COMPLETE -->"
616
+ const ctx = createMockContext([])
617
+ await fireTurnEnd(harness, planText, ctx)
618
+
619
+ // The dropdown must NOT have been shown — oneshot sessions bypass it.
620
+ expect(ctx.ui.select).not.toHaveBeenCalled()
621
+ })
622
+
623
+ // Shared-plan fixture following the planning-process structure (Goal /
624
+ // Constraints / Chunks / Verification Strategy / Risks). The Start-as-ferment
625
+ // branch parses this with parseSharedPlan and uses the structured fields:
626
+ // each `### Chunk` becomes one implementation step; Verification Strategy /
627
+ // Decision Log / Risks are metadata and must NOT become steps.
628
+ // (PR #683 review comment 3473746281.)
629
+ const SHARED_PLAN_TEXT =
630
+ "# Plan\n\n" +
631
+ "## Goal\nAdd caching layer.\n\n" +
632
+ "## Constraints\n- No new dependencies\n- Preserve existing API\n\n" +
633
+ "## Chunks\n\n" +
634
+ "### Chunk 1: Add cache primitive\n- **Files Changed**: src/api/cache.ts\n- **Accept When**: cache.get/set round-trip works\n\n" +
635
+ "### Chunk 2: Wire cache into client\n- **Files Changed**: src/api/client.ts\n- **Accept When**: repeat GET hits the cache\n\n" +
636
+ "## Verification Strategy\nRun pnpm test src/api after each chunk.\n\n" +
637
+ "## Risks\nCache staleness: short default TTL.\n\n" +
638
+ "<!-- PLAN_COMPLETE -->"
639
+
640
+ it("Start as ferment persists a ferment artifact under .ikie/ferments", async () => {
641
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
642
+ await harness.fire("session_start", {}, createMockContext([]))
643
+
644
+ // Use a temp cwd so we don't pollute the repo.
645
+ const tmpDir = mkdtempSync(join(tmpdir(), "ferment-promo-"))
646
+ try {
647
+ const ctx = createMockContext(["Start as ferment"])
648
+ ctx.cwd = tmpDir
649
+ await fireTurnEnd(harness, SHARED_PLAN_TEXT, ctx)
650
+
651
+ const fermentsDir = join(tmpDir, ".ikie", "ferments")
652
+ expect(existsSync(fermentsDir)).toBe(true)
653
+ const files = readdirSync(fermentsDir).filter((f) => f.endsWith(".json"))
654
+ expect(files).toHaveLength(1)
655
+
656
+ const artifact = JSON.parse(readFileSync(join(fermentsDir, files[0]), "utf-8"))
657
+ // Status is 'running' because 'Start as ferment' activates the first phase
658
+ // via the full runtime path when the plan has a structured Chunks section.
659
+ expect(artifact.status).toMatch(/^(planned|running|active)$/)
660
+ expect(artifact.id).toBeTruthy()
661
+ expect(artifact.phases).toHaveLength(1)
662
+ // One step per `### Chunk` — Verification Strategy / Risks must NOT
663
+ // become implementation steps.
664
+ expect(artifact.phases[0].steps).toHaveLength(2)
665
+ } finally {
666
+ rmSync(tmpDir, { recursive: true, force: true })
667
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
668
+ defaultFermentRuntime.setActive(undefined)
669
+ }
670
+ })
671
+
672
+ it("Start as ferment applies the implementation-ferment tool profile", async () => {
673
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
674
+ await harness.fire("session_start", {}, createMockContext([]))
675
+
676
+ // The START_AS_FERMENT branch persists a ferment artifact under <cwd>/.ikie/ferments
677
+ // before applying the tool profile. Use a real temp dir for cwd so the writes succeed —
678
+ // the default mock cwd ("/test") does not exist on the test runner.
679
+ const tmpDir = mkdtempSync(join(tmpdir(), "prof-"))
680
+ try {
681
+ const ctx = createMockContext(["Start as ferment"])
682
+ ctx.cwd = tmpDir
683
+ await fireTurnEnd(harness, SHARED_PLAN_TEXT, ctx)
684
+
685
+ // Find the implementation-ferment apply call by selecting the largest
686
+ // setActiveTools call — the planning-adhoc profile produces a 12-tool set
687
+ // while the implementation-ferment profile produces a 31-tool set, so the
688
+ // implementation-ferment apply is unambiguously the maximum.
689
+ expect(harness.pi.setActiveTools).toHaveBeenCalled()
690
+ const calls = vi.mocked(harness.pi.setActiveTools).mock.calls
691
+ const implementationFermentCall = calls.reduce<{ size: number; arr: string[] | undefined }>(
692
+ (best, c) => {
693
+ const arr = c[0] as string[] | undefined
694
+ const size = arr?.length ?? 0
695
+ return size > best.size ? { size, arr } : best
696
+ },
697
+ { size: 0, arr: undefined },
698
+ )
699
+ expect(implementationFermentCall.arr).toBeDefined()
700
+ const toolSet = implementationFermentCall.arr as string[]
701
+ // The implementation-ferment profile includes ferment write tools (`edit`, `write`).
702
+ expect(toolSet).toContain("edit")
703
+ expect(toolSet).toContain("write")
704
+ // And it must NOT include the adhoc-only tool `questionnaire`.
705
+ expect(toolSet).not.toContain("questionnaire")
706
+ } finally {
707
+ rmSync(tmpDir, { recursive: true, force: true })
708
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
709
+ defaultFermentRuntime.setActive(undefined)
710
+ }
711
+ })
712
+
713
+ it("Start as ferment swaps tool names per the tool-name-mapping doc", async () => {
714
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
715
+ await harness.fire("session_start", {}, createMockContext([]))
716
+
717
+ // Same tmp-dir setup as the artifact test — the default mock cwd ("/test")
718
+ // does not exist on the test runner.
719
+ const tmpDir = mkdtempSync(join(tmpdir(), "swap-"))
720
+ try {
721
+ const ctx = createMockContext(["Start as ferment"])
722
+ ctx.cwd = tmpDir
723
+ await fireTurnEnd(harness, SHARED_PLAN_TEXT, ctx)
724
+
725
+ const calls = vi.mocked(harness.pi.setActiveTools).mock.calls
726
+ const implementationFermentCall = calls.reduce<{ size: number; arr: string[] | undefined }>(
727
+ (best, c) => {
728
+ const arr = c[0] as string[] | undefined
729
+ const size = arr?.length ?? 0
730
+ return size > best.size ? { size, arr } : best
731
+ },
732
+ { size: 0, arr: undefined },
733
+ )
734
+ expect(implementationFermentCall.arr).toBeDefined()
735
+ const toolSet = implementationFermentCall.arr as string[]
736
+
737
+ // Adhoc-only tools must NOT be present (per the tool-swap contract at
738
+ // permissions/index.ts:524-562).
739
+ expect(toolSet).not.toContain("questionnaire")
740
+ // Todo lifecycle tools are shared core — they ARE present in ferment
741
+ // mode (used for step-level sub-task tracking during implementation).
742
+ expect(toolSet).toContain("update_todos")
743
+ expect(toolSet).toContain("add_todo")
744
+ // Shared core tools MUST remain visible.
745
+ expect(toolSet).toContain("read")
746
+ } finally {
747
+ rmSync(tmpDir, { recursive: true, force: true })
748
+ }
749
+ })
750
+
751
+ // Regression: the previous 'Start as ferment' implementation wrote a partial
752
+ // JSON file directly and applied the tool profile, but never called
753
+ // runtime.setActive(), runtime.getStorage().create(), or emitted the creation
754
+ // event. This left the ferment runtime with no active ferment even though
755
+ // implementation tools were visible.
756
+ it("Start as ferment sets the ferment active in the runtime so getActive() returns it", async () => {
757
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
758
+ await harness.fire("session_start", {}, createMockContext([]))
759
+
760
+ const tmpDir = mkdtempSync(join(tmpdir(), "runtime-active-"))
761
+ try {
762
+ const ctx = createMockContext(["Start as ferment"])
763
+ ctx.cwd = tmpDir
764
+ await fireTurnEnd(harness, SHARED_PLAN_TEXT, ctx)
765
+
766
+ // After 'Start as ferment', the ferment runtime must know the active ferment.
767
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
768
+ const active = defaultFermentRuntime.getActive()
769
+ expect(active).not.toBeUndefined()
770
+ expect(active?.goal).toBeTruthy()
771
+ expect(active?.status).toBeDefined()
772
+ } finally {
773
+ rmSync(tmpDir, { recursive: true, force: true })
774
+ // Reset runtime active state so other tests are not polluted.
775
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
776
+ defaultFermentRuntime.setActive(undefined)
777
+ }
778
+ })
779
+
780
+ it("Start as ferment appends a ferment_reference entry so resumed sessions find the ferment", async () => {
781
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
782
+ await harness.fire("session_start", {}, createMockContext([]))
783
+
784
+ const tmpDir = mkdtempSync(join(tmpdir(), "ref-entry-"))
785
+ try {
786
+ const ctx = createMockContext(["Start as ferment"])
787
+ ctx.cwd = tmpDir
788
+ await fireTurnEnd(harness, SHARED_PLAN_TEXT, ctx)
789
+
790
+ // appendRefEntry calls pi.sendMessage with customType 'ferment_reference'.
791
+ // It uses void pi.sendMessage(msg) with no second arg.
792
+ expect(harness.pi.sendMessage).toHaveBeenCalledWith(expect.objectContaining({ customType: "ferment_reference" }))
793
+ } finally {
794
+ rmSync(tmpDir, { recursive: true, force: true })
795
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
796
+ defaultFermentRuntime.setActive(undefined)
797
+ }
798
+ })
799
+
800
+ // Regression: previously the catch block applied implementation-ferment tools
801
+ // and exited plan mode even when storage/runtime creation failed. That left
802
+ // the session with implementation tools visible but no active ferment, no
803
+ // session ref, no creation event, and no initialized runtime state. The fix
804
+ // is fail-closed: stay in plan mode, do NOT apply implementation tools.
805
+ it("Start as ferment fails closed when runtime creation throws — stays in plan mode, no implementation tools", async () => {
806
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
807
+ await harness.fire("session_start", {}, createMockContext([]))
808
+
809
+ const planText = SHARED_PLAN_TEXT
810
+ // Use a cwd that cannot be written to so resolveFermentsDir + storage.create
811
+ // throw and the catch block fires.
812
+ const ctx = createMockContext(["Start as ferment"])
813
+ ctx.cwd = "/dev/null/nonexistent-path-that-cannot-be-created"
814
+
815
+ await fireTurnEnd(harness, planText, ctx)
816
+
817
+ // 1) No setActiveTools call should include implementation-ferment-only tools
818
+ // like edit/write/Agent (the implementation profile signature).
819
+ const calls = vi.mocked(harness.pi.setActiveTools).mock.calls
820
+ for (const [arr] of calls) {
821
+ const toolSet = arr as string[]
822
+ expect(toolSet).not.toContain("edit")
823
+ expect(toolSet).not.toContain("write")
824
+ expect(toolSet).not.toContain("Agent")
825
+ }
826
+
827
+ // 2) Mode must remain plan — the user is still in a plan-mode session
828
+ // with a failed promotion. They can retry or rework.
829
+ expect(getPermissionMode(TEST_SESSION_ID)).toEqual({ mode: "plan", source: "user" })
830
+
831
+ // 3) Runtime active state must NOT be set to a half-initialized ferment.
832
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
833
+ expect(defaultFermentRuntime.getActive()).toBeUndefined()
834
+
835
+ // Reset runtime state in case prior tests in this describe block left it set.
836
+ defaultFermentRuntime.setActive(undefined)
837
+ })
838
+
839
+ // Regression (PR #683 comment 3473746281): when the plan lacks a `## Chunks`
840
+ // section, "Start as ferment" must NOT activate the implementation profile or
841
+ // produce a lossy ferment from raw section splitting. It should persist a draft
842
+ // ferment via the normal runtime path, notify the user, and leave implementation
843
+ // tools off.
844
+ it("Start as ferment falls back to draft-only when the plan has no ## Chunks section", async () => {
845
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
846
+ await harness.fire("session_start", {}, createMockContext([]))
847
+
848
+ const PLAN_WITHOUT_CHUNKS =
849
+ "# Plan\n\n## Goal\nAdd caching layer.\n\n## Constraints\n- No new dependencies\n\n<!-- PLAN_COMPLETE -->"
850
+ const tmpDir = mkdtempSync(join(tmpdir(), "draft-only-"))
851
+ try {
852
+ const ctx = createMockContext(["Start as ferment"])
853
+ ctx.cwd = tmpDir
854
+ await fireTurnEnd(harness, PLAN_WITHOUT_CHUNKS, ctx)
855
+
856
+ // 1) The artifact is persisted as a draft (no phase activated).
857
+ const fermentsDir = join(tmpDir, ".ikie", "ferments")
858
+ expect(existsSync(fermentsDir)).toBe(true)
859
+ const files = readdirSync(fermentsDir).filter((f) => f.endsWith(".json"))
860
+ expect(files).toHaveLength(1)
861
+ const artifact = JSON.parse(readFileSync(join(fermentsDir, files[0]), "utf-8"))
862
+ expect(artifact.status).toBe("draft")
863
+ expect(artifact.phases ?? []).toHaveLength(0)
864
+
865
+ // 2) No implementation-ferment tools became visible — the user must NOT
866
+ // be put into implementation mode for a plan we couldn't scope.
867
+ const calls = vi.mocked(harness.pi.setActiveTools).mock.calls
868
+ for (const [arr] of calls) {
869
+ const toolSet = arr as string[]
870
+ expect(toolSet).not.toContain("edit")
871
+ expect(toolSet).not.toContain("write")
872
+ expect(toolSet).not.toContain("Agent")
873
+ }
874
+
875
+ // 3) The user was notified so they know what happened.
876
+ expect(ctx.ui?.notify).toHaveBeenCalledWith(expect.stringContaining("draft ferment"))
877
+ } finally {
878
+ rmSync(tmpDir, { recursive: true, force: true })
879
+ const { defaultFermentRuntime } = await import("../ferment/runtime.js")
880
+ defaultFermentRuntime.setActive(undefined)
881
+ }
882
+ })
883
+ })
884
+
885
+ describe("permissions prompt inheritance", () => {
886
+ afterEach(() => {
887
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
888
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${TEST_SESSION_ID}`)
889
+ vi.unstubAllEnvs()
890
+ })
891
+
892
+ it("inherits plan-mode safety instructions to append-mode subagents", async () => {
893
+ const harness = createPermissionsHarness(["read", "bash"], { plan: true })
894
+ await harness.fire("session_start", {}, createMockContext([]))
895
+
896
+ const result = buildSystemPrompt({
897
+ tools: [
898
+ { name: "read", description: "Read files" },
899
+ { name: "bash", description: "Run shell commands" },
900
+ ],
901
+ env: testEnv,
902
+ mode: "subagent",
903
+ sessionId: TEST_SESSION_ID,
904
+ })
905
+
906
+ expect(result).toContain("Plan mode is active")
907
+ expect(result).toContain("read-only access")
908
+ expect(result).toContain("The user will approve the plan before any execution begins")
909
+ })
910
+ })
911
+
912
+ describe("permissions ferment tool classification", () => {
913
+ beforeEach(() => {
914
+ vi.mocked(classifyToolCall).mockClear()
915
+ })
916
+
917
+ afterEach(() => {
918
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
919
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${TEST_SESSION_ID}`)
920
+ vi.unstubAllEnvs()
921
+ })
922
+
923
+ it("allows ferment tools in auto mode without invoking the classifier", async () => {
924
+ const harness = createPermissionsHarness([FERMENT_TOOLS.PROPOSE_SCOPING], { auto: true })
925
+ const ctx = createClassifierContext()
926
+ await harness.fire("session_start", {}, ctx)
927
+
928
+ const result = await harness.fire(
929
+ "tool_call",
930
+ { toolName: FERMENT_TOOLS.PROPOSE_SCOPING, input: { prompt: "plan it" } },
931
+ ctx,
932
+ )
933
+
934
+ expect(result).toBeUndefined()
935
+ expect(classifyToolCall).not.toHaveBeenCalled()
936
+ })
937
+
938
+ it("bypasses user deny rules for ferment tools (internal state-management)", async () => {
939
+ const harness = createPermissionsHarness([FERMENT_TOOLS.PROPOSE_SCOPING], {
940
+ auto: true,
941
+ "deny-tool": FERMENT_TOOLS.PROPOSE_SCOPING,
942
+ })
943
+ const ctx = createClassifierContext()
944
+ await harness.fire("session_start", {}, ctx)
945
+
946
+ const result = await harness.fire(
947
+ "tool_call",
948
+ { toolName: FERMENT_TOOLS.PROPOSE_SCOPING, input: { prompt: "plan it" } },
949
+ ctx,
950
+ )
951
+
952
+ expect(result).toBeUndefined()
953
+ expect(classifyToolCall).not.toHaveBeenCalled()
954
+ })
955
+
956
+ it("does NOT bypass user deny rules for ask_user (user-facing tool)", async () => {
957
+ const harness = createPermissionsHarness([FERMENT_TOOLS.ASK_USER], {
958
+ "deny-tool": FERMENT_TOOLS.ASK_USER,
959
+ })
960
+ const ctx = createClassifierContext()
961
+ await harness.fire("session_start", {}, ctx)
962
+
963
+ const result = await harness.fire(
964
+ "tool_call",
965
+ { toolName: FERMENT_TOOLS.ASK_USER, input: { ferment_id: "x", question: "?" } },
966
+ ctx,
967
+ )
968
+
969
+ expect(result).toEqual(expect.objectContaining({ block: true }))
970
+ })
971
+
972
+ it("continues to classify unknown non-ferment tools in auto mode", async () => {
973
+ const harness = createPermissionsHarness(["unknown_tool"], { auto: true })
974
+ const ctx = createClassifierContext()
975
+ await harness.fire("session_start", {}, ctx)
976
+
977
+ const result = await harness.fire("tool_call", { toolName: "unknown_tool", input: { value: 1 } }, ctx)
978
+
979
+ expect(result).toBeUndefined()
980
+ expect(classifyToolCall).toHaveBeenCalledTimes(1)
981
+ expect(vi.mocked(classifyToolCall).mock.calls[0]?.[3]).toMatchObject({
982
+ toolName: "unknown_tool",
983
+ input: { value: 1 },
984
+ cwd: "/test",
985
+ })
986
+ })
987
+
988
+ it("keeps existing read-only and bash auto-approval behavior", async () => {
989
+ const harness = createPermissionsHarness(["read", "bash"], { auto: true })
990
+ const ctx = createClassifierContext()
991
+ await harness.fire("session_start", {}, ctx)
992
+
993
+ const readResult = await harness.fire("tool_call", { toolName: "read", input: { path: "src/index.ts" } }, ctx)
994
+ const bashResult = await harness.fire("tool_call", { toolName: "bash", input: { command: "git status" } }, ctx)
995
+
996
+ expect(readResult).toBeUndefined()
997
+ expect(bashResult).toBeUndefined()
998
+ expect(classifyToolCall).not.toHaveBeenCalled()
999
+ })
1000
+ })
1001
+
1002
+ describe("permissions TUI allow-remember", () => {
1003
+ afterEach(() => {
1004
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
1005
+ })
1006
+
1007
+ // Build a UI context whose select() always picks the "don't ask again"
1008
+ // (allow-remember) choice, and records how many times it was invoked.
1009
+ function rememberingContext(): ExtensionContext {
1010
+ const select = vi.fn(async (_title: string, choices: string[]) => {
1011
+ return choices.find((c) => c.includes("don't ask again")) ?? choices[0]
1012
+ })
1013
+ return {
1014
+ hasUI: true,
1015
+ cwd: "/test",
1016
+ sessionManager: { getSessionId: () => TEST_SESSION_ID },
1017
+ ui: {
1018
+ select,
1019
+ input: vi.fn(async () => ""),
1020
+ notify: vi.fn(),
1021
+ setStatus: vi.fn(),
1022
+ setWorkingVisible: vi.fn(),
1023
+ theme: { fg: vi.fn((_, s) => s), getFgAnsi: vi.fn(() => "") },
1024
+ onTerminalInput: vi.fn(() => () => {}),
1025
+ },
1026
+ } as unknown as ExtensionContext
1027
+ }
1028
+
1029
+ it("does not re-prompt for an identical command after 'don't ask again'", async () => {
1030
+ const harness = createPermissionsHarness(["bash"])
1031
+ const ctx = rememberingContext()
1032
+ await harness.fire("session_start", {}, ctx)
1033
+
1034
+ const event = { toolName: "bash", input: { command: "go test ./..." } }
1035
+
1036
+ const first = await harness.fire("tool_call", event, ctx)
1037
+ expect(first).toBeUndefined() // approved
1038
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1039
+
1040
+ const second = await harness.fire("tool_call", event, ctx)
1041
+ expect(second).toBeUndefined() // remembered — no prompt
1042
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1043
+ })
1044
+
1045
+ it("does not re-prompt for an env-prefixed + rtk-wrapped command", async () => {
1046
+ const harness = createPermissionsHarness(["bash"])
1047
+ const ctx = rememberingContext()
1048
+ await harness.fire("session_start", {}, ctx)
1049
+
1050
+ const event = {
1051
+ toolName: "bash",
1052
+ input: { command: "GOWORK=off rtk go test -race -timeout 30s -count=1 ./controllers/discovery/... 2>&1" },
1053
+ }
1054
+
1055
+ await harness.fire("tool_call", event, ctx)
1056
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1057
+
1058
+ await harness.fire("tool_call", event, ctx)
1059
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1060
+ })
1061
+
1062
+ it("does not re-prompt for a command with shell-quoted arguments", async () => {
1063
+ const harness = createPermissionsHarness(["bash"])
1064
+ const ctx = rememberingContext()
1065
+ await harness.fire("session_start", {}, ctx)
1066
+
1067
+ const event = { toolName: "bash", input: { command: 'touch "file with spaces.txt"' } }
1068
+
1069
+ await harness.fire("tool_call", event, ctx)
1070
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1071
+
1072
+ await harness.fire("tool_call", event, ctx)
1073
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1074
+ })
1075
+
1076
+ it("does not re-prompt for a re-run with a non-inert env prefix (was the bug)", async () => {
1077
+ const harness = createPermissionsHarness(["bash"])
1078
+ const ctx = rememberingContext()
1079
+ await harness.fire("session_start", {}, ctx)
1080
+
1081
+ const event = { toolName: "bash", input: { command: "LD_PRELOAD=/tmp/x.so go test ./..." } }
1082
+ await harness.fire("tool_call", event, ctx)
1083
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1084
+ await harness.fire("tool_call", event, ctx)
1085
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1) // remembered — no second prompt
1086
+ })
1087
+
1088
+ it("re-prompts when an env var is added to a bare-approved command", async () => {
1089
+ const harness = createPermissionsHarness(["bash"])
1090
+ const ctx = rememberingContext()
1091
+ await harness.fire("session_start", {}, ctx)
1092
+
1093
+ await harness.fire("tool_call", { toolName: "bash", input: { command: "go test ./..." } }, ctx)
1094
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1095
+ // Adding LD_PRELOAD must NOT be covered by the bare `go test` approval.
1096
+ await harness.fire(
1097
+ "tool_call",
1098
+ { toolName: "bash", input: { command: "LD_PRELOAD=/tmp/evil.so go test ./..." } },
1099
+ ctx,
1100
+ )
1101
+ expect(ctx.ui.select).toHaveBeenCalledTimes(2) // prompted again
1102
+ })
1103
+ })
1104
+
1105
+ describe("permissions ACP prompter", () => {
1106
+ beforeEach(() => {
1107
+ Reflect.deleteProperty(process.env, PERMISSIONS_ENV_KEY)
1108
+ vi.mocked(classifyToolCall).mockClear()
1109
+ })
1110
+
1111
+ afterEach(() => {
1112
+ unregisterAcpPrompter(TEST_SESSION_ID)
1113
+ unregisterSessionPermissionFlagController(TEST_SESSION_ID)
1114
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${TEST_SESSION_ID}`)
1115
+ vi.unstubAllEnvs()
1116
+ })
1117
+
1118
+ it("uses a registered ACP prompter in headless rpc mode", async () => {
1119
+ // The ACP prompter is only reachable when mode === "rpc"; this test
1120
+ // covers the headless variant (hasUI === false). See also the
1121
+ // "uses the ACP prompter in rpc mode when hasUI is false (headless rpc)"
1122
+ // selection-logic test for the canPrompt/resolvePrompter decision.
1123
+ const requests: Array<{ toolCallId: string; choices: string[] }> = []
1124
+ registerAcpPrompter(TEST_SESSION_ID, {
1125
+ request: async (req) => {
1126
+ requests.push({
1127
+ toolCallId: req.toolCallId,
1128
+ choices: req.choices.map((choice) => choice.kind),
1129
+ })
1130
+ return { kind: "allow-once" }
1131
+ },
1132
+ })
1133
+ const harness = createPermissionsHarness(["bash"])
1134
+ const ctx = { ...createClassifierContext(), mode: "rpc" } as unknown as ExtensionContext
1135
+ await harness.fire("session_start", {}, ctx)
1136
+
1137
+ const result = await harness.fire(
1138
+ "tool_call",
1139
+ { type: "tool_call", toolCallId: "tc-acp", toolName: "bash", input: { command: "touch file.txt" } },
1140
+ ctx,
1141
+ )
1142
+
1143
+ expect(result).toBeUndefined()
1144
+ expect(classifyToolCall).not.toHaveBeenCalled()
1145
+ expect(requests).toEqual([
1146
+ {
1147
+ toolCallId: "tc-acp",
1148
+ choices: ["allow-once", "allow-remember", "allow-remember-wildcard", "deny"],
1149
+ },
1150
+ ])
1151
+ })
1152
+
1153
+ it("does not remember allow_once approvals", async () => {
1154
+ const requests: string[] = []
1155
+ registerAcpPrompter(TEST_SESSION_ID, {
1156
+ request: async (req) => {
1157
+ requests.push(req.toolCallId)
1158
+ return { kind: "allow-once" }
1159
+ },
1160
+ })
1161
+ const harness = createPermissionsHarness(["bash"])
1162
+ // ACP prompter is only reachable in rpc mode.
1163
+ const ctx = { ...createClassifierContext(), mode: "rpc" } as unknown as ExtensionContext
1164
+ await harness.fire("session_start", {}, ctx)
1165
+
1166
+ for (const toolCallId of ["tc-once-1", "tc-once-2"]) {
1167
+ const result = await harness.fire(
1168
+ "tool_call",
1169
+ { type: "tool_call", toolCallId, toolName: "bash", input: { command: "touch once.txt" } },
1170
+ ctx,
1171
+ )
1172
+ expect(result).toBeUndefined()
1173
+ }
1174
+
1175
+ expect(requests).toEqual(["tc-once-1", "tc-once-2"])
1176
+ })
1177
+
1178
+ it("stores allow_always as a session rule", async () => {
1179
+ const requests: string[] = []
1180
+ registerAcpPrompter(TEST_SESSION_ID, {
1181
+ request: async (req) => {
1182
+ requests.push(req.toolCallId)
1183
+ const remember = req.choices.find((choice) => choice.kind === "allow-remember")
1184
+ if (!remember || remember.kind !== "allow-remember") throw new Error("missing remember choice")
1185
+ return { kind: "allow-remember", rule: remember.rule }
1186
+ },
1187
+ })
1188
+ const harness = createPermissionsHarness(["bash"])
1189
+ // ACP prompter is only reachable in rpc mode.
1190
+ const ctx = { ...createClassifierContext(), mode: "rpc" } as unknown as ExtensionContext
1191
+ await harness.fire("session_start", {}, ctx)
1192
+
1193
+ for (const toolCallId of ["tc-remember-1", "tc-remember-2"]) {
1194
+ const result = await harness.fire(
1195
+ "tool_call",
1196
+ { type: "tool_call", toolCallId, toolName: "bash", input: { command: "touch remembered.txt" } },
1197
+ ctx,
1198
+ )
1199
+ expect(result).toBeUndefined()
1200
+ }
1201
+
1202
+ expect(requests).toEqual(["tc-remember-1"])
1203
+ })
1204
+
1205
+ it("keeps subagent workers classifier-only even when an ACP prompter is registered", async () => {
1206
+ const requests: string[] = []
1207
+ vi.mocked(classifyToolCall).mockResolvedValueOnce({
1208
+ verdict: "requires-confirmation",
1209
+ reason: "needs a human",
1210
+ ok: true,
1211
+ })
1212
+ registerAcpPrompter(TEST_SESSION_ID, {
1213
+ request: async (req) => {
1214
+ requests.push(req.toolCallId)
1215
+ return { kind: "allow-once" }
1216
+ },
1217
+ })
1218
+ const harness = createPermissionsHarness(["bash"])
1219
+ const ctx = createClassifierContext()
1220
+ await harness.fire("session_start", {}, ctx)
1221
+
1222
+ const result = await runAsAgentWorker(() =>
1223
+ harness.fire(
1224
+ "tool_call",
1225
+ { type: "tool_call", toolCallId: "tc-worker", toolName: "bash", input: { command: "touch worker.txt" } },
1226
+ ctx,
1227
+ ),
1228
+ )
1229
+
1230
+ expect(result).toEqual({ block: true, reason: "Classifier: needs a human (no UI to confirm)" })
1231
+ expect(requests).toEqual([])
1232
+ expect(classifyToolCall).toHaveBeenCalledTimes(1)
1233
+ })
1234
+
1235
+ it("uses the ACP prompter in rpc mode even when hasUI is true (acp wins over terminal)", async () => {
1236
+ // In rpc mode the ACP prompter (if present) is the source of truth for
1237
+ // permissions, even when hasUI is true. The terminal prompter (ui.select)
1238
+ // must NOT be called.
1239
+ const requests: string[] = []
1240
+ registerAcpPrompter(TEST_SESSION_ID, {
1241
+ request: async (req) => {
1242
+ requests.push(req.toolCallId)
1243
+ return { kind: "allow-once" }
1244
+ },
1245
+ })
1246
+ const harness = createPermissionsHarness(["bash"])
1247
+ const ctx = {
1248
+ ...createMockContext([]),
1249
+ mode: "rpc",
1250
+ hasUI: true,
1251
+ } as unknown as ExtensionContext
1252
+ const selectSpy = ctx.ui.select as unknown as ReturnType<typeof vi.fn>
1253
+ await harness.fire("session_start", {}, ctx)
1254
+
1255
+ const result = await harness.fire(
1256
+ "tool_call",
1257
+ { type: "tool_call", toolCallId: "tc-rpc-ui", toolName: "bash", input: { command: "touch rpc.txt" } },
1258
+ ctx,
1259
+ )
1260
+
1261
+ expect(result).toBeUndefined()
1262
+ expect(requests).toEqual(["tc-rpc-ui"])
1263
+ expect(selectSpy).not.toHaveBeenCalled()
1264
+ expect(classifyToolCall).not.toHaveBeenCalled()
1265
+ })
1266
+
1267
+ it("uses the ACP prompter in rpc mode when hasUI is false (headless rpc)", async () => {
1268
+ // Headless rpc still gets the ACP prompter if one is registered; this is
1269
+ // the same combination the existing "headless default mode" test covers,
1270
+ // but here it is explicitly driven by mode === "rpc" rather than just
1271
+ // mode === undefined + hasUI === false.
1272
+ const requests: string[] = []
1273
+ registerAcpPrompter(TEST_SESSION_ID, {
1274
+ request: async (req) => {
1275
+ requests.push(req.toolCallId)
1276
+ return { kind: "allow-once" }
1277
+ },
1278
+ })
1279
+ const harness = createPermissionsHarness(["bash"])
1280
+ const ctx = {
1281
+ ...createClassifierContext(),
1282
+ mode: "rpc",
1283
+ } as unknown as ExtensionContext
1284
+ await harness.fire("session_start", {}, ctx)
1285
+
1286
+ const result = await harness.fire(
1287
+ "tool_call",
1288
+ {
1289
+ type: "tool_call",
1290
+ toolCallId: "tc-rpc-headless",
1291
+ toolName: "bash",
1292
+ input: { command: "touch headless-rpc.txt" },
1293
+ },
1294
+ ctx,
1295
+ )
1296
+
1297
+ expect(result).toBeUndefined()
1298
+ expect(requests).toEqual(["tc-rpc-headless"])
1299
+ expect(classifyToolCall).not.toHaveBeenCalled()
1300
+ })
1301
+
1302
+ it("uses the terminal prompter in rpc mode when hasUI is true but no ACP prompter is registered", async () => {
1303
+ // With no ACP prompter registered, resolvePrompter falls through to
1304
+ // terminalPrompter(ctx) because hasUI is true — not the classifier.
1305
+ // The classifier is reserved for mode === "auto" or non-promptable
1306
+ // contexts, not for "rpc + ui + no acp". The mocked ui.select
1307
+ // returns undefined (empty selectResults), which terminalPrompter
1308
+ // surfaces as a denial.
1309
+ const harness = createPermissionsHarness(["bash"])
1310
+ const ctx = {
1311
+ ...createClassifierContext(),
1312
+ mode: "rpc",
1313
+ hasUI: true,
1314
+ } as unknown as ExtensionContext
1315
+ const selectSpy = ctx.ui.select as unknown as ReturnType<typeof vi.fn>
1316
+ await harness.fire("session_start", {}, ctx)
1317
+
1318
+ const result = await harness.fire(
1319
+ "tool_call",
1320
+ { type: "tool_call", toolCallId: "tc-rpc-no-acp", toolName: "bash", input: { command: "touch no-acp.txt" } },
1321
+ ctx,
1322
+ )
1323
+
1324
+ expect(selectSpy, "terminal prompter invoked via ctx.ui.select").toHaveBeenCalledTimes(1)
1325
+ expect(classifyToolCall, "classifier not invoked when hasUI is true").not.toHaveBeenCalled()
1326
+ expect(result).toEqual({ block: true, reason: "Declined by user" })
1327
+ })
1328
+ })
1329
+
1330
+ describe("checkCompoundCommand", () => {
1331
+ it("returns prompt for compound command with no rules", () => {
1332
+ const result = checkCompoundCommand('echo "hello" && whoami', [])
1333
+ expect(result.decision).toBe("prompt")
1334
+ expect(result.subcommands).toEqual(["echo hello", "whoami"])
1335
+ })
1336
+
1337
+ it("returns deny when subcommand matches deny rule", () => {
1338
+ const rules: Rule[] = [{ toolName: "bash", content: "ps *", behavior: "deny", source: "session" }]
1339
+ const result = checkCompoundCommand('echo "before" && ps aux && echo "after"', rules)
1340
+ expect(result.decision).toBe("deny")
1341
+ expect(result.deniedReason).toContain("ps aux")
1342
+ })
1343
+
1344
+ it("returns allow when all subcommands match allow rules", () => {
1345
+ const rules: Rule[] = [
1346
+ { toolName: "bash", content: "echo *", behavior: "allow", source: "session" },
1347
+ { toolName: "bash", content: "whoami *", behavior: "allow", source: "session" },
1348
+ ]
1349
+ const result = checkCompoundCommand('echo "test" && whoami', rules)
1350
+ expect(result.decision).toBe("allow")
1351
+ })
1352
+
1353
+ it("returns prompt when some subcommands lack rules", () => {
1354
+ const rules: Rule[] = [{ toolName: "bash", content: "echo *", behavior: "allow", source: "session" }]
1355
+ const result = checkCompoundCommand('echo "test" && whoami', rules)
1356
+ expect(result.decision).toBe("prompt")
1357
+ expect(result.subcommands).toEqual(["echo test", "whoami"])
1358
+ })
1359
+
1360
+ it("splits on &&, ||, and ;", () => {
1361
+ const result = checkCompoundCommand("echo a || echo b ; echo c && echo d", [])
1362
+ expect(result.subcommands).toEqual(["echo a", "echo b", "echo c", "echo d"])
1363
+ })
1364
+
1365
+ it("keeps pipes inside segments", () => {
1366
+ const result = checkCompoundCommand("echo a && cat file | grep x", [])
1367
+ expect(result.decision).toBe("prompt")
1368
+ expect(result.subcommands).toEqual(["echo a", "cat file | grep x"])
1369
+ })
1370
+
1371
+ it("returns deny for hard-blocked program in subcommand", () => {
1372
+ const result = checkCompoundCommand('echo "start" && sudo whoami', [])
1373
+ expect(result.decision).toBe("deny")
1374
+ expect(result.deniedReason).toContain("Hard-blocked")
1375
+ })
1376
+
1377
+ it("handles non-compound commands", () => {
1378
+ const result = checkCompoundCommand("echo hello", [])
1379
+ expect(result.decision).toBe("prompt")
1380
+ expect(result.subcommands).toBeUndefined()
1381
+ })
1382
+ })
1383
+
1384
+ describe("compound command with session rules", () => {
1385
+ let session: SessionMemory
1386
+
1387
+ beforeEach(() => {
1388
+ session = new SessionMemory()
1389
+ session.clear()
1390
+ })
1391
+
1392
+ it("session rules are checked correctly", () => {
1393
+ session.add({
1394
+ toolName: "bash",
1395
+ content: "echo *",
1396
+ behavior: "allow",
1397
+ source: "session",
1398
+ })
1399
+
1400
+ const rules = session.all()
1401
+ const result = checkCompoundCommand('echo "test" && whoami', rules)
1402
+
1403
+ expect(result.decision).toBe("prompt")
1404
+ expect(result.subcommands).toContain("echo test")
1405
+ expect(result.subcommands).toContain("whoami")
1406
+ })
1407
+
1408
+ it("all allowed subcommands result in allow decision", () => {
1409
+ session.add({
1410
+ toolName: "bash",
1411
+ content: "echo *",
1412
+ behavior: "allow",
1413
+ source: "session",
1414
+ })
1415
+ session.add({
1416
+ toolName: "bash",
1417
+ content: "whoami *",
1418
+ behavior: "allow",
1419
+ source: "session",
1420
+ })
1421
+
1422
+ const result = checkCompoundCommand('echo "test" && whoami', session.all())
1423
+ expect(result.decision).toBe("allow")
1424
+ })
1425
+
1426
+ it("deny rule takes precedence over allows", () => {
1427
+ session.add({
1428
+ toolName: "bash",
1429
+ content: "echo *",
1430
+ behavior: "allow",
1431
+ source: "session",
1432
+ })
1433
+ session.add({
1434
+ toolName: "bash",
1435
+ content: "ps *",
1436
+ behavior: "deny",
1437
+ source: "session",
1438
+ })
1439
+
1440
+ const result = checkCompoundCommand('echo "test" && ps aux', session.all())
1441
+ expect(result.decision).toBe("deny")
1442
+ })
1443
+
1444
+ it("complex compound with mixed operators", () => {
1445
+ session.add({ toolName: "bash", content: "echo *", behavior: "allow", source: "session" })
1446
+ session.add({ toolName: "bash", content: "whoami *", behavior: "allow", source: "session" })
1447
+ session.add({ toolName: "bash", content: "pwd *", behavior: "allow", source: "session" })
1448
+
1449
+ const result = checkCompoundCommand("echo a || whoami ; pwd", session.all())
1450
+ expect(result.decision).toBe("allow")
1451
+ })
1452
+ })
1453
+
1454
+ describe("handleCompoundConfirm", () => {
1455
+ let session: SessionMemory
1456
+ let activeAborts: Set<AbortController>
1457
+
1458
+ beforeEach(() => {
1459
+ session = new SessionMemory()
1460
+ session.clear()
1461
+ activeAborts = new Set()
1462
+ })
1463
+
1464
+ it("returns undefined for allow-all-once", async () => {
1465
+ const ctx = createMockContext(["Run all (once)"])
1466
+ const event = createMockEvent()
1467
+
1468
+ const result = await handleCompoundConfirm(event, {
1469
+ ctx,
1470
+ session,
1471
+ activeAborts,
1472
+ subcommands: ["echo a", "echo b"],
1473
+ })
1474
+
1475
+ expect(result).toBeUndefined()
1476
+ })
1477
+
1478
+ it("adds wildcard rules to session for allow-all-remember", async () => {
1479
+ const ctx = createMockContext(["Allow all from now on"])
1480
+ const event = createMockEvent()
1481
+
1482
+ const result = await handleCompoundConfirm(event, {
1483
+ ctx,
1484
+ session,
1485
+ activeAborts,
1486
+ subcommands: ["echo a", "whoami"],
1487
+ })
1488
+
1489
+ expect(result).toBeUndefined()
1490
+ expect(session.all()).toHaveLength(2)
1491
+ expect(session.all()[0].content).toBe("echo *")
1492
+ expect(session.all()[1].content).toBe("whoami *")
1493
+ })
1494
+
1495
+ it("inputs feedback for deny-with-feedback", async () => {
1496
+ const ctx = createMockContext(["No — tell the assistant what to do differently"])
1497
+ ctx.ui.input = vi.fn(async () => "Changed my mind")
1498
+ const event = createMockEvent()
1499
+
1500
+ const result = await handleCompoundConfirm(event, {
1501
+ ctx,
1502
+ session,
1503
+ activeAborts,
1504
+ subcommands: ["echo a"],
1505
+ })
1506
+
1507
+ expect(result).toEqual({
1508
+ block: true,
1509
+ reason: "The user declined this action before execution and said: Changed my mind",
1510
+ })
1511
+ })
1512
+
1513
+ it("returns block with feedback for deny-with-feedback", async () => {
1514
+ const ctx = createMockContext(["No — tell the assistant what to do differently", ""])
1515
+ ctx.ui.input = vi.fn(async () => "Use individual commands instead")
1516
+ const event = createMockEvent()
1517
+
1518
+ const result = await handleCompoundConfirm(event, {
1519
+ ctx,
1520
+ session,
1521
+ activeAborts,
1522
+ subcommands: ["echo a", "echo b"],
1523
+ })
1524
+
1525
+ expect(result).toEqual({
1526
+ block: true,
1527
+ reason: "The user declined this action before execution and said: Use individual commands instead",
1528
+ })
1529
+ })
1530
+
1531
+ it("returns block with default reason when deny-with-feedback is empty", async () => {
1532
+ const ctx = createMockContext(["No — tell the assistant what to do differently", ""])
1533
+ ctx.ui.input = vi.fn(async () => "")
1534
+ const event = createMockEvent()
1535
+
1536
+ const result = await handleCompoundConfirm(event, {
1537
+ ctx,
1538
+ session,
1539
+ activeAborts,
1540
+ subcommands: ["echo a", "echo b"],
1541
+ })
1542
+
1543
+ expect(result).toEqual({ block: true, reason: "Declined by user" })
1544
+ })
1545
+
1546
+ it("returns undefined for pick-per-subcommand when all subcommands already allowed", async () => {
1547
+ // Pre-add rules so all subcommands are allowed
1548
+ session.add({ toolName: "bash", content: "echo *", behavior: "allow", source: "session" })
1549
+ session.add({ toolName: "bash", content: "whoami *", behavior: "allow", source: "session" })
1550
+
1551
+ const ctx = createMockContext(["Pick permissions per subcommand"])
1552
+ const event = createMockEvent()
1553
+
1554
+ const result = await handleCompoundConfirm(event, {
1555
+ ctx,
1556
+ session,
1557
+ activeAborts,
1558
+ subcommands: ["echo a", "whoami"],
1559
+ })
1560
+
1561
+ expect(result).toBeUndefined()
1562
+ // No subcommand prompts should have been shown
1563
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1564
+ })
1565
+
1566
+ it("returns undefined for pick-per-subcommand when user approves each subcommand", async () => {
1567
+ const ctx = createMockContext(["Pick permissions per subcommand", "Yes — just this call", "Yes — just this call"])
1568
+ const event = createMockEvent()
1569
+
1570
+ const result = await handleCompoundConfirm(event, {
1571
+ ctx,
1572
+ session,
1573
+ activeAborts,
1574
+ subcommands: ["echo a", "whoami"],
1575
+ })
1576
+
1577
+ expect(result).toBeUndefined()
1578
+ expect(ctx.ui.select).toHaveBeenCalledTimes(3) // compound prompt + 2 subcommand prompts
1579
+ })
1580
+
1581
+ it("returns block when user denies a subcommand in pick-per-subcommand mode", async () => {
1582
+ const ctx = createMockContext(["Pick permissions per subcommand", "No — tell the assistant what to do differently"])
1583
+ ctx.ui.input = vi.fn(async () => "Please use echo separately")
1584
+ const event = createMockEvent()
1585
+
1586
+ const result = await handleCompoundConfirm(event, {
1587
+ ctx,
1588
+ session,
1589
+ activeAborts,
1590
+ subcommands: ["echo a", "whoami"],
1591
+ })
1592
+
1593
+ expect(result).toEqual({
1594
+ block: true,
1595
+ reason: "The user declined this action before execution and said: Please use echo separately",
1596
+ })
1597
+ })
1598
+
1599
+ it("returns block when subcommand prompt returns undefined in pick-per-subcommand mode", async () => {
1600
+ // When select returns undefined, falls through to deny behavior
1601
+ const ctx = createMockContext([
1602
+ "Pick permissions per subcommand",
1603
+ "Yes — just this call", // Approve first subcommand
1604
+ undefined, // Second subcommand prompt returns undefined
1605
+ ])
1606
+ const event = createMockEvent()
1607
+
1608
+ const result = await handleCompoundConfirm(event, {
1609
+ ctx,
1610
+ session,
1611
+ activeAborts,
1612
+ subcommands: ["echo a", "whoami"],
1613
+ })
1614
+
1615
+ expect(result).toEqual({ block: true, reason: "Declined by user" })
1616
+ })
1617
+
1618
+ it("returns undefined for empty subcommands array with allow-all-once", async () => {
1619
+ const ctx = createMockContext(["Run all (once)"])
1620
+ const event = createMockEvent()
1621
+
1622
+ const result = await handleCompoundConfirm(event, {
1623
+ ctx,
1624
+ session,
1625
+ activeAborts,
1626
+ subcommands: [],
1627
+ })
1628
+
1629
+ expect(result).toBeUndefined()
1630
+ // Empty array still prompts but with no subcommands listed
1631
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1632
+ })
1633
+
1634
+ it("returns undefined for single subcommand with allow-all-once", async () => {
1635
+ const ctx = createMockContext(["Run all (once)"])
1636
+ const event = createMockEvent()
1637
+
1638
+ const result = await handleCompoundConfirm(event, {
1639
+ ctx,
1640
+ session,
1641
+ activeAborts,
1642
+ subcommands: ["echo hello"],
1643
+ })
1644
+
1645
+ expect(result).toBeUndefined()
1646
+ expect(ctx.ui.select).toHaveBeenCalledTimes(1)
1647
+ })
1648
+
1649
+ it("returns block when a subcommand matches deny rule in pick-per-subcommand mode", async () => {
1650
+ session.add({ toolName: "bash", content: "whoami *", behavior: "allow", source: "session" })
1651
+ // Add deny rule for echo
1652
+ session.add({ toolName: "bash", content: "echo *", behavior: "deny", source: "session" })
1653
+
1654
+ const ctx = createMockContext(["Pick permissions per subcommand"])
1655
+ const event = createMockEvent()
1656
+
1657
+ const result = await handleCompoundConfirm(event, {
1658
+ ctx,
1659
+ session,
1660
+ activeAborts,
1661
+ subcommands: ["echo a", "whoami"],
1662
+ })
1663
+
1664
+ expect(result).toEqual({ block: true, reason: "Subcommand blocked by rule: echo a" })
1665
+ })
1666
+
1667
+ it("remembers subcommand permission in pick-per-subcommand mode", async () => {
1668
+ // No pre-existing rules - both subcommands need approval
1669
+ // The label for bash subcommands is "bash(command)" via recommendScope
1670
+ // We use assert to dynamically check what label the implementation uses
1671
+ const mockSelect = vi.fn()
1672
+ let yesRememberLabel = ""
1673
+ mockSelect.mockImplementation(async (_title: string, choices: string[]) => {
1674
+ // Find the "Yes — don't ask again" choice that matches
1675
+ yesRememberLabel = choices.find((c) => c.includes("don't ask again")) || ""
1676
+ if (mockSelect.mock.calls.length === 1) return "Pick permissions per subcommand"
1677
+ if (mockSelect.mock.calls.length === 2) return "Yes — just this call" // First subcommand
1678
+ return yesRememberLabel // Second subcommand - remember it
1679
+ })
1680
+
1681
+ const ctx = createMockContext([], TEST_SESSION_ID, { uiContext: { select: mockSelect } })
1682
+
1683
+ const event = createMockEvent()
1684
+
1685
+ const result = await handleCompoundConfirm(event, {
1686
+ ctx,
1687
+ session,
1688
+ activeAborts,
1689
+ subcommands: ["echo hello", "whoami"],
1690
+ })
1691
+
1692
+ expect(result).toBeUndefined()
1693
+ // Should have added a session rule for whoami
1694
+ expect(session.all().length).toBeGreaterThanOrEqual(1)
1695
+ })
1696
+
1697
+ it("returns block with default reason for unrecognized choice", async () => {
1698
+ // Mock returns an unrecognized choice
1699
+ const ctx = createMockContext(["Unknown choice"])
1700
+ const event = createMockEvent()
1701
+
1702
+ const result = await handleCompoundConfirm(event, {
1703
+ ctx,
1704
+ session,
1705
+ activeAborts,
1706
+ subcommands: ["echo a"],
1707
+ })
1708
+
1709
+ expect(result).toEqual({ block: true, reason: "Declined by user" })
1710
+ })
1711
+ })
1712
+
1713
+ describe("compound command auto-mode fall-through", () => {
1714
+ it("read-only compound returns prompt from checkCompoundCommand so the handler can approve it", () => {
1715
+ // The early gate in the handler ONLY short-circuits on allow/deny;
1716
+ // "prompt" falls through to evaluateRules → read-only auto-approve.
1717
+ // For ls && pwd, isReadOnlyBashCommand returns true, so the handler
1718
+ // silently approves it. checkCompoundCommand must NOT block it.
1719
+ const result = checkCompoundCommand("ls && pwd", [])
1720
+ expect(result.decision).toBe("prompt")
1721
+ expect(result.subcommands).toEqual(["ls", "pwd"])
1722
+ })
1723
+
1724
+ it("hard-blocked compound is denied by the early gate (not auto-mode)", () => {
1725
+ const result = checkCompoundCommand("sudo whoami && ls", [])
1726
+ expect(result.decision).toBe("deny")
1727
+ expect(result.deniedReason).toContain("Hard-blocked")
1728
+ })
1729
+
1730
+ it("explicitly-allowed compound is allowed by the early gate (no auto-mode needed)", () => {
1731
+ const rules: Rule[] = [
1732
+ { toolName: "bash", content: "ls *", behavior: "allow", source: "session" },
1733
+ { toolName: "bash", content: "pwd", behavior: "allow", source: "session" },
1734
+ ]
1735
+ const result = checkCompoundCommand("ls -la && pwd", rules)
1736
+ expect(result.decision).toBe("allow")
1737
+ })
1738
+ })
1739
+
1740
+ describe("subagent inherits parent session permission mode", () => {
1741
+ const PARENT_SESSION_ID = "parent-acp-session-42"
1742
+ const CHILD_SESSION_ID = "child-subagent-session-99"
1743
+
1744
+ afterEach(() => {
1745
+ notifyFermentActive(false)
1746
+ unregisterSessionPermissionFlagController(CHILD_SESSION_ID)
1747
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${PARENT_SESSION_ID}`)
1748
+ Reflect.deleteProperty(process.env, `${PERMISSIONS_ENV_KEY}_${CHILD_SESSION_ID}`)
1749
+ Reflect.deleteProperty(process.env, PARENT_SESSION_ID_ENV_KEY)
1750
+ Reflect.deleteProperty(process.env, PERMISSIONS_ENV_KEY)
1751
+ vi.unstubAllEnvs()
1752
+ })
1753
+
1754
+ it("reads mode from IKIE_PERMISSIONS_<parentSessionId> when IKIE_PARENT_SESSION_ID is set", async () => {
1755
+ process.env[`${PERMISSIONS_ENV_KEY}_${PARENT_SESSION_ID}`] = "plan"
1756
+ process.env[PARENT_SESSION_ID_ENV_KEY] = PARENT_SESSION_ID
1757
+ Reflect.deleteProperty(process.env, PERMISSIONS_ENV_KEY)
1758
+
1759
+ // Calling createPermissionsHarness re-invokes permissionsExtension(pi),
1760
+ // which captures permissionsEnvFlag from process.env at construction time.
1761
+ const harness = createPermissionsHarness(["read", "write", "bash"])
1762
+
1763
+ // Fire session_start with the CHILD's own session ID (different from parent).
1764
+ const childCtx = {
1765
+ ...createMockContext([]),
1766
+ sessionManager: { getSessionId: () => CHILD_SESSION_ID },
1767
+ } as unknown as ExtensionContext
1768
+ await harness.fire("session_start", {}, childCtx)
1769
+
1770
+ // The child's runtime mode should be "plan", inherited from the parent session.
1771
+ expect(getPermissionMode(CHILD_SESSION_ID)).toEqual({ mode: "plan", source: "user" })
1772
+ })
1773
+
1774
+ it("parent session key takes precedence over base IKIE_PERMISSIONS", async () => {
1775
+ process.env[PERMISSIONS_ENV_KEY] = "auto"
1776
+ process.env[`${PERMISSIONS_ENV_KEY}_${PARENT_SESSION_ID}`] = "plan"
1777
+ process.env[PARENT_SESSION_ID_ENV_KEY] = PARENT_SESSION_ID
1778
+
1779
+ const harness = createPermissionsHarness(["read", "write", "bash"])
1780
+
1781
+ const childCtx = {
1782
+ ...createMockContext([]),
1783
+ sessionManager: { getSessionId: () => CHILD_SESSION_ID },
1784
+ } as unknown as ExtensionContext
1785
+ await harness.fire("session_start", {}, childCtx)
1786
+
1787
+ // Parent session key takes precedence.
1788
+ expect(getPermissionMode(CHILD_SESSION_ID)).toEqual({ mode: "plan", source: "user" })
1789
+ })
1790
+
1791
+ it("falls back to config default when neither IKIE_PERMISSIONS nor parent session key is set", async () => {
1792
+ Reflect.deleteProperty(process.env, PERMISSIONS_ENV_KEY)
1793
+ Reflect.deleteProperty(process.env, PARENT_SESSION_ID_ENV_KEY)
1794
+
1795
+ const harness = createPermissionsHarness(["read", "write", "bash"])
1796
+
1797
+ const childCtx = {
1798
+ ...createMockContext([]),
1799
+ sessionManager: { getSessionId: () => CHILD_SESSION_ID },
1800
+ } as unknown as ExtensionContext
1801
+ await harness.fire("session_start", {}, childCtx)
1802
+
1803
+ expect(getPermissionMode(CHILD_SESSION_ID)).toEqual({ mode: "default", source: "user" })
1804
+ })
1805
+
1806
+ it("child applies plan-mode tool gating when inheriting plan from parent", async () => {
1807
+ process.env[`${PERMISSIONS_ENV_KEY}_${PARENT_SESSION_ID}`] = "plan"
1808
+ process.env[PARENT_SESSION_ID_ENV_KEY] = PARENT_SESSION_ID
1809
+ Reflect.deleteProperty(process.env, PERMISSIONS_ENV_KEY)
1810
+
1811
+ const harness = createPermissionsHarness(["read", "write", "bash", "grep"])
1812
+
1813
+ const childCtx = {
1814
+ ...createMockContext([]),
1815
+ sessionManager: { getSessionId: () => CHILD_SESSION_ID },
1816
+ } as unknown as ExtensionContext
1817
+ await harness.fire("session_start", {}, childCtx)
1818
+
1819
+ // Plan mode should hide write-capable tools.
1820
+ expect(harness.activeTools().sort()).toEqual(["bash", "grep", "read"])
1821
+ })
1822
+ })