@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,2226 @@
1
+ /**
2
+ * ikie sub-agents.
3
+ *
4
+ * Tools:
5
+ * Agent - LLM-callable: spawn a sub-agent
6
+ * resume_subagent - LLM-callable: continue an existing sub-agent session
7
+ * get_subagent_result - LLM-callable: check background agent status/result
8
+ * steer_subagent - LLM-callable: send a steering message to a running agent
9
+ *
10
+ * Commands:
11
+ * /agents - Interactive agent management menu
12
+ */
13
+
14
+ import { existsSync, mkdirSync, readFileSync, unlinkSync } from "node:fs"
15
+ import { join } from "node:path"
16
+ import {
17
+ type ExtensionAPI,
18
+ type ExtensionCommandContext,
19
+ type ExtensionContext,
20
+ defineTool,
21
+ getAgentDir,
22
+ } from "@earendil-works/pi-coding-agent"
23
+ import { Text } from "@earendil-works/pi-tui"
24
+ import { Type } from "typebox"
25
+ import { isToolExpanded, registerToolCall } from "../../expand-state.js"
26
+ import { filterThinkingForDisplay } from "../hide-thinking.js"
27
+ import { sessionHasImages } from "../model-guard.js"
28
+ import { IKIE_DEV_PROVIDER, MODEL_CAPABILITIES } from "../orchestration/model-registry/index.js"
29
+ import { trackSubagentSpawned } from "../telemetry/index.js"
30
+ import { AgentManager, buildAgentOutcome } from "./manager/agent-manager.js"
31
+ import {
32
+ getAgentConversation,
33
+ getDefaultMaxTurns,
34
+ getGraceTurns,
35
+ normalizeMaxTurns,
36
+ setDefaultMaxTurns,
37
+ setGraceTurns,
38
+ steerAgent,
39
+ } from "./manager/agent-runner.js"
40
+ import {
41
+ type BudgetRetryBlock,
42
+ type BudgetRetryCandidate,
43
+ createBudgetRetryBlockFromCompletion,
44
+ shouldBlockBudgetRetry,
45
+ } from "./manager/budget-retry-guard.js"
46
+ import { GroupJoinManager } from "./manager/group-join.js"
47
+ import { createOutputFilePath, streamToOutputFile, writeInitialEntry } from "./manager/output-file.js"
48
+ import { prepareAgentSessionFile } from "./manager/session-file.js"
49
+ import { type LifetimeUsage, addUsage, getLifetimeTotal, getSessionContextPercent } from "./manager/usage.js"
50
+ import {
51
+ BUILTIN_TOOL_NAMES,
52
+ getAgentConfig,
53
+ getAllTypes,
54
+ getAvailableTypes,
55
+ getDefaultAgentNames,
56
+ getUserAgentNames,
57
+ registerAgents,
58
+ resolveType,
59
+ } from "./personas/agent-types.js"
60
+ import { loadCustomAgents } from "./personas/custom-agents.js"
61
+ import {
62
+ AGENT_GENERAL_PURPOSE,
63
+ type AgentAbortReason,
64
+ type AgentConfig,
65
+ type AgentOutcome,
66
+ type AgentRecord,
67
+ type AgentTaskRef,
68
+ type AgentVisibility,
69
+ type JoinMode,
70
+ type NotificationDetails,
71
+ type SubagentType,
72
+ } from "./personas/types.js"
73
+ import { resolveAgentInvocationConfig, resolveJoinMode } from "./resolution/invocation-config.js"
74
+ import { type ModelRegistry, resolveModel } from "./resolution/model-resolver.js"
75
+ import { registerResumeSubagentTool } from "./resume-tool.js"
76
+ import { type SubagentsSettings, applyAndEmitLoaded, saveAndEmitChanged } from "./settings.js"
77
+ import {
78
+ type AgentActivity,
79
+ type AgentDetails,
80
+ AgentWidget,
81
+ SPINNER,
82
+ type Theme,
83
+ type UICtx,
84
+ describeActivity,
85
+ formatDuration,
86
+ formatMs,
87
+ formatTokens,
88
+ formatTurns,
89
+ getDisplayName,
90
+ } from "./ui/agent-widget.js"
91
+
92
+ // ---- Shared helpers ----
93
+
94
+ // Give aborted sub-agents a bounded chance to reach runner finally blocks.
95
+ // If they do not settle, manager.dispose() still runs hard-fallback cleanup.
96
+ const SUBAGENT_SHUTDOWN_WAIT_MS = 5_000
97
+
98
+ export const AGENT_TOOL_GUIDELINES = `Guidelines:
99
+ - If the user explicitly asks to use the Agent tool, call Agent exactly once with the requested agent type and token_budget. Do not refuse or preflight the budget in prose; let the tool enforce it.
100
+ - For parallel work, use run_in_background: true on each agent. Foreground calls run sequentially — only one executes at a time.
101
+ - Keep each Agent call focused on a single outcome. Agents succeed when given 1–2 files or one mechanical change; they time out when asked to perform multi-file patch-and-verify workflows in one call. Split large tasks into smaller, independent Agent calls.
102
+ - Use Explore for bounded fact-finding that answers one decision-relevant question for the parent orchestrator. Before delegating requested files, directories, or symbols to Explore, do cheap parent-side discovery/existence checks with available read-only tools so the prompt starts from real anchors.
103
+ - Scope every Explore prompt with exact starting files and/or directories, prioritized symbols/search terms, one question to answer, allowed expansion rules for when it may follow imports/callers/related tests, and a qualitative stop condition tied to that question. Keep the scope bounded by relevance, not by a hard maximum file count.
104
+ - Explore is read-only and should return decision-ready findings to you. Do not ask Explore agents to write reports, create docs, edit files, save findings to disk, or produce polished artifacts. You should consume the returned findings directly and decide the next step.
105
+ - If you cannot provide concrete starting points for Explore, run a cheap parent-side search first or ask a narrower follow-up instead of sending a broad exploration prompt.
106
+ - Good Explore prompt: "Inspect /app/src/program.cbl. Answer only: what are the SELECT/FD entries and PIC-derived record widths? Follow no procedure logic. Stop once record layouts are known. Return decision-ready findings to the parent; do not write files."
107
+ - Bad Explore prompt: "Analyze the COBOL program and write a complete implementation spec."
108
+ - Use Plan for architecture and implementation planning.
109
+ - Use Researcher for web/docs research with cited sources.
110
+ - Use General-Purpose for complex tasks that need file editing.
111
+ - Provide clear, detailed prompts so the agent can work autonomously.
112
+ - Agent results are returned as text — summarize them for the user.
113
+ - Use run_in_background for work you don't need immediately. You will be notified when it completes.
114
+ - Use resume with an agent ID to continue a previous agent's work.
115
+ - Use steer_subagent to send mid-run messages to a running background agent.
116
+ - Use thinking to request an extended thinking level when the selected agent profile does not fix one.
117
+ - Use token_budget to cap the agent's cumulative output token usage when the task scope is small or bounded. Only output tokens (tokens generated by the agent) count toward the budget; input tokens do not.
118
+ - Treat token_budget as a hard caller constraint. If an agent aborts because of token_budget, do not retry with a higher budget unless the user explicitly asks.
119
+ - Use max_duration for long-running agents that might hang or run indefinitely (e.g., build tasks with many test iterations, background tasks with unpredictable completion times). Timeouts protect against stalled work without relying on token budgets. Short-lived agents (single queries, simple edits) typically do not need a duration limit.
120
+ - Use inherit_context if the agent needs the parent conversation history.`
121
+
122
+ export const AGENT_MODEL_PARAMETER_DESCRIPTION =
123
+ 'Model identifier for the spawned agent. If omitted, the agent uses the current session model. Follow your system prompt\'s delegation rules when deciding whether to provide this. Format "provider/modelId" (e.g. "ikie-dev/minimax-m2.7"). Partial model IDs such as "kimi" or "nemotron" are accepted when unambiguous; specify the full versioned model ID when the exact version matters.'
124
+
125
+ function textResult<T = AgentDetails>(msg: string, details?: T) {
126
+ return { content: [{ type: "text" as const, text: msg }], details: details as unknown }
127
+ }
128
+
129
+ interface GetSubagentResultDetails {
130
+ agentId: string
131
+ displayName: string
132
+ description: string
133
+ status: string
134
+ visibility?: AgentVisibility
135
+ abortReason?: AgentAbortReason
136
+ toolUses: number
137
+ tokens: string
138
+ contextPercent: number | null
139
+ compactionCount?: number
140
+ durationMs?: number
141
+ error?: string
142
+ bodyText: string
143
+ agentOutcome?: AgentOutcome
144
+ }
145
+
146
+ function formatAgentOutcomeBlock(outcome: AgentOutcome | undefined): string {
147
+ if (!outcome) return ""
148
+ return `\n\nagent_outcome:\n${JSON.stringify(outcome, null, 2)}`
149
+ }
150
+
151
+ function formatAgentBodyForDisplay(raw: string): string {
152
+ const cleaned = filterThinkingForDisplay(raw)
153
+ return cleaned.replace(/\n{3,}/g, "\n\n").trimEnd()
154
+ }
155
+
156
+ function getSubagentResultIcon(status: string, theme: Theme): string {
157
+ switch (status) {
158
+ case "running":
159
+ case "queued":
160
+ return theme.fg("accent", SPINNER[0])
161
+ case "error":
162
+ case "aborted":
163
+ return theme.fg("error", "✗")
164
+ case "stopped":
165
+ return theme.fg("dim", "■")
166
+ case "steered":
167
+ return theme.fg("warning", "✓")
168
+ default:
169
+ return theme.fg("success", "✓")
170
+ }
171
+ }
172
+
173
+ function extractImagePathsFromSession(ctx: ExtensionContext): string[] {
174
+ const entries = ctx.sessionManager.getBranch()
175
+ const imagePaths = new Set<string>()
176
+ const readPathsByToolCallId = new Map<string, string>()
177
+
178
+ for (const entry of entries) {
179
+ if (entry.type !== "message") continue
180
+ const msg = entry.message
181
+
182
+ if (msg.role === "assistant") {
183
+ const content = msg.content
184
+ if (Array.isArray(content)) {
185
+ for (const block of content) {
186
+ if (block.type !== "toolCall") continue
187
+ const toolBlock = block as { id?: string; name?: string; arguments?: Record<string, unknown> }
188
+ if (toolBlock.name === "read" && toolBlock.id && typeof toolBlock.arguments?.path === "string") {
189
+ readPathsByToolCallId.set(toolBlock.id, toolBlock.arguments.path)
190
+ }
191
+ }
192
+ }
193
+ } else if (msg.role === "toolResult") {
194
+ const toolResultMsg = msg as { toolCallId?: string; content?: unknown[] }
195
+ const content = toolResultMsg.content
196
+ if (Array.isArray(content)) {
197
+ const hasImage = content.some((block) => (block as { type?: string }).type === "image")
198
+ const path = toolResultMsg.toolCallId ? readPathsByToolCallId.get(toolResultMsg.toolCallId) : undefined
199
+ if (hasImage && path) {
200
+ imagePaths.add(path)
201
+ }
202
+ }
203
+ if (toolResultMsg.toolCallId) {
204
+ readPathsByToolCallId.delete(toolResultMsg.toolCallId)
205
+ }
206
+ }
207
+ }
208
+
209
+ return Array.from(imagePaths)
210
+ }
211
+
212
+ export function summaryForStatus(status: string, error?: string, abortReason?: AgentAbortReason): string {
213
+ switch (status) {
214
+ case "running":
215
+ case "queued":
216
+ return "Still running"
217
+ case "completed":
218
+ return "Done"
219
+ case "steered":
220
+ return "Wrapped up (turn limit)"
221
+ case "aborted":
222
+ return getAbortLabel(abortReason)
223
+ case "stopped":
224
+ return "Stopped"
225
+ case "error":
226
+ return `Error: ${error?.split("\n")[0]?.trim() || "unknown"}`
227
+ default:
228
+ return status
229
+ }
230
+ }
231
+
232
+ function formatLifetimeTokens(o: { lifetimeUsage: LifetimeUsage }): string {
233
+ const t = getLifetimeTotal(o.lifetimeUsage)
234
+ return t > 0 ? formatTokens(t) : ""
235
+ }
236
+
237
+ function createActivityTracker(maxTurns?: number, onStreamUpdate?: () => void) {
238
+ const state: AgentActivity = {
239
+ activeTools: new Map(),
240
+ toolUses: 0,
241
+ turnCount: 1,
242
+ maxTurns,
243
+ responseText: "",
244
+ session: undefined,
245
+ lifetimeUsage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
246
+ }
247
+
248
+ const callbacks = {
249
+ onToolActivity: (activity: { type: "start" | "end"; toolName: string }) => {
250
+ if (activity.type === "start") {
251
+ state.activeTools.set(`${activity.toolName}_${Date.now()}`, activity.toolName)
252
+ } else {
253
+ for (const [key, name] of state.activeTools) {
254
+ if (name === activity.toolName) {
255
+ state.activeTools.delete(key)
256
+ break
257
+ }
258
+ }
259
+ state.toolUses++
260
+ }
261
+ onStreamUpdate?.()
262
+ },
263
+ onTextDelta: (_delta: string, fullText: string) => {
264
+ state.responseText = fullText
265
+ onStreamUpdate?.()
266
+ },
267
+ onTurnEnd: (turnCount: number) => {
268
+ state.turnCount = turnCount
269
+ onStreamUpdate?.()
270
+ },
271
+ onSessionCreated: (session: unknown) => {
272
+ state.session = session as AgentActivity["session"]
273
+ },
274
+ onAssistantUsage: (usage: LifetimeUsage) => {
275
+ addUsage(state.lifetimeUsage, usage)
276
+ onStreamUpdate?.()
277
+ },
278
+ }
279
+
280
+ return { state, callbacks }
281
+ }
282
+
283
+ function getAbortLabel(reason?: AgentAbortReason): string {
284
+ switch (reason) {
285
+ case "max_turns":
286
+ return "Aborted (max turns exceeded)"
287
+ case "token_budget":
288
+ return "Aborted (token budget exceeded)"
289
+ case "inactivity":
290
+ return "Aborted (inactivity timeout)"
291
+ case "max_duration":
292
+ return "Aborted (duration limit exceeded)"
293
+ default:
294
+ return "Aborted"
295
+ }
296
+ }
297
+
298
+ function getAbortNote(reason?: AgentAbortReason): string {
299
+ switch (reason) {
300
+ case "max_turns":
301
+ return " (aborted - max turns exceeded, output may be incomplete)"
302
+ case "token_budget":
303
+ return " (aborted - token budget exceeded, output may be incomplete)"
304
+ case "inactivity":
305
+ return " (aborted - agent became unresponsive, output may be incomplete)"
306
+ case "max_duration":
307
+ return " (aborted - wall-clock duration limit exceeded, output may be incomplete)"
308
+ default:
309
+ return " (aborted, output may be incomplete)"
310
+ }
311
+ }
312
+
313
+ function getStatusLabel(status: string, error?: string, abortReason?: AgentAbortReason): string {
314
+ switch (status) {
315
+ case "error":
316
+ return `Error: ${error ?? "unknown"}`
317
+ case "aborted":
318
+ return getAbortLabel(abortReason)
319
+ case "steered":
320
+ return "Wrapped up (turn limit)"
321
+ case "stopped":
322
+ return "Stopped"
323
+ default:
324
+ return "Done"
325
+ }
326
+ }
327
+
328
+ function getStatusNote(status: string, abortReason?: AgentAbortReason): string {
329
+ if (status === "error")
330
+ return "\nThe agent encountered an error. Review the error message and partial results before deciding how to proceed."
331
+ if (status === "stopped") return "\nThe agent was manually stopped by the user."
332
+ if (status === "aborted" && abortReason === "token_budget")
333
+ return "\nThe agent ran out of its token budget. See agent_outcome.recovery_guidance for next steps."
334
+ if (status === "aborted" && abortReason === "inactivity")
335
+ return "\nThe agent stopped producing output and was terminated. See agent_outcome.recovery_guidance for next steps."
336
+ if (status === "aborted" && abortReason === "max_duration")
337
+ return "\nThe agent exceeded its maximum allowed duration. See agent_outcome.recovery_guidance for next steps."
338
+ if (status === "aborted" && abortReason === "max_turns")
339
+ return "\nThe agent exhausted its turn budget. See agent_outcome.recovery_guidance for next steps."
340
+ return ""
341
+ }
342
+
343
+ function getStatusInstruction(status: string, abortReason?: AgentAbortReason): string {
344
+ if (status === "aborted" && abortReason === "token_budget") {
345
+ return "\nThe agent ran out of its token budget. Inspect the worker report before acting. Use resume_subagent with a bounded steering prompt when remaining_steps are a direct continuation; spawn a narrower replacement Agent when remaining_steps have a clean task boundary; use resume_subagent with purpose finalize_report if the report is missing; or stop/report if blocked. Do not blindly retry the same prompt."
346
+ }
347
+ if (status === "aborted" && abortReason === "inactivity") {
348
+ return "\nThe agent stopped producing output and was terminated. Inspect the worker report before acting; this may indicate a stall. Resume only with a steering prompt that continues the same thread while avoiding the stalled operation, or spawn a narrower replacement Agent if remaining_steps have a clean task boundary."
349
+ }
350
+ if (status === "aborted" && abortReason === "max_duration") {
351
+ return "\nThe agent exceeded its maximum allowed wall-clock duration and was terminated. Inspect the worker report before acting; this may indicate a hang or blocked command. Resume only with a bounded steering prompt that avoids the stalled operation and directly continues the same thread, or spawn a follow-up Agent scoped to a narrower task boundary. Do NOT implement the remaining work yourself — the orchestrator must delegate, not build."
352
+ }
353
+ if (status === "aborted" && abortReason === "max_turns") {
354
+ return "\nThe agent exhausted its turn budget. Do not mark delegated work complete from an aborted result. Inspect the worker report first: use resume_subagent with a bounded steering prompt when remaining_steps are a direct continuation; spawn a narrower linked replacement Agent when remaining_steps have a clean task boundary; use resume_subagent with purpose finalize_report if the report is missing; or stop/report if blocked. Do NOT implement the remaining work yourself — the orchestrator must delegate, not build."
355
+ }
356
+ return ""
357
+ }
358
+
359
+ function escapeXml(s: string): string {
360
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
361
+ }
362
+
363
+ function formatTaskNotification(record: AgentRecord, resultMaxLen: number): string {
364
+ const status = getStatusLabel(record.status, record.error, record.abortReason)
365
+ const durationMs = record.completedAt ? record.completedAt - record.startedAt : 0
366
+ const totalTokens = getLifetimeTotal(record.lifetimeUsage)
367
+ const contextPercent = getSessionContextPercent(record.session)
368
+ const ctxXml = contextPercent !== null ? `<context_percent>${Math.round(contextPercent)}</context_percent>` : ""
369
+ const compactXml = record.compactionCount ? `<compactions>${record.compactionCount}</compactions>` : ""
370
+
371
+ const resultPreview = record.result
372
+ ? record.result.length > resultMaxLen
373
+ ? `${record.result.slice(0, resultMaxLen)}\n...(truncated, use get_subagent_result for full output)`
374
+ : record.result
375
+ : "No output."
376
+
377
+ return [
378
+ "<task-notification>",
379
+ `<task-id>${record.id}</task-id>`,
380
+ record.toolCallId ? `<tool-use-id>${escapeXml(record.toolCallId)}</tool-use-id>` : null,
381
+ record.outputFile ? `<output-file>${escapeXml(record.outputFile)}</output-file>` : null,
382
+ `<status>${escapeXml(status)}</status>`,
383
+ `<summary>Agent "${escapeXml(record.description)}" ${record.status}</summary>`,
384
+ `<result>${escapeXml(resultPreview)}</result>`,
385
+ `<usage><total_tokens>${totalTokens}</total_tokens><tool_uses>${record.toolUses}</tool_uses>${ctxXml}${compactXml}<duration_ms>${durationMs}</duration_ms></usage>`,
386
+ "</task-notification>",
387
+ ]
388
+ .filter(Boolean)
389
+ .join("\n")
390
+ }
391
+
392
+ function buildDetails(
393
+ base: Pick<AgentDetails, "displayName" | "description" | "subagentType" | "modelName" | "tags" | "visibility">,
394
+ record: AgentRecord,
395
+ activity?: AgentActivity,
396
+ overrides?: Partial<AgentDetails>,
397
+ ): AgentDetails {
398
+ return {
399
+ ...base,
400
+ toolUses: record.toolUses,
401
+ tokens: formatLifetimeTokens(record),
402
+ tokenUsage: {
403
+ input: record.lifetimeUsage.input,
404
+ output: record.lifetimeUsage.output,
405
+ cacheRead: record.lifetimeUsage.cacheRead,
406
+ cacheWrite: record.lifetimeUsage.cacheWrite,
407
+ },
408
+ turnCount: activity?.turnCount,
409
+ maxTurns: activity?.maxTurns,
410
+ durationMs: (record.completedAt ?? Date.now()) - record.startedAt,
411
+ status: record.status as AgentDetails["status"],
412
+ agentId: record.id,
413
+ sessionFile: record.sessionFile,
414
+ error: record.error,
415
+ abortReason: record.abortReason,
416
+ agentOutcome: record.latestOutcome,
417
+ ...overrides,
418
+ }
419
+ }
420
+
421
+ function buildNotificationDetails(
422
+ record: AgentRecord,
423
+ resultMaxLen: number,
424
+ activity?: AgentActivity,
425
+ ): NotificationDetails {
426
+ const totalTokens = getLifetimeTotal(record.lifetimeUsage)
427
+
428
+ return {
429
+ id: record.id,
430
+ description: record.description,
431
+ status: record.status,
432
+ abortReason: record.abortReason,
433
+ toolUses: record.toolUses,
434
+ turnCount: activity?.turnCount ?? 0,
435
+ maxTurns: activity?.maxTurns,
436
+ totalTokens,
437
+ durationMs: record.completedAt ? record.completedAt - record.startedAt : 0,
438
+ outputFile: record.outputFile,
439
+ error: record.error,
440
+ resultPreview: record.result
441
+ ? record.result.length > resultMaxLen
442
+ ? `${record.result.slice(0, resultMaxLen)}...`
443
+ : record.result
444
+ : "No output.",
445
+ }
446
+ }
447
+
448
+ let activeManager: AgentManager | undefined
449
+ let budgetRetryBlock: BudgetRetryBlock | undefined
450
+ const budgetRetryCandidates = new Map<string, BudgetRetryCandidate>()
451
+
452
+ function blockBudgetRetryIfNeeded(record: AgentRecord, candidate: BudgetRetryCandidate | undefined): void {
453
+ const block = createBudgetRetryBlockFromCompletion(candidate, record)
454
+ if (block) budgetRetryBlock = block
455
+ }
456
+
457
+ export function getActiveAgentCount(): number {
458
+ return activeManager?.getRunningCount() ?? 0
459
+ }
460
+
461
+ export function getActiveAgentModelIds(): string[] {
462
+ if (!activeManager) return []
463
+ return activeManager
464
+ .listAgents()
465
+ .filter((a) => a.status === "running" || a.status === "queued")
466
+ .map((a) => a.modelId)
467
+ .filter((id): id is string => id != null)
468
+ }
469
+
470
+ /**
471
+ * Returns a read-only snapshot of the agent record for task validation.
472
+ * The returned object is a shallow copy — nested objects (session, lifetimeUsage,
473
+ * etc.) are shared references. Callers MUST NOT mutate nested properties;
474
+ * doing so would corrupt the live agent's state in the manager.
475
+ */
476
+ export function getAgentRecordForTaskValidation(id: string): Readonly<AgentRecord> | undefined {
477
+ const record = activeManager?.getRecord(id)
478
+ if (!record || record.visibility === "system") return undefined
479
+ return { ...record, latestOutcome: record.latestOutcome ?? buildAgentOutcome(record) }
480
+ }
481
+
482
+ function readAgentTaskRef(params: Record<string, unknown>): AgentTaskRef | undefined {
483
+ const ref = params.task_ref as Partial<AgentTaskRef> | undefined
484
+ if (
485
+ ref?.kind === "ferment_step" &&
486
+ typeof ref.ferment_id === "string" &&
487
+ typeof ref.phase_id === "string" &&
488
+ typeof ref.step_id === "string"
489
+ ) {
490
+ return {
491
+ kind: "ferment_step",
492
+ ferment_id: ref.ferment_id,
493
+ phase_id: ref.phase_id,
494
+ step_id: ref.step_id,
495
+ ...(ref.budget_tier === "narrow" || ref.budget_tier === "standard" || ref.budget_tier === "complex"
496
+ ? { budget_tier: ref.budget_tier }
497
+ : {}),
498
+ }
499
+ }
500
+ return undefined
501
+ }
502
+
503
+ export default function (pi: ExtensionAPI) {
504
+ pi.on("message_start", (event) => {
505
+ if (event.message.role === "user") budgetRetryBlock = undefined
506
+ })
507
+
508
+ // ---- Register custom notification renderer ----
509
+ pi.registerMessageRenderer<NotificationDetails>("subagent-notification", (message, { expanded }, theme) => {
510
+ const d = message.details
511
+ if (!d) return undefined
512
+
513
+ function renderOne(d: NotificationDetails): string {
514
+ const isError = d.status === "error" || d.status === "stopped" || d.status === "aborted"
515
+ const icon = isError ? theme.fg("error", "✗") : theme.fg("success", "✓")
516
+ const statusText =
517
+ d.status === "aborted"
518
+ ? getAbortLabel(d.abortReason)
519
+ : isError
520
+ ? d.status
521
+ : d.status === "steered"
522
+ ? "completed (steered)"
523
+ : "completed"
524
+
525
+ let line = `${icon} ${theme.bold(d.description)} ${theme.fg("dim", statusText)}`
526
+
527
+ const parts: string[] = []
528
+ if (d.turnCount > 0) parts.push(formatTurns(d.turnCount, d.maxTurns))
529
+ if (d.toolUses > 0) parts.push(`${d.toolUses} tool use${d.toolUses === 1 ? "" : "s"}`)
530
+ if (d.totalTokens > 0) parts.push(formatTokens(d.totalTokens))
531
+ if (d.durationMs > 0) parts.push(formatMs(d.durationMs))
532
+ if (parts.length) {
533
+ line += `\n ${parts.map((p) => theme.fg("dim", p)).join(` ${theme.fg("dim", "·")} `)}`
534
+ }
535
+
536
+ if (expanded) {
537
+ const lines = d.resultPreview.split("\n").slice(0, 30)
538
+ for (const l of lines) line += `\n${theme.fg("dim", ` ${l}`)}`
539
+ } else {
540
+ const preview = d.resultPreview.split("\n")[0]?.slice(0, 80) ?? ""
541
+ line += `\n ${theme.fg("dim", `⎿ ${preview}`)}`
542
+ }
543
+
544
+ if (d.outputFile) {
545
+ line += `\n ${theme.fg("muted", `transcript: ${d.outputFile}`)}`
546
+ }
547
+
548
+ return line
549
+ }
550
+
551
+ const all = [d, ...(d.others ?? [])]
552
+ return new Text(all.map(renderOne).join("\n"), 0, 0)
553
+ })
554
+
555
+ const reloadCustomAgents = (cwd: string = process.cwd()) => {
556
+ const userAgents = loadCustomAgents(cwd)
557
+ registerAgents(userAgents)
558
+ }
559
+
560
+ reloadCustomAgents()
561
+
562
+ const agentActivity = new Map<string, AgentActivity>()
563
+
564
+ // ---- Cancellable pending notifications ----
565
+ const pendingNudges = new Map<string, ReturnType<typeof setTimeout>>()
566
+ const NUDGE_HOLD_MS = 200
567
+
568
+ function scheduleNudge(key: string, send: () => void, delay = NUDGE_HOLD_MS) {
569
+ cancelNudge(key)
570
+ pendingNudges.set(
571
+ key,
572
+ setTimeout(() => {
573
+ pendingNudges.delete(key)
574
+ send()
575
+ }, delay),
576
+ )
577
+ }
578
+
579
+ function cancelNudge(key: string) {
580
+ const timer = pendingNudges.get(key)
581
+ if (timer != null) {
582
+ clearTimeout(timer)
583
+ pendingNudges.delete(key)
584
+ }
585
+ }
586
+
587
+ function emitIndividualNudge(record: AgentRecord) {
588
+ if (record.visibility === "system") return
589
+ if (record.resultConsumed) return
590
+
591
+ const notification = formatTaskNotification(record, 500)
592
+ const footer = record.outputFile ? `\nFull transcript available at: ${record.outputFile}` : ""
593
+
594
+ pi.sendMessage<NotificationDetails>(
595
+ {
596
+ customType: "subagent-notification",
597
+ content: notification + footer,
598
+ display: true,
599
+ details: buildNotificationDetails(record, 500, agentActivity.get(record.id)),
600
+ },
601
+ { deliverAs: "followUp", triggerTurn: true },
602
+ )
603
+ }
604
+
605
+ function sendIndividualNudge(record: AgentRecord) {
606
+ agentActivity.delete(record.id)
607
+ widget.markFinished(record.id)
608
+ scheduleNudge(record.id, () => emitIndividualNudge(record))
609
+ widget.update()
610
+ }
611
+
612
+ // ---- Group join manager ----
613
+ const groupJoin = new GroupJoinManager((records, partial) => {
614
+ for (const r of records) {
615
+ agentActivity.delete(r.id)
616
+ widget.markFinished(r.id)
617
+ }
618
+
619
+ const groupKey = `group:${records.map((r) => r.id).join(",")}`
620
+ scheduleNudge(groupKey, () => {
621
+ const unconsumed = records.filter((r) => !r.resultConsumed)
622
+ if (unconsumed.length === 0) {
623
+ widget.update()
624
+ return
625
+ }
626
+
627
+ const notifications = unconsumed.map((r) => formatTaskNotification(r, 300)).join("\n\n")
628
+ const label = partial
629
+ ? `${unconsumed.length} agent(s) finished (partial - others still running)`
630
+ : `${unconsumed.length} agent(s) finished`
631
+
632
+ const [first, ...rest] = unconsumed
633
+ const details = buildNotificationDetails(first, 300, agentActivity.get(first.id))
634
+ if (rest.length > 0) {
635
+ details.others = rest.map((r) => buildNotificationDetails(r, 300, agentActivity.get(r.id)))
636
+ }
637
+
638
+ pi.sendMessage<NotificationDetails>(
639
+ {
640
+ customType: "subagent-notification",
641
+ content: `Background agent group completed: ${label}\n\n${notifications}\n\nUse get_subagent_result for full output.`,
642
+ display: true,
643
+ details,
644
+ },
645
+ { deliverAs: "followUp", triggerTurn: true },
646
+ )
647
+ })
648
+ widget.update()
649
+ }, 30_000)
650
+
651
+ function buildEventData(record: AgentRecord) {
652
+ const durationMs = record.completedAt ? record.completedAt - record.startedAt : Date.now() - record.startedAt
653
+ const u = record.lifetimeUsage
654
+ const total = getLifetimeTotal(u)
655
+ const tokens = total > 0 ? { input: u.input, output: u.output, total } : undefined
656
+ return {
657
+ id: record.id,
658
+ type: record.type,
659
+ description: record.description,
660
+ result: record.result,
661
+ error: record.error,
662
+ status: record.status,
663
+ visibility: record.visibility,
664
+ abortReason: record.abortReason,
665
+ toolUses: record.toolUses,
666
+ durationMs,
667
+ tokens,
668
+ }
669
+ }
670
+
671
+ let currentBatchAgents: { id: string; joinMode: JoinMode }[] = []
672
+ let batchFinalizeTimer: ReturnType<typeof setTimeout> | undefined
673
+ let batchCounter = 0
674
+
675
+ function finalizeBatch() {
676
+ batchFinalizeTimer = undefined
677
+ const batchAgents = [...currentBatchAgents]
678
+ currentBatchAgents = []
679
+
680
+ const smartAgents = batchAgents.filter((a) => a.joinMode === "smart" || a.joinMode === "group")
681
+ if (smartAgents.length >= 2) {
682
+ const groupId = `batch-${++batchCounter}`
683
+ const ids = smartAgents.map((a) => a.id)
684
+ groupJoin.registerGroup(groupId, ids)
685
+ for (const id of ids) {
686
+ const record = manager.getRecord(id)
687
+ if (!record) continue
688
+ record.groupId = groupId
689
+ if (record.completedAt != null && !record.resultConsumed) {
690
+ groupJoin.onAgentComplete(record)
691
+ }
692
+ }
693
+ } else {
694
+ for (const { id } of batchAgents) {
695
+ const record = manager.getRecord(id)
696
+ if (record?.completedAt != null && !record.resultConsumed) {
697
+ sendIndividualNudge(record)
698
+ }
699
+ }
700
+ }
701
+ }
702
+
703
+ const manager = new AgentManager(
704
+ (record) => {
705
+ const retryCandidate = budgetRetryCandidates.get(record.id)
706
+ budgetRetryCandidates.delete(record.id)
707
+ blockBudgetRetryIfNeeded(record, retryCandidate)
708
+
709
+ const isError = record.status === "error" || record.status === "stopped" || record.status === "aborted"
710
+ const eventData = buildEventData(record)
711
+ if (isError) {
712
+ pi.events.emit("subagents:failed", eventData)
713
+ } else {
714
+ pi.events.emit("subagents:completed", eventData)
715
+ }
716
+
717
+ pi.appendEntry("subagents:record", {
718
+ id: record.id,
719
+ type: record.type,
720
+ description: record.description,
721
+ visibility: record.visibility,
722
+ status: record.status,
723
+ abortReason: record.abortReason,
724
+ result: record.result,
725
+ error: record.error,
726
+ startedAt: record.startedAt,
727
+ completedAt: record.completedAt,
728
+ })
729
+
730
+ if (record.resultConsumed) {
731
+ agentActivity.delete(record.id)
732
+ widget.markFinished(record.id)
733
+ widget.update()
734
+ return
735
+ }
736
+
737
+ if (record.visibility === "system") {
738
+ // System agents never appear in the widget (AgentWidget filters them
739
+ // out at render time), so markFinished/update are no-ops that would
740
+ // just accrue dead state in `finishedTurnAge` and trigger spurious
741
+ // repaints. Just drop the activity entry and bail.
742
+ agentActivity.delete(record.id)
743
+ return
744
+ }
745
+
746
+ if (currentBatchAgents.some((a) => a.id === record.id)) {
747
+ widget.update()
748
+ return
749
+ }
750
+
751
+ const result = groupJoin.onAgentComplete(record)
752
+ if (result === "pass") {
753
+ sendIndividualNudge(record)
754
+ }
755
+ widget.update()
756
+ },
757
+ undefined,
758
+ (record) => {
759
+ pi.events.emit("subagents:started", {
760
+ id: record.id,
761
+ type: record.type,
762
+ description: record.description,
763
+ visibility: record.visibility,
764
+ })
765
+ void trackSubagentSpawned(record)
766
+ },
767
+ (record, info) => {
768
+ pi.events.emit("subagents:compacted", {
769
+ id: record.id,
770
+ type: record.type,
771
+ description: record.description,
772
+ visibility: record.visibility,
773
+ reason: info.reason,
774
+ tokensBefore: info.tokensBefore,
775
+ compactionCount: record.compactionCount,
776
+ })
777
+ },
778
+ )
779
+ activeManager = manager
780
+
781
+ pi.on("session_start", async (_event, ctx) => {
782
+ manager.clearCompleted()
783
+ // Re-discover custom agents using the new session's cwd, so a session
784
+ // that started in a different project picks up that project's
785
+ // .ikie/agents/ directory and forgets the previous one.
786
+ reloadCustomAgents(ctx.cwd)
787
+ })
788
+
789
+ pi.on("session_before_switch", () => {
790
+ manager.clearCompleted()
791
+ })
792
+
793
+ pi.events.emit("subagents:ready", {})
794
+
795
+ const widget = new AgentWidget(manager, agentActivity)
796
+ const listUserVisibleAgents = () => manager.listAgents().filter((a) => a.visibility !== "system")
797
+
798
+ pi.on("session_shutdown", async () => {
799
+ manager.abortAll()
800
+ budgetRetryCandidates.clear()
801
+ for (const timer of pendingNudges.values()) clearTimeout(timer)
802
+ pendingNudges.clear()
803
+ await waitForSubagentShutdown(manager)
804
+ widget.dispose()
805
+ manager.dispose()
806
+ })
807
+
808
+ let defaultJoinMode: JoinMode = "smart"
809
+ function getDefaultJoinMode(): JoinMode {
810
+ return defaultJoinMode
811
+ }
812
+ function setDefaultJoinMode(mode: JoinMode) {
813
+ defaultJoinMode = mode
814
+ }
815
+
816
+ pi.on("tool_execution_start", async (_event, ctx) => {
817
+ widget.setUICtx(ctx.ui as UICtx)
818
+ widget.onTurnStart()
819
+ })
820
+
821
+ const buildTypeListText = () => {
822
+ const defaultNames = getDefaultAgentNames()
823
+ const userNames = getUserAgentNames()
824
+
825
+ const formatModels = (cfg: ReturnType<typeof getAgentConfig>) => {
826
+ if (!cfg?.models?.length) return ""
827
+ if (cfg.models.length === 1) return ` [model: ${getModelLabelFromConfig(cfg.models[0])}]`
828
+ const labels = cfg.models.map((m) => getModelLabelFromConfig(m))
829
+ return ` [models: ${labels.join(" | ")}]`
830
+ }
831
+
832
+ const defaultDescs = defaultNames.map((name) => {
833
+ const cfg = getAgentConfig(name)
834
+ return `- ${name}: ${cfg?.description ?? name}${formatModels(cfg)}`
835
+ })
836
+
837
+ const customDescs = userNames.map((name) => {
838
+ const cfg = getAgentConfig(name)
839
+ return `- ${name}: ${cfg?.description ?? name}${formatModels(cfg)}`
840
+ })
841
+
842
+ return [
843
+ "Default agents:",
844
+ ...defaultDescs,
845
+ ...(customDescs.length > 0 ? ["", "Custom agents:", ...customDescs] : []),
846
+ "",
847
+ `Custom agents can be defined in .ikie/agents/<name>.md (project) or ${getAgentDir()}/agents/<name>.md (global) - they are picked up automatically. Project-level agents override global ones. Creating a .md file with the same name as a default agent overrides it.`,
848
+ `Global user instructions (applied to every session) can be placed in the global ${getAgentDir()}/AGENTS.md. Project-level AGENTS.md or CLAUDE.md files in the working directory tree are combined with it.`,
849
+ ].join("\n")
850
+ }
851
+
852
+ function getModelLabelFromConfig(model: string): string {
853
+ // biome-ignore lint/style/noNonNullAssertion: split() of a string containing "/" always yields >=2 elements
854
+ const name = model.includes("/") ? model.split("/").pop()! : model
855
+ return name.replace(/-\d{8}$/, "")
856
+ }
857
+
858
+ const typeListText = buildTypeListText()
859
+
860
+ applyAndEmitLoaded(
861
+ {
862
+ setMaxConcurrent: (n) => manager.setMaxConcurrent(n),
863
+ setDefaultMaxTurns,
864
+ setGraceTurns,
865
+ setDefaultJoinMode,
866
+ },
867
+ (event, payload) => pi.events.emit(event, payload),
868
+ )
869
+
870
+ // ---- Agent tool ----
871
+
872
+ pi.registerTool(
873
+ defineTool({
874
+ name: "Agent",
875
+ label: "Agent",
876
+ description: `Launch a new agent to handle complex, multi-step tasks autonomously.
877
+
878
+ The Agent tool launches specialized agents that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.
879
+
880
+ Available agent types:
881
+ ${typeListText}
882
+
883
+ ${AGENT_TOOL_GUIDELINES}`,
884
+ parameters: Type.Object({
885
+ prompt: Type.String({
886
+ description: "The task for the agent to perform.",
887
+ }),
888
+ description: Type.String({
889
+ description: "A short (3-5 word) description of the task (shown in UI).",
890
+ }),
891
+ subagent_type: Type.String({
892
+ description: `The type of specialized agent to use. Available types: ${getAvailableTypes().join(", ")}. Custom agents from .ikie/agents/*.md (project) or ${getAgentDir()}/agents/*.md (global) are also available.`,
893
+ }),
894
+ model: Type.Optional(
895
+ Type.String({
896
+ description: AGENT_MODEL_PARAMETER_DESCRIPTION,
897
+ }),
898
+ ),
899
+ thinking: Type.Optional(
900
+ Type.String({
901
+ description:
902
+ "Requested thinking level: off, minimal, low, medium, high, xhigh. Agent profiles with fixed thinking keep their profile value.",
903
+ }),
904
+ ),
905
+ max_turns: Type.Optional(
906
+ Type.Number({
907
+ description:
908
+ "Requested maximum agentic turns before stopping. Agent profiles with fixed maxTurns keep their profile value.",
909
+ minimum: 1,
910
+ }),
911
+ ),
912
+ token_budget: Type.Optional(
913
+ Type.Integer({
914
+ description:
915
+ "Maximum cumulative output tokens this agent is allowed to generate. Input tokens are not counted.",
916
+ minimum: 1,
917
+ }),
918
+ ),
919
+ max_duration: Type.Optional(
920
+ Type.Integer({
921
+ description: "Maximum wall-clock duration in seconds. The agent is aborted when this limit is exceeded.",
922
+ minimum: 1,
923
+ }),
924
+ ),
925
+ run_in_background: Type.Optional(
926
+ Type.Boolean({
927
+ description:
928
+ "Set to true to run in background. Returns agent ID immediately. You will be notified on completion.",
929
+ }),
930
+ ),
931
+ isolated: Type.Optional(
932
+ Type.Boolean({
933
+ description: "If true, agent gets no extension/MCP tools - only built-in tools.",
934
+ }),
935
+ ),
936
+ inherit_context: Type.Optional(
937
+ Type.Boolean({
938
+ description: "If true, fork parent conversation into the agent. Default: false (fresh context).",
939
+ }),
940
+ ),
941
+ task_ref: Type.Optional(
942
+ Type.Object({
943
+ kind: Type.Literal("ferment_step"),
944
+ ferment_id: Type.String(),
945
+ phase_id: Type.String(),
946
+ step_id: Type.String(),
947
+ budget_tier: Type.Optional(
948
+ Type.Union([Type.Literal("narrow"), Type.Literal("standard"), Type.Literal("complex")]),
949
+ ),
950
+ }),
951
+ ),
952
+ }),
953
+
954
+ renderCall(args, theme) {
955
+ // Defense-in-depth: `visibility` is not in this tool's public schema (see execute()),
956
+ // but if an LLM hallucinates the arg we'd rather hide the tool call than render it.
957
+ if ((args as Record<string, unknown>).visibility === "system") return new Text("", 0, 0)
958
+ const displayName = args.subagent_type ? getDisplayName(args.subagent_type as string) : "Agent"
959
+ const desc = (args.description as string) ?? ""
960
+ return new Text(
961
+ `▸ ${theme.fg("toolTitle", theme.bold(displayName))}${desc ? ` ${theme.fg("muted", desc)}` : ""}`,
962
+ 0,
963
+ 0,
964
+ )
965
+ },
966
+
967
+ renderResult(result, { expanded: piExpanded, isPartial }, theme, context) {
968
+ // Wire ikie's global ctrl+o cycle: register on first render, then read the
969
+ // per-tool flag back. Falls back to pi's renderer flag if available.
970
+ if (context?.toolCallId) registerToolCall(context.toolCallId)
971
+ const expanded = piExpanded || (context?.toolCallId ? isToolExpanded(context.toolCallId) : false)
972
+
973
+ const details = result.details as AgentDetails | undefined
974
+ if (details?.visibility === "system") return new Text("", 0, 0)
975
+ if (!details) {
976
+ const text = result.content[0]?.type === "text" ? result.content[0].text : ""
977
+ return new Text(text, 0, 0)
978
+ }
979
+
980
+ const stats = (d: AgentDetails) => {
981
+ const parts: string[] = []
982
+ if (d.modelName) parts.push(d.modelName)
983
+ if (d.tags) parts.push(...d.tags)
984
+ if (d.turnCount != null && d.turnCount > 0) {
985
+ parts.push(formatTurns(d.turnCount, d.maxTurns))
986
+ }
987
+ if (d.toolUses > 0) parts.push(`${d.toolUses} tool use${d.toolUses === 1 ? "" : "s"}`)
988
+ if (d.tokens) parts.push(d.tokens)
989
+ return parts.map((p) => theme.fg("dim", p)).join(` ${theme.fg("dim", "·")} `)
990
+ }
991
+
992
+ if (isPartial || details.status === "running") {
993
+ const frame = SPINNER[details.spinnerFrame ?? 0]
994
+ const s = stats(details)
995
+ let line = theme.fg("accent", frame) + (s ? ` ${s}` : "")
996
+ line += `\n${theme.fg("dim", ` ⎿ ${details.activity ?? "thinking..."}`)}`
997
+ return new Text(line, 0, 0)
998
+ }
999
+
1000
+ if (details.status === "background") {
1001
+ return new Text(theme.fg("dim", ` ⎿ Running in background (ID: ${details.agentId})`), 0, 0)
1002
+ }
1003
+
1004
+ if (details.status === "completed" || details.status === "steered") {
1005
+ const duration = formatMs(details.durationMs)
1006
+ const isSteered = details.status === "steered"
1007
+ const icon = isSteered ? theme.fg("warning", "✓") : theme.fg("success", "✓")
1008
+ const s = stats(details)
1009
+ let line = icon + (s ? ` ${s}` : "")
1010
+ line += ` ${theme.fg("dim", "·")} ${theme.fg("dim", duration)}`
1011
+
1012
+ if (expanded) {
1013
+ const resultText = result.content[0]?.type === "text" ? result.content[0].text : ""
1014
+ if (resultText) {
1015
+ const lines = resultText.split("\n").slice(0, 50)
1016
+ for (const l of lines) {
1017
+ line += `\n${theme.fg("dim", ` ${l}`)}`
1018
+ }
1019
+ if (resultText.split("\n").length > 50) {
1020
+ line += `\n${theme.fg("muted", " ... (use get_subagent_result with verbose for full output)")}`
1021
+ }
1022
+ }
1023
+ } else {
1024
+ const doneText = isSteered ? "Wrapped up (turn limit)" : "Done"
1025
+ line += `\n${theme.fg("dim", ` ⎿ ${doneText}`)}`
1026
+ }
1027
+ return new Text(line, 0, 0)
1028
+ }
1029
+
1030
+ if (details.status === "stopped") {
1031
+ const s = stats(details)
1032
+ let line = theme.fg("dim", "■") + (s ? ` ${s}` : "")
1033
+ line += `\n${theme.fg("dim", " ⎿ Stopped")}`
1034
+ return new Text(line, 0, 0)
1035
+ }
1036
+
1037
+ const s = stats(details)
1038
+ let line = theme.fg("error", "✗") + (s ? ` ${s}` : "")
1039
+
1040
+ if (details.status === "error") {
1041
+ line += `\n${theme.fg("error", ` ⎿ Error: ${details.error ?? "unknown"}`)}`
1042
+ } else {
1043
+ line += `\n${theme.fg("warning", ` ⎿ ${getAbortLabel(details.abortReason)}`)}`
1044
+ }
1045
+
1046
+ return new Text(line, 0, 0)
1047
+ },
1048
+
1049
+ execute: async (toolCallId, params, signal, onUpdate, ctx) => {
1050
+ widget.setUICtx(ctx.ui as UICtx)
1051
+
1052
+ reloadCustomAgents()
1053
+
1054
+ const rawType = params.subagent_type as SubagentType
1055
+ const resolved = resolveType(rawType)
1056
+ const subagentType = resolved ?? AGENT_GENERAL_PURPOSE
1057
+ const fellBack = resolved === undefined
1058
+
1059
+ const displayName = getDisplayName(subagentType)
1060
+
1061
+ const customConfig = getAgentConfig(subagentType)
1062
+
1063
+ const resolvedConfig = resolveAgentInvocationConfig(
1064
+ customConfig,
1065
+ params as Parameters<typeof resolveAgentInvocationConfig>[1],
1066
+ )
1067
+
1068
+ let model = ctx.model
1069
+ if (resolvedConfig.modelInput) {
1070
+ const resolvedModel = resolveModel(resolvedConfig.modelInput, ctx.modelRegistry as ModelRegistry)
1071
+ if (typeof resolvedModel === "string") {
1072
+ if (resolvedConfig.modelFromParams) return textResult(resolvedModel)
1073
+ } else {
1074
+ model = resolvedModel as typeof ctx.model
1075
+ }
1076
+ }
1077
+
1078
+ const explicitTokenBudget =
1079
+ (params as { token_budget?: number; tokenBudget?: number }).token_budget ??
1080
+ (params as { token_budget?: number; tokenBudget?: number }).tokenBudget
1081
+ const activeBudgetRetryBlock = budgetRetryBlock
1082
+ if (
1083
+ activeBudgetRetryBlock &&
1084
+ shouldBlockBudgetRetry(activeBudgetRetryBlock, {
1085
+ tokenBudget: resolvedConfig.tokenBudget,
1086
+ subagentType,
1087
+ description: params.description as string,
1088
+ prompt: params.prompt as string,
1089
+ })
1090
+ ) {
1091
+ return textResult(
1092
+ `Agent retry blocked: the previous Agent call for "${activeBudgetRetryBlock.description}" already aborted because the user-supplied token_budget (${formatTokens(activeBudgetRetryBlock.budget)}) was too small. Do not raise the budget or retry the Agent tool unless the user explicitly asks.`,
1093
+ )
1094
+ }
1095
+
1096
+ const thinking = resolvedConfig.thinking
1097
+ const inheritContext = resolvedConfig.inheritContext
1098
+ const isolated = resolvedConfig.isolated
1099
+ const taskRef = readAgentTaskRef(params)
1100
+ if (taskRef && (params.max_turns == null || params.max_duration == null || params.token_budget == null)) {
1101
+ return textResult(
1102
+ "Ferment-linked Agent calls require explicit max_turns, max_duration, and token_budget from the shared worker budget policy.",
1103
+ )
1104
+ }
1105
+ if (taskRef && isolated) {
1106
+ return textResult(
1107
+ "Agent task_ref cannot be used with isolated: true. Ferment-linked workers must have extension tools enabled so they can call submit_agent_report.",
1108
+ )
1109
+ }
1110
+ // The `visibility` field is intentionally NOT exposed in this tool's public schema -
1111
+ // LLMs and personas cannot create hidden agents. Internal ikie callers (e.g. permission
1112
+ // classifiers, future MCP adapters) spawn hidden agents directly via `AgentManager.spawn(..., { visibility: "system" })`,
1113
+ // which bypasses the tool layer entirely. Hardcoding "user" here ensures any defiant
1114
+ // LLM that hallucinates a `visibility` arg gets ignored at the source.
1115
+ const visibility: AgentVisibility = "user"
1116
+ const runInBackground = resolvedConfig.runInBackground
1117
+
1118
+ // Image forwarding: when session has images and subagent model supports vision,
1119
+ // extract image paths from read tool calls and prepend them to the prompt.
1120
+ const effectivePrompt = (() => {
1121
+ const base = params.prompt as string
1122
+ if (!sessionHasImages()) return base
1123
+ const modelInput = (model as { input?: string[] } | undefined)?.input
1124
+ if (!modelInput?.includes("image")) return base
1125
+
1126
+ const imagePaths = extractImagePathsFromSession(ctx)
1127
+ if (imagePaths.length === 0) return base
1128
+
1129
+ const pathList = imagePaths.join(", ")
1130
+ return `Context images from parent session: ${pathList}. Read them if needed for your task.\n\n${base}`
1131
+ })()
1132
+
1133
+ const parentModelId = ctx.model?.id
1134
+ const effectiveModelId = (model as { id?: string } | undefined)?.id
1135
+ const agentModelName =
1136
+ effectiveModelId && effectiveModelId !== parentModelId
1137
+ ? ((model as { name?: string; id?: string } | undefined)?.name ?? effectiveModelId)
1138
+ .replace(/^Claude\s+/i, "")
1139
+ .toLowerCase()
1140
+ : undefined
1141
+ const agentTags: string[] = []
1142
+ if (thinking) agentTags.push(`thinking: ${thinking}`)
1143
+ if (resolvedConfig.tokenBudget != null) agentTags.push(`budget: ${formatTokens(resolvedConfig.tokenBudget)}`)
1144
+ if (isolated) agentTags.push("isolated")
1145
+ const effectiveMaxTurns = normalizeMaxTurns(resolvedConfig.maxTurns ?? getDefaultMaxTurns())
1146
+ const detailBase = {
1147
+ displayName,
1148
+ description: params.description as string,
1149
+ subagentType,
1150
+ visibility,
1151
+ modelName: agentModelName,
1152
+ tags: agentTags.length > 0 ? agentTags : undefined,
1153
+ }
1154
+
1155
+ if (runInBackground) {
1156
+ const { state: bgState, callbacks: bgCallbacks } = createActivityTracker(effectiveMaxTurns)
1157
+ let childSessionFile: string | undefined
1158
+ const parentSessionDir = ctx.sessionManager.getSessionDir()
1159
+ try {
1160
+ childSessionFile = prepareAgentSessionFile(
1161
+ parentSessionDir,
1162
+ ctx.sessionManager.getSessionFile(),
1163
+ ctx.cwd,
1164
+ )?.sessionFile
1165
+ } catch (err) {
1166
+ const detail = err instanceof Error ? err.message : String(err)
1167
+ return textResult(`Failed to pre-write Agent session file under ${parentSessionDir}: ${detail}`)
1168
+ }
1169
+
1170
+ let id: string
1171
+ const origBgOnSession = bgCallbacks.onSessionCreated
1172
+ bgCallbacks.onSessionCreated = (session: unknown) => {
1173
+ origBgOnSession(session)
1174
+ const rec = manager.getRecord(id)
1175
+ if (rec?.outputFile) {
1176
+ rec.outputCleanup = streamToOutputFile(
1177
+ session as Parameters<typeof streamToOutputFile>[0],
1178
+ rec.outputFile,
1179
+ id,
1180
+ ctx.cwd,
1181
+ )
1182
+ }
1183
+ }
1184
+
1185
+ try {
1186
+ id = manager.spawn(pi, ctx, subagentType, effectivePrompt, {
1187
+ description: params.description as string,
1188
+ visibility,
1189
+ model: model as Parameters<typeof manager.spawn>[4]["model"],
1190
+ maxTurns: effectiveMaxTurns,
1191
+ tokenBudget: resolvedConfig.tokenBudget,
1192
+ taskRef,
1193
+ maxDuration: resolvedConfig.maxDuration,
1194
+ isolated,
1195
+ inheritContext,
1196
+ thinkingLevel: thinking,
1197
+ isBackground: true,
1198
+ sessionFile: childSessionFile,
1199
+ sessionDir: parentSessionDir,
1200
+ ...bgCallbacks,
1201
+ })
1202
+ } catch (err) {
1203
+ return textResult(err instanceof Error ? err.message : String(err))
1204
+ }
1205
+
1206
+ const joinMode = resolveJoinMode(getDefaultJoinMode(), true)
1207
+ const record = manager.getRecord(id)
1208
+ if (record && joinMode) {
1209
+ record.joinMode = joinMode
1210
+ record.toolCallId = toolCallId
1211
+ record.outputFile = createOutputFilePath(ctx.cwd, id, ctx.sessionManager.getSessionId(), parentSessionDir)
1212
+ writeInitialEntry(record.outputFile, id, params.prompt as string, ctx.cwd)
1213
+ }
1214
+ if (explicitTokenBudget != null) {
1215
+ budgetRetryCandidates.set(id, {
1216
+ budget: explicitTokenBudget,
1217
+ subagentType,
1218
+ description: params.description as string,
1219
+ prompt: params.prompt as string,
1220
+ })
1221
+ }
1222
+
1223
+ if (joinMode != null && joinMode !== "async") {
1224
+ currentBatchAgents.push({ id, joinMode })
1225
+ if (batchFinalizeTimer) clearTimeout(batchFinalizeTimer)
1226
+ batchFinalizeTimer = setTimeout(finalizeBatch, 100)
1227
+ }
1228
+
1229
+ agentActivity.set(id, bgState)
1230
+ widget.ensureTimer()
1231
+ widget.update()
1232
+
1233
+ pi.events.emit("subagents:created", {
1234
+ id,
1235
+ type: subagentType,
1236
+ description: params.description,
1237
+ isBackground: true,
1238
+ visibility,
1239
+ })
1240
+
1241
+ const isQueued = record?.status === "queued"
1242
+ return textResult(
1243
+ `Agent ${isQueued ? "queued" : "started"} in background.\nAgent ID: ${id}\nType: ${displayName}\nDescription: ${params.description}\n${record?.outputFile ? `Output file: ${record.outputFile}\n` : ""}${isQueued ? `Position: queued (max ${manager.getMaxConcurrent()} concurrent)\n` : ""}\nYou will be notified when this agent completes.\nUse get_subagent_result to retrieve full results, or steer_subagent to send it messages.\nDo not duplicate this agent's work.`,
1244
+ { ...detailBase, toolUses: 0, tokens: "", durationMs: 0, status: "background" as const, agentId: id },
1245
+ )
1246
+ }
1247
+
1248
+ // Foreground (synchronous) execution
1249
+ let spinnerFrame = 0
1250
+ const startedAt = Date.now()
1251
+ let fgId: string | undefined
1252
+
1253
+ const streamUpdate = () => {
1254
+ const details: AgentDetails = {
1255
+ ...detailBase,
1256
+ toolUses: fgState.toolUses,
1257
+ tokens: formatLifetimeTokens(fgState),
1258
+ turnCount: fgState.turnCount,
1259
+ maxTurns: fgState.maxTurns,
1260
+ durationMs: Date.now() - startedAt,
1261
+ status: "running",
1262
+ activity: describeActivity(fgState.activeTools, fgState.responseText),
1263
+ spinnerFrame: spinnerFrame % SPINNER.length,
1264
+ }
1265
+ onUpdate?.({
1266
+ content: [{ type: "text", text: `${fgState.toolUses} tool uses...` }],
1267
+ details: details as unknown,
1268
+ })
1269
+ }
1270
+
1271
+ const { state: fgState, callbacks: fgCallbacks } = createActivityTracker(effectiveMaxTurns, streamUpdate)
1272
+
1273
+ const origOnSession = fgCallbacks.onSessionCreated
1274
+ fgCallbacks.onSessionCreated = (session: unknown) => {
1275
+ origOnSession(session)
1276
+ for (const a of manager.listAgents()) {
1277
+ if (a.session === session) {
1278
+ fgId = a.id
1279
+ agentActivity.set(a.id, fgState)
1280
+ widget.ensureTimer()
1281
+ break
1282
+ }
1283
+ }
1284
+ }
1285
+
1286
+ const spinnerInterval = setInterval(() => {
1287
+ spinnerFrame++
1288
+ streamUpdate()
1289
+ }, 80)
1290
+
1291
+ streamUpdate()
1292
+
1293
+ let record: AgentRecord
1294
+ let childSessionFile: string | undefined
1295
+ const parentSessionDir = ctx.sessionManager.getSessionDir()
1296
+ try {
1297
+ childSessionFile = prepareAgentSessionFile(
1298
+ parentSessionDir,
1299
+ ctx.sessionManager.getSessionFile(),
1300
+ ctx.cwd,
1301
+ )?.sessionFile
1302
+ } catch (err) {
1303
+ clearInterval(spinnerInterval)
1304
+ const detail = err instanceof Error ? err.message : String(err)
1305
+ return textResult(`Failed to pre-write Agent session file under ${parentSessionDir}: ${detail}`)
1306
+ }
1307
+ try {
1308
+ record = await manager.spawnAndWait(pi, ctx, subagentType, effectivePrompt, {
1309
+ description: params.description as string,
1310
+ visibility,
1311
+ model: model as Parameters<typeof manager.spawnAndWait>[4]["model"],
1312
+ maxTurns: effectiveMaxTurns,
1313
+ tokenBudget: resolvedConfig.tokenBudget,
1314
+ taskRef,
1315
+ maxDuration: resolvedConfig.maxDuration,
1316
+ isolated,
1317
+ inheritContext,
1318
+ thinkingLevel: thinking,
1319
+ sessionFile: childSessionFile,
1320
+ sessionDir: parentSessionDir,
1321
+ signal,
1322
+ ...fgCallbacks,
1323
+ })
1324
+ } catch (err) {
1325
+ clearInterval(spinnerInterval)
1326
+ return textResult(err instanceof Error ? err.message : String(err))
1327
+ }
1328
+
1329
+ clearInterval(spinnerInterval)
1330
+
1331
+ if (fgId) {
1332
+ agentActivity.delete(fgId)
1333
+ widget.markFinished(fgId)
1334
+ }
1335
+
1336
+ const tokenText = formatLifetimeTokens(fgState)
1337
+
1338
+ const details = buildDetails(detailBase, record, fgState, { tokens: tokenText })
1339
+
1340
+ const fallbackNote = fellBack
1341
+ ? `Note: Unknown agent type "${rawType}" - using ${AGENT_GENERAL_PURPOSE}.\n\n`
1342
+ : ""
1343
+
1344
+ if (record.status === "error") {
1345
+ return textResult(`${fallbackNote}Agent failed: ${record.error}`, details)
1346
+ }
1347
+ blockBudgetRetryIfNeeded(
1348
+ record,
1349
+ explicitTokenBudget != null
1350
+ ? {
1351
+ budget: explicitTokenBudget,
1352
+ subagentType,
1353
+ description: params.description as string,
1354
+ prompt: params.prompt as string,
1355
+ }
1356
+ : undefined,
1357
+ )
1358
+
1359
+ const durationMs = (record.completedAt ?? Date.now()) - record.startedAt
1360
+ const statsParts = [`${record.toolUses} tool uses`]
1361
+ if (tokenText) statsParts.push(tokenText)
1362
+ const outcome = record.status === "aborted" ? "aborted" : record.status === "stopped" ? "stopped" : "completed"
1363
+ record.latestOutcome ??= buildAgentOutcome(record)
1364
+ return textResult(
1365
+ `${fallbackNote}Agent ${outcome} in ${formatMs(durationMs)} (${statsParts.join(", ")})${getStatusNote(record.status, record.abortReason)}.${getStatusInstruction(record.status, record.abortReason)}\n\n${record.result?.trim() || "No output."}${formatAgentOutcomeBlock(record.latestOutcome)}`,
1366
+ details,
1367
+ )
1368
+ },
1369
+ }),
1370
+ )
1371
+
1372
+ registerResumeSubagentTool(pi, manager)
1373
+
1374
+ // ---- get_subagent_result tool ----
1375
+
1376
+ pi.registerTool(
1377
+ defineTool({
1378
+ name: "get_subagent_result",
1379
+ label: "Get Agent Result",
1380
+ description:
1381
+ "Check status and retrieve results from a background agent. Use the agent ID returned by Agent with run_in_background.",
1382
+ parameters: Type.Object({
1383
+ agent_id: Type.String({
1384
+ description: "The agent ID to check.",
1385
+ }),
1386
+ wait: Type.Optional(
1387
+ Type.Boolean({
1388
+ description: "If true, wait for the agent to complete before returning. Default: false.",
1389
+ }),
1390
+ ),
1391
+ verbose: Type.Optional(
1392
+ Type.Boolean({
1393
+ description: "If true, include the agent's full conversation (messages + tool calls). Default: false.",
1394
+ }),
1395
+ ),
1396
+ }),
1397
+
1398
+ renderResult(result, { expanded: piExpanded }, theme, context) {
1399
+ if (context?.toolCallId) registerToolCall(context.toolCallId)
1400
+ const expanded = piExpanded || (context?.toolCallId ? isToolExpanded(context.toolCallId) : false)
1401
+
1402
+ const details = result.details as GetSubagentResultDetails | undefined
1403
+ // Defense-in-depth: hide get_subagent_result output for system agents in the TUI
1404
+ // (consistency with the Agent tool's renderCall/renderResult short-circuits).
1405
+ if (details?.visibility === "system") return new Text("", 0, 0)
1406
+ if (!details) {
1407
+ const text = result.content[0]?.type === "text" ? result.content[0].text : ""
1408
+ return new Text(text, 0, 0)
1409
+ }
1410
+
1411
+ const statsLine = (d: GetSubagentResultDetails) => {
1412
+ const parts: string[] = [d.status]
1413
+ if (d.toolUses > 0) parts.push(`${d.toolUses} tool use${d.toolUses === 1 ? "" : "s"}`)
1414
+ if (d.tokens) parts.push(d.tokens)
1415
+ if (d.contextPercent != null) parts.push(`${Math.round(d.contextPercent)}% ctx`)
1416
+ if (d.compactionCount && d.compactionCount > 0) {
1417
+ parts.push(`${d.compactionCount} compaction${d.compactionCount === 1 ? "" : "s"}`)
1418
+ }
1419
+ return parts.map((p) => theme.fg("dim", p)).join(` ${theme.fg("dim", "·")} `)
1420
+ }
1421
+
1422
+ const icon = getSubagentResultIcon(details.status, theme)
1423
+
1424
+ const headerName = theme.fg("toolTitle", theme.bold("Get Agent Result"))
1425
+ const headerDesc = details.description ? ` ${theme.fg("muted", details.description)}` : ""
1426
+ const durationTail =
1427
+ details.durationMs != null ? ` ${theme.fg("dim", "·")} ${theme.fg("dim", formatMs(details.durationMs))}` : ""
1428
+
1429
+ let line = `${icon} ${headerName}${headerDesc}${durationTail}`
1430
+ const stats = statsLine(details)
1431
+ if (stats) line += `\n${theme.fg("dim", " ⎿ ")}${stats}`
1432
+
1433
+ const bodyText = details.bodyText ?? ""
1434
+ if (expanded && bodyText) {
1435
+ const lines = bodyText.split("\n")
1436
+ const maxLines = 50
1437
+ const visible = lines.slice(0, maxLines)
1438
+ for (const l of visible) {
1439
+ line += `\n${theme.fg("dim", ` ${l}`)}`
1440
+ }
1441
+ if (lines.length > maxLines) {
1442
+ line += `\n${theme.fg("muted", ` ... (${lines.length - maxLines} more lines - use verbose: true for full output)`)}`
1443
+ }
1444
+ } else if (!expanded) {
1445
+ const summary = summaryForStatus(details.status, details.error, details.abortReason)
1446
+ line += `\n${theme.fg("dim", ` ⎿ ${summary}`)}`
1447
+ }
1448
+
1449
+ return new Text(line, 0, 0)
1450
+ },
1451
+
1452
+ execute: async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
1453
+ const record = manager.getRecord(params.agent_id as string)
1454
+ if (!record) {
1455
+ return textResult(`Agent not found: "${params.agent_id}". It may have been cleaned up.`)
1456
+ }
1457
+
1458
+ if (params.wait && record.status === "running" && record.promise) {
1459
+ record.resultConsumed = true
1460
+ cancelNudge(params.agent_id as string)
1461
+ await record.promise
1462
+ }
1463
+
1464
+ const displayName = getDisplayName(record.type)
1465
+ const duration = formatDuration(record.startedAt, record.completedAt)
1466
+ const tokens = formatLifetimeTokens(record)
1467
+ const contextPercent = getSessionContextPercent(record.session)
1468
+ const statsParts = [`Tool uses: ${record.toolUses}`]
1469
+ if (tokens) statsParts.push(tokens)
1470
+ if (contextPercent !== null) statsParts.push(`Context: ${Math.round(contextPercent)}%`)
1471
+ if (record.compactionCount) statsParts.push(`Compactions: ${record.compactionCount}`)
1472
+ statsParts.push(`Duration: ${duration}`)
1473
+
1474
+ let output =
1475
+ `Agent: ${record.id}\n` +
1476
+ `Type: ${displayName} | Status: ${record.status} | ${statsParts.join(" | ")}\n` +
1477
+ `Description: ${record.description}\n\n`
1478
+
1479
+ let bodyForDisplay: string
1480
+ if (record.status === "running") {
1481
+ bodyForDisplay = "Agent is still running. Use wait: true or check back later."
1482
+ output += bodyForDisplay
1483
+ } else if (record.status === "error") {
1484
+ bodyForDisplay = `Error: ${record.error}`
1485
+ output += bodyForDisplay
1486
+ } else {
1487
+ bodyForDisplay = record.result?.trim() || "No output."
1488
+ output += bodyForDisplay
1489
+ }
1490
+ record.latestOutcome ??= buildAgentOutcome(record)
1491
+ if (record.latestOutcome && record.status !== "running" && record.status !== "queued") {
1492
+ const outcomeBlock = formatAgentOutcomeBlock(record.latestOutcome)
1493
+ output += outcomeBlock
1494
+ bodyForDisplay += outcomeBlock
1495
+ }
1496
+
1497
+ if (record.status !== "running" && record.status !== "queued") {
1498
+ record.resultConsumed = true
1499
+ cancelNudge(params.agent_id as string)
1500
+ }
1501
+
1502
+ if (params.verbose && record.session) {
1503
+ const conversation = getAgentConversation(record.session)
1504
+ if (conversation) {
1505
+ const verboseTail = `\n\n--- Agent Conversation ---\n${conversation}`
1506
+ output += verboseTail
1507
+ bodyForDisplay += verboseTail
1508
+ }
1509
+ }
1510
+
1511
+ const completedAt = record.completedAt ?? Date.now()
1512
+ const durationMs = record.startedAt != null ? completedAt - record.startedAt : undefined
1513
+ const details: GetSubagentResultDetails = {
1514
+ agentId: record.id,
1515
+ displayName,
1516
+ description: record.description,
1517
+ status: record.status,
1518
+ visibility: record.visibility,
1519
+ abortReason: record.abortReason,
1520
+ toolUses: record.toolUses,
1521
+ tokens,
1522
+ contextPercent,
1523
+ compactionCount: record.compactionCount,
1524
+ durationMs,
1525
+ error: record.error,
1526
+ bodyText: formatAgentBodyForDisplay(bodyForDisplay),
1527
+ agentOutcome: record.latestOutcome,
1528
+ }
1529
+
1530
+ return textResult(output, details)
1531
+ },
1532
+ }),
1533
+ )
1534
+
1535
+ // ---- steer_subagent tool ----
1536
+
1537
+ pi.registerTool(
1538
+ defineTool({
1539
+ name: "steer_subagent",
1540
+ label: "Steer Agent",
1541
+ description:
1542
+ "Send a steering message to a running agent. The message will interrupt the agent after its current tool execution " +
1543
+ "and be injected into its conversation, allowing you to redirect its work mid-run. Only works on running agents.",
1544
+ parameters: Type.Object({
1545
+ agent_id: Type.String({
1546
+ description: "The agent ID to steer (must be currently running).",
1547
+ }),
1548
+ message: Type.String({
1549
+ description: "The steering message to send. This will appear as a user message in the agent's conversation.",
1550
+ }),
1551
+ }),
1552
+ execute: async (_toolCallId, params, _signal, _onUpdate, _ctx) => {
1553
+ const record = manager.getRecord(params.agent_id as string)
1554
+ if (!record) {
1555
+ return textResult(`Agent not found: "${params.agent_id}". It may have been cleaned up.`)
1556
+ }
1557
+ if (record.status !== "running") {
1558
+ return textResult(
1559
+ `Agent "${params.agent_id}" is not running (status: ${record.status}). Cannot steer a non-running agent.`,
1560
+ )
1561
+ }
1562
+ if (!record.session) {
1563
+ if (!record.pendingSteers) record.pendingSteers = []
1564
+ record.pendingSteers.push(params.message as string)
1565
+ pi.events.emit("subagents:steered", { id: record.id, message: params.message })
1566
+ return textResult(
1567
+ `Steering message queued for agent ${record.id}. It will be delivered once the session initializes.`,
1568
+ )
1569
+ }
1570
+
1571
+ try {
1572
+ await steerAgent(record.session, params.message as string)
1573
+ pi.events.emit("subagents:steered", { id: record.id, message: params.message })
1574
+ const tokens = formatLifetimeTokens(record)
1575
+ const contextPercent = getSessionContextPercent(record.session)
1576
+ const stateParts: string[] = []
1577
+ if (tokens) stateParts.push(tokens)
1578
+ stateParts.push(`${record.toolUses} tool ${record.toolUses === 1 ? "use" : "uses"}`)
1579
+ if (contextPercent !== null) stateParts.push(`context ${Math.round(contextPercent)}% full`)
1580
+ if (record.compactionCount)
1581
+ stateParts.push(`${record.compactionCount} compaction${record.compactionCount === 1 ? "" : "s"}`)
1582
+ return textResult(
1583
+ `Steering message sent to agent ${record.id}. The agent will process it after its current tool execution.\n` +
1584
+ `Current state: ${stateParts.join(" · ")}`,
1585
+ )
1586
+ } catch (err) {
1587
+ return textResult(`Failed to steer agent: ${err instanceof Error ? err.message : String(err)}`)
1588
+ }
1589
+ },
1590
+ }),
1591
+ )
1592
+
1593
+ // ---- /agents interactive menu ----
1594
+
1595
+ const projectAgentsDir = () => join(process.cwd(), ".ikie", "agents")
1596
+ const personalAgentsDir = () => join(getAgentDir(), "agents")
1597
+
1598
+ function findAgentFile(name: string): { path: string; location: "project" | "personal" } | undefined {
1599
+ const projectPath = join(projectAgentsDir(), `${name}.md`)
1600
+ if (existsSync(projectPath)) return { path: projectPath, location: "project" }
1601
+ const personalPath = join(personalAgentsDir(), `${name}.md`)
1602
+ if (existsSync(personalPath)) return { path: personalPath, location: "personal" }
1603
+ return undefined
1604
+ }
1605
+
1606
+ /** Max number of models to display in the /agents menu list. */
1607
+ const MAX_MODELS_IN_MENU = 5
1608
+
1609
+ function getModelLabel(type: string, registry?: ModelRegistry): string {
1610
+ const cfg = getAgentConfig(type)
1611
+ if (!cfg?.models?.length) return "inherit"
1612
+ if (registry) {
1613
+ // Probe the first entry - if even that doesn't resolve, the agent
1614
+ // will inherit the parent's model anyway.
1615
+ const resolvedM = resolveModel(cfg.models[0], registry)
1616
+ if (typeof resolvedM === "string") return "inherit"
1617
+ }
1618
+ const visible = cfg.models.slice(0, MAX_MODELS_IN_MENU).map((m) => getModelLabelFromConfig(m))
1619
+ const overflow = cfg.models.length - visible.length
1620
+ const list = visible.join(" | ")
1621
+ return overflow > 0 ? `${list} (+${overflow} more)` : list
1622
+ }
1623
+
1624
+ async function showAgentsMenu(ctx: ExtensionCommandContext) {
1625
+ reloadCustomAgents()
1626
+ const allNames = getAllTypes()
1627
+
1628
+ const options: string[] = []
1629
+
1630
+ const agents = listUserVisibleAgents()
1631
+ if (agents.length > 0) {
1632
+ const running = agents.filter((a) => a.status === "running" || a.status === "queued").length
1633
+ const done = agents.filter((a) => a.status === "completed" || a.status === "steered").length
1634
+ options.push(`Running agents (${agents.length}) - ${running} running, ${done} done`)
1635
+ }
1636
+
1637
+ if (allNames.length > 0) {
1638
+ options.push(`Agent types (${allNames.length})`)
1639
+ }
1640
+
1641
+ options.push("Create new agent")
1642
+ options.push("Settings")
1643
+
1644
+ const noAgentsMsg =
1645
+ allNames.length === 0 && agents.length === 0
1646
+ ? "No agents found. Create specialized subagents that can be delegated to.\n\n" +
1647
+ "Each subagent has its own context window, custom system prompt, and specific tools.\n\n" +
1648
+ "Try creating: Code Reviewer, Security Auditor, Test Writer, or Documentation Writer.\n\n"
1649
+ : ""
1650
+
1651
+ if (noAgentsMsg) {
1652
+ ctx.ui.notify(noAgentsMsg, "info")
1653
+ }
1654
+
1655
+ const choice = await ctx.ui.select("Agents", options)
1656
+ if (!choice) return
1657
+
1658
+ if (choice.startsWith("Running agents (")) {
1659
+ await showRunningAgents(ctx)
1660
+ await showAgentsMenu(ctx)
1661
+ } else if (choice.startsWith("Agent types (")) {
1662
+ await showAllAgentsList(ctx)
1663
+ await showAgentsMenu(ctx)
1664
+ } else if (choice === "Create new agent") {
1665
+ await showCreateWizard(ctx)
1666
+ } else if (choice === "Settings") {
1667
+ await showSettings(ctx)
1668
+ await showAgentsMenu(ctx)
1669
+ }
1670
+ }
1671
+
1672
+ async function showAllAgentsList(ctx: ExtensionCommandContext) {
1673
+ const allNames = getAllTypes()
1674
+ if (allNames.length === 0) {
1675
+ ctx.ui.notify("No agents.", "info")
1676
+ return
1677
+ }
1678
+
1679
+ const sourceIndicator = (cfg: AgentConfig | undefined) => {
1680
+ const disabled = cfg?.enabled === false
1681
+ if (cfg?.source === "project") return disabled ? "✕• " : "• "
1682
+ if (cfg?.source === "global") return disabled ? "✕◦ " : "◦ "
1683
+ if (disabled) return "✕ "
1684
+ return " "
1685
+ }
1686
+
1687
+ const entries = allNames.map((name) => {
1688
+ const cfg = getAgentConfig(name)
1689
+ const disabled = cfg?.enabled === false
1690
+ const model = getModelLabel(name, ctx.modelRegistry as ModelRegistry)
1691
+ const indicator = sourceIndicator(cfg)
1692
+ const prefix = `${indicator}${name} · ${model}`
1693
+ const desc = disabled ? "(disabled)" : (cfg?.description ?? name)
1694
+ return { name, prefix, desc }
1695
+ })
1696
+ const maxPrefix = Math.max(...entries.map((e) => e.prefix.length))
1697
+
1698
+ const hasCustom = allNames.some((n) => {
1699
+ const c = getAgentConfig(n)
1700
+ return c && !c.isDefault && c.enabled !== false
1701
+ })
1702
+ const hasDisabled = allNames.some((n) => getAgentConfig(n)?.enabled === false)
1703
+ const legendParts: string[] = []
1704
+ if (hasCustom) legendParts.push("• = project ◦ = global")
1705
+ if (hasDisabled) legendParts.push("✕ = disabled")
1706
+ const legend = legendParts.length ? `\n${legendParts.join(" ")}` : ""
1707
+
1708
+ const options = entries.map(({ prefix, desc }) => `${prefix.padEnd(maxPrefix)} - ${desc}`)
1709
+ if (legend) options.push(legend)
1710
+
1711
+ const choice = await ctx.ui.select("Agent types", options)
1712
+ if (!choice) return
1713
+
1714
+ const agentName = choice
1715
+ .split(" · ")[0]
1716
+ .replace(/^[•◦✕\s]+/, "")
1717
+ .trim()
1718
+ if (getAgentConfig(agentName)) {
1719
+ await showAgentDetail(ctx, agentName)
1720
+ await showAllAgentsList(ctx)
1721
+ }
1722
+ }
1723
+
1724
+ async function showRunningAgents(ctx: ExtensionCommandContext) {
1725
+ const agents = listUserVisibleAgents()
1726
+ if (agents.length === 0) {
1727
+ ctx.ui.notify("No agents.", "info")
1728
+ return
1729
+ }
1730
+
1731
+ const options = agents.map((a) => {
1732
+ const dn = getDisplayName(a.type)
1733
+ const dur = formatDuration(a.startedAt, a.completedAt)
1734
+ return `${dn} (${a.description}) · ${a.toolUses} tools · ${a.status} · ${dur}`
1735
+ })
1736
+
1737
+ const choice = await ctx.ui.select("Running agents", options)
1738
+ if (!choice) return
1739
+
1740
+ const idx = options.indexOf(choice)
1741
+ if (idx < 0) return
1742
+ const record = agents[idx]
1743
+
1744
+ await viewAgentConversation(ctx, record)
1745
+ await showRunningAgents(ctx)
1746
+ }
1747
+
1748
+ async function viewAgentConversation(ctx: ExtensionCommandContext, record: AgentRecord) {
1749
+ if (!record.session) {
1750
+ ctx.ui.notify(`Agent is ${record.status === "queued" ? "queued" : "expired"} - no session available.`, "info")
1751
+ return
1752
+ }
1753
+
1754
+ if (ctx.mode !== "tui") {
1755
+ return
1756
+ }
1757
+
1758
+ const { ConversationViewer } = await import("./ui/conversation-viewer.js")
1759
+ const session = record.session
1760
+ const activity = agentActivity.get(record.id)
1761
+
1762
+ await ctx.ui.custom<undefined>(
1763
+ (tui, theme, _keybindings, done) => {
1764
+ return new ConversationViewer(tui, session, record, activity, theme, done)
1765
+ },
1766
+ {
1767
+ overlay: true,
1768
+ overlayOptions: { anchor: "center", width: "90%" },
1769
+ },
1770
+ )
1771
+ }
1772
+
1773
+ async function showAgentDetail(ctx: ExtensionCommandContext, name: string) {
1774
+ const cfg = getAgentConfig(name)
1775
+ if (!cfg) {
1776
+ ctx.ui.notify(`Agent config not found for "${name}".`, "warning")
1777
+ return
1778
+ }
1779
+
1780
+ const file = findAgentFile(name)
1781
+ const isDefault = cfg.isDefault === true
1782
+ const disabled = cfg.enabled === false
1783
+
1784
+ let menuOptions: string[]
1785
+ if (disabled && file) {
1786
+ menuOptions = isDefault
1787
+ ? ["Enable", "Edit", "Reset to default", "Delete", "Back"]
1788
+ : ["Enable", "Edit", "Delete", "Back"]
1789
+ } else if (isDefault && !file) {
1790
+ menuOptions = ["Eject (export as .md)", "Disable", "Back"]
1791
+ } else if (isDefault && file) {
1792
+ menuOptions = ["Edit", "Disable", "Reset to default", "Delete", "Back"]
1793
+ } else {
1794
+ menuOptions = ["Edit", "Disable", "Delete", "Back"]
1795
+ }
1796
+
1797
+ const choice = await ctx.ui.select(name, menuOptions)
1798
+ if (!choice || choice === "Back") return
1799
+
1800
+ if (choice === "Edit" && file) {
1801
+ const content = readFileSync(file.path, "utf-8")
1802
+ const edited = await ctx.ui.editor(`Edit ${name}`, content)
1803
+ if (edited !== undefined && edited !== content) {
1804
+ const { writeFileSync } = await import("node:fs")
1805
+ writeFileSync(file.path, edited, "utf-8")
1806
+ reloadCustomAgents()
1807
+ ctx.ui.notify(`Updated ${file.path}`, "info")
1808
+ }
1809
+ } else if (choice === "Delete") {
1810
+ if (file) {
1811
+ const confirmed = await ctx.ui.confirm("Delete agent", `Delete ${name} from ${file.location} (${file.path})?`)
1812
+ if (confirmed) {
1813
+ unlinkSync(file.path)
1814
+ reloadCustomAgents()
1815
+ ctx.ui.notify(`Deleted ${file.path}`, "info")
1816
+ }
1817
+ }
1818
+ } else if (choice === "Reset to default" && file) {
1819
+ const confirmed = await ctx.ui.confirm(
1820
+ "Reset to default",
1821
+ `Delete override ${file.path} and restore embedded default?`,
1822
+ )
1823
+ if (confirmed) {
1824
+ unlinkSync(file.path)
1825
+ reloadCustomAgents()
1826
+ ctx.ui.notify(`Restored default ${name}`, "info")
1827
+ }
1828
+ } else if (choice.startsWith("Eject")) {
1829
+ await ejectAgent(ctx, name, cfg)
1830
+ } else if (choice === "Disable") {
1831
+ await disableAgent(ctx, name)
1832
+ } else if (choice === "Enable") {
1833
+ await enableAgent(ctx, name)
1834
+ }
1835
+ }
1836
+
1837
+ async function ejectAgent(ctx: ExtensionCommandContext, name: string, cfg: AgentConfig) {
1838
+ const location = await ctx.ui.select("Choose location", [
1839
+ "Project (.ikie/agents/)",
1840
+ `Personal (${personalAgentsDir()})`,
1841
+ ])
1842
+ if (!location) return
1843
+
1844
+ const targetDir = location.startsWith("Project") ? projectAgentsDir() : personalAgentsDir()
1845
+ mkdirSync(targetDir, { recursive: true })
1846
+
1847
+ const targetPath = join(targetDir, `${name}.md`)
1848
+ if (existsSync(targetPath)) {
1849
+ const overwrite = await ctx.ui.confirm("Overwrite", `${targetPath} already exists. Overwrite?`)
1850
+ if (!overwrite) return
1851
+ }
1852
+
1853
+ const fmFields: string[] = []
1854
+ fmFields.push(`description: ${cfg.description}`)
1855
+ if (cfg.displayName) fmFields.push(`display_name: ${cfg.displayName}`)
1856
+ fmFields.push(`tools: ${cfg.builtinToolNames?.join(", ") || "all"}`)
1857
+ if (cfg.models?.length) fmFields.push(`models: [${cfg.models.map((m) => `"${m}"`).join(", ")}]`)
1858
+ if (cfg.thinking) fmFields.push(`thinking: ${cfg.thinking}`)
1859
+ if (cfg.maxTurns) fmFields.push(`max_turns: ${cfg.maxTurns}`)
1860
+ fmFields.push(`prompt_mode: ${cfg.promptMode}`)
1861
+ if (cfg.extensions === false) fmFields.push("extensions: false")
1862
+ else if (Array.isArray(cfg.extensions)) fmFields.push(`extensions: ${cfg.extensions.join(", ")}`)
1863
+ if (cfg.skills === false) fmFields.push("skills: false")
1864
+ else if (Array.isArray(cfg.skills)) fmFields.push(`skills: ${cfg.skills.join(", ")}`)
1865
+ if (cfg.disallowedTools?.length) fmFields.push(`disallowed_tools: ${cfg.disallowedTools.join(", ")}`)
1866
+ if (cfg.inheritContext) fmFields.push("inherit_context: true")
1867
+ if (cfg.runInBackground) fmFields.push("run_in_background: true")
1868
+ if (cfg.isolated) fmFields.push("isolated: true")
1869
+ if (cfg.memory) fmFields.push(`memory: ${cfg.memory}`)
1870
+ if (cfg.isolation) fmFields.push(`isolation: ${cfg.isolation}`)
1871
+
1872
+ const content = `---\n${fmFields.join("\n")}\n---\n\n${cfg.systemPrompt}\n`
1873
+
1874
+ const { writeFileSync } = await import("node:fs")
1875
+ writeFileSync(targetPath, content, "utf-8")
1876
+ reloadCustomAgents()
1877
+ ctx.ui.notify(`Ejected ${name} to ${targetPath}`, "info")
1878
+ }
1879
+
1880
+ async function disableAgent(ctx: ExtensionCommandContext, name: string) {
1881
+ const file = findAgentFile(name)
1882
+ if (file) {
1883
+ const content = readFileSync(file.path, "utf-8")
1884
+ if (content.includes("\nenabled: false\n")) {
1885
+ ctx.ui.notify(`${name} is already disabled.`, "info")
1886
+ return
1887
+ }
1888
+ const updated = content.replace(/^---\n/, "---\nenabled: false\n")
1889
+ const { writeFileSync } = await import("node:fs")
1890
+ writeFileSync(file.path, updated, "utf-8")
1891
+ reloadCustomAgents()
1892
+ ctx.ui.notify(`Disabled ${name} (${file.path})`, "info")
1893
+ return
1894
+ }
1895
+
1896
+ const location = await ctx.ui.select("Choose location", [
1897
+ "Project (.ikie/agents/)",
1898
+ `Personal (${personalAgentsDir()})`,
1899
+ ])
1900
+ if (!location) return
1901
+
1902
+ const targetDir = location.startsWith("Project") ? projectAgentsDir() : personalAgentsDir()
1903
+ mkdirSync(targetDir, { recursive: true })
1904
+
1905
+ const targetPath = join(targetDir, `${name}.md`)
1906
+ const { writeFileSync } = await import("node:fs")
1907
+ writeFileSync(targetPath, "---\nenabled: false\n---\n", "utf-8")
1908
+ reloadCustomAgents()
1909
+ ctx.ui.notify(`Disabled ${name} (${targetPath})`, "info")
1910
+ }
1911
+
1912
+ async function enableAgent(ctx: ExtensionCommandContext, name: string) {
1913
+ const file = findAgentFile(name)
1914
+ if (!file) return
1915
+
1916
+ const content = readFileSync(file.path, "utf-8")
1917
+ const updated = content.replace(/^(---\n)enabled: false\n/, "$1")
1918
+ const { writeFileSync } = await import("node:fs")
1919
+
1920
+ if (updated.trim() === "---\n---" || updated.trim() === "---\n---\n") {
1921
+ unlinkSync(file.path)
1922
+ reloadCustomAgents()
1923
+ ctx.ui.notify(`Enabled ${name} (removed ${file.path})`, "info")
1924
+ } else {
1925
+ writeFileSync(file.path, updated, "utf-8")
1926
+ reloadCustomAgents()
1927
+ ctx.ui.notify(`Enabled ${name} (${file.path})`, "info")
1928
+ }
1929
+ }
1930
+
1931
+ async function showCreateWizard(ctx: ExtensionCommandContext) {
1932
+ const location = await ctx.ui.select("Choose location", [
1933
+ "Project (.ikie/agents/)",
1934
+ `Personal (${personalAgentsDir()})`,
1935
+ ])
1936
+ if (!location) return
1937
+
1938
+ const targetDir = location.startsWith("Project") ? projectAgentsDir() : personalAgentsDir()
1939
+
1940
+ const method = await ctx.ui.select("Creation method", ["Generate with AI (recommended)", "Manual configuration"])
1941
+ if (!method) return
1942
+
1943
+ if (method.startsWith("Generate")) {
1944
+ await showGenerateWizard(ctx, targetDir)
1945
+ } else {
1946
+ await showManualWizard(ctx, targetDir)
1947
+ }
1948
+ }
1949
+
1950
+ async function showGenerateWizard(ctx: ExtensionCommandContext, targetDir: string) {
1951
+ const description = await ctx.ui.input("Describe what this agent should do")
1952
+ if (!description) return
1953
+
1954
+ const name = await ctx.ui.input("Agent name (filename, no spaces)")
1955
+ if (!name) return
1956
+
1957
+ mkdirSync(targetDir, { recursive: true })
1958
+
1959
+ const targetPath = join(targetDir, `${name}.md`)
1960
+ if (existsSync(targetPath)) {
1961
+ const overwrite = await ctx.ui.confirm("Overwrite", `${targetPath} already exists. Overwrite?`)
1962
+ if (!overwrite) return
1963
+ }
1964
+
1965
+ ctx.ui.notify("Generating agent definition...", "info")
1966
+
1967
+ const generatePrompt = `Create a custom ikie sub-agent definition file based on this description: "${description}"
1968
+
1969
+ Write a markdown file to: ${targetPath}
1970
+
1971
+ The file format is a markdown file with YAML frontmatter and a system prompt body:
1972
+
1973
+ \`\`\`markdown
1974
+ ---
1975
+ description: <one-line description shown in UI>
1976
+ tools: <comma-separated built-in tools: read, bash, edit, write, grep, find, ls. Use "none" for no tools. Omit for all tools>
1977
+ models: <optional ordered list of models, e.g. ["ikie-dev/minimax-m2.7"]. Omit to inherit parent model>
1978
+ thinking: <optional thinking level: off, minimal, low, medium, high, xhigh. Omit to inherit>
1979
+ max_turns: <optional max agentic turns. 0 or omit for unlimited (default)>
1980
+ token_budget: <optional maximum total tokens for this agent. Omit for no profile budget>
1981
+ prompt_mode: <"replace" (body IS the full system prompt) or "append" (body is appended to default prompt). Default: replace>
1982
+ extensions: <true (inherit all MCP/extension tools), false (none), or comma-separated names. Default: true>
1983
+ skills: <true (inherit all), false (none), or comma-separated skill names to preload into prompt. Default: true>
1984
+ disallowed_tools: <comma-separated tool names to block, even if otherwise available. Omit for none>
1985
+ inherit_context: <true to fork parent conversation into agent so it sees chat history. Default: false>
1986
+ run_in_background: <true to run in background by default. Default: false>
1987
+ isolated: <true for no extension/MCP tools, only built-in tools. Default: false>
1988
+ memory: <"user" (global), "project" (per-project), or "local" (gitignored per-project) for persistent memory. Omit for none>
1989
+ ---
1990
+
1991
+ <system prompt body - instructions for the agent>
1992
+ \`\`\`
1993
+
1994
+ Write the file using the write tool. Only write the file, nothing else.`
1995
+
1996
+ const record = await manager.spawnAndWait(pi, ctx as ExtensionContext, AGENT_GENERAL_PURPOSE, generatePrompt, {
1997
+ description: `Generate ${name} agent`,
1998
+ maxTurns: 5,
1999
+ })
2000
+
2001
+ if (record.status === "error") {
2002
+ ctx.ui.notify(`Generation failed: ${record.error}`, "warning")
2003
+ return
2004
+ }
2005
+
2006
+ reloadCustomAgents()
2007
+
2008
+ if (existsSync(targetPath)) {
2009
+ ctx.ui.notify(`Created ${targetPath}`, "info")
2010
+ } else {
2011
+ ctx.ui.notify("Agent generation completed but file was not created. Check the agent output.", "warning")
2012
+ }
2013
+ }
2014
+
2015
+ async function showManualWizard(ctx: ExtensionCommandContext, targetDir: string) {
2016
+ const name = await ctx.ui.input("Agent name (filename, no spaces)")
2017
+ if (!name) return
2018
+
2019
+ const description = await ctx.ui.input("Description (one line)")
2020
+ if (!description) return
2021
+
2022
+ const toolChoice = await ctx.ui.select("Tools", [
2023
+ "all",
2024
+ "none",
2025
+ "read-only (read, bash, grep, find, ls)",
2026
+ "custom...",
2027
+ ])
2028
+ if (!toolChoice) return
2029
+
2030
+ let tools: string
2031
+ if (toolChoice === "all") {
2032
+ tools = BUILTIN_TOOL_NAMES.join(", ")
2033
+ } else if (toolChoice === "none") {
2034
+ tools = "none"
2035
+ } else if (toolChoice.startsWith("read-only")) {
2036
+ tools = "read, bash, grep, find, ls"
2037
+ } else {
2038
+ const customTools = await ctx.ui.input("Tools (comma-separated)", BUILTIN_TOOL_NAMES.join(", "))
2039
+ if (!customTools) return
2040
+ tools = customTools
2041
+ }
2042
+
2043
+ const wizardModelChoices = Array.from(MODEL_CAPABILITIES.entries())
2044
+ .filter(([, entry]) => entry !== "ignored")
2045
+ .map(([id]) => id)
2046
+ .sort()
2047
+
2048
+ const modelChoice = await ctx.ui.select("Model", ["inherit (parent model)", ...wizardModelChoices, "custom..."])
2049
+ if (!modelChoice) return
2050
+
2051
+ let modelLine = ""
2052
+ if (wizardModelChoices.includes(modelChoice)) {
2053
+ modelLine = `\nmodels: ["${IKIE_DEV_PROVIDER}/${modelChoice}"]`
2054
+ } else if (modelChoice === "custom...") {
2055
+ const customModel = await ctx.ui.input("Model (provider/modelId)")
2056
+ if (customModel) modelLine = `\nmodels: ["${customModel}"]`
2057
+ }
2058
+
2059
+ const thinkingChoice = await ctx.ui.select("Thinking level", [
2060
+ "inherit",
2061
+ "off",
2062
+ "minimal",
2063
+ "low",
2064
+ "medium",
2065
+ "high",
2066
+ "xhigh",
2067
+ ])
2068
+ if (!thinkingChoice) return
2069
+
2070
+ let thinkingLine = ""
2071
+ if (thinkingChoice !== "inherit") thinkingLine = `\nthinking: ${thinkingChoice}`
2072
+
2073
+ const maxTurnsInput = await ctx.ui.input("Max turns (optional, blank for unlimited)", "")
2074
+ let maxTurnsLine = ""
2075
+ if (maxTurnsInput?.trim()) {
2076
+ const trimmed = maxTurnsInput.trim()
2077
+ if (!/^\d+$/.test(trimmed)) {
2078
+ ctx.ui.notify("Max turns must be a non-negative integer.", "warning")
2079
+ return
2080
+ }
2081
+ const maxTurns = Number.parseInt(trimmed, 10)
2082
+ maxTurnsLine = `\nmax_turns: ${maxTurns}`
2083
+ }
2084
+
2085
+ const tokenBudgetInput = await ctx.ui.input("Token budget (optional, blank for none)", "")
2086
+ let tokenBudgetLine = ""
2087
+ if (tokenBudgetInput?.trim()) {
2088
+ const trimmed = tokenBudgetInput.trim()
2089
+ if (!/^\d+$/.test(trimmed)) {
2090
+ ctx.ui.notify("Token budget must be a positive integer.", "warning")
2091
+ return
2092
+ }
2093
+ const tokenBudget = Number.parseInt(trimmed, 10)
2094
+ if (tokenBudget <= 0) {
2095
+ ctx.ui.notify("Token budget must be a positive integer.", "warning")
2096
+ return
2097
+ }
2098
+ tokenBudgetLine = `\ntoken_budget: ${tokenBudget}`
2099
+ }
2100
+
2101
+ const systemPrompt = await ctx.ui.editor("System prompt", "")
2102
+ if (systemPrompt === undefined) return
2103
+
2104
+ const content = `---
2105
+ description: ${description}
2106
+ tools: ${tools}${modelLine}${thinkingLine}${maxTurnsLine}${tokenBudgetLine}
2107
+ prompt_mode: replace
2108
+ ---
2109
+
2110
+ ${systemPrompt}
2111
+ `
2112
+
2113
+ mkdirSync(targetDir, { recursive: true })
2114
+ const targetPath = join(targetDir, `${name}.md`)
2115
+
2116
+ if (existsSync(targetPath)) {
2117
+ const overwrite = await ctx.ui.confirm("Overwrite", `${targetPath} already exists. Overwrite?`)
2118
+ if (!overwrite) return
2119
+ }
2120
+
2121
+ const { writeFileSync } = await import("node:fs")
2122
+ writeFileSync(targetPath, content, "utf-8")
2123
+ reloadCustomAgents()
2124
+ ctx.ui.notify(`Created ${targetPath}`, "info")
2125
+ }
2126
+
2127
+ function snapshotSettings(): SubagentsSettings {
2128
+ return {
2129
+ maxConcurrent: manager.getMaxConcurrent(),
2130
+ defaultMaxTurns: getDefaultMaxTurns() ?? 0,
2131
+ graceTurns: getGraceTurns(),
2132
+ defaultJoinMode: getDefaultJoinMode(),
2133
+ }
2134
+ }
2135
+
2136
+ async function showSettings(ctx: ExtensionCommandContext) {
2137
+ const choice = await ctx.ui.select("Settings", [
2138
+ `Max concurrency (current: ${manager.getMaxConcurrent()})`,
2139
+ `Default max turns (current: ${getDefaultMaxTurns() ?? "unlimited"})`,
2140
+ `Grace turns (current: ${getGraceTurns()})`,
2141
+ `Join mode (current: ${getDefaultJoinMode()})`,
2142
+ ])
2143
+ if (!choice) return
2144
+
2145
+ if (choice.startsWith("Max concurrency")) {
2146
+ const val = await ctx.ui.input("Max concurrent background agents", String(manager.getMaxConcurrent()))
2147
+ if (val) {
2148
+ const n = Number.parseInt(val, 10)
2149
+ if (n >= 1) {
2150
+ manager.setMaxConcurrent(n)
2151
+ notifyApplied(ctx, `Max concurrency set to ${n}`)
2152
+ } else {
2153
+ ctx.ui.notify("Must be a positive integer.", "warning")
2154
+ }
2155
+ }
2156
+ } else if (choice.startsWith("Default max turns")) {
2157
+ const val = await ctx.ui.input(
2158
+ "Default max turns before wrap-up (0 = unlimited)",
2159
+ String(getDefaultMaxTurns() ?? 0),
2160
+ )
2161
+ if (val) {
2162
+ const n = Number.parseInt(val, 10)
2163
+ if (n === 0) {
2164
+ setDefaultMaxTurns(undefined)
2165
+ notifyApplied(ctx, "Default max turns set to unlimited")
2166
+ } else if (n >= 1) {
2167
+ setDefaultMaxTurns(n)
2168
+ notifyApplied(ctx, `Default max turns set to ${n}`)
2169
+ } else {
2170
+ ctx.ui.notify("Must be 0 (unlimited) or a positive integer.", "warning")
2171
+ }
2172
+ }
2173
+ } else if (choice.startsWith("Grace turns")) {
2174
+ const val = await ctx.ui.input("Grace turns after wrap-up steer", String(getGraceTurns()))
2175
+ if (val) {
2176
+ const n = Number.parseInt(val, 10)
2177
+ if (n >= 1) {
2178
+ setGraceTurns(n)
2179
+ notifyApplied(ctx, `Grace turns set to ${n}`)
2180
+ } else {
2181
+ ctx.ui.notify("Must be a positive integer.", "warning")
2182
+ }
2183
+ }
2184
+ } else if (choice.startsWith("Join mode")) {
2185
+ const val = await ctx.ui.select("Default join mode for background agents", [
2186
+ "smart - auto-group 2+ agents in same turn (default)",
2187
+ "async - always notify individually",
2188
+ "group - always group background agents",
2189
+ ])
2190
+ if (val) {
2191
+ const mode = val.split(" ")[0] as JoinMode
2192
+ setDefaultJoinMode(mode)
2193
+ notifyApplied(ctx, `Default join mode set to ${mode}`)
2194
+ }
2195
+ }
2196
+ }
2197
+
2198
+ function notifyApplied(ctx: ExtensionCommandContext, successMsg: string) {
2199
+ const { message, level } = saveAndEmitChanged(snapshotSettings(), successMsg, (event, payload) =>
2200
+ pi.events.emit(event, payload),
2201
+ )
2202
+ ctx.ui.notify(message, level)
2203
+ }
2204
+
2205
+ pi.registerCommand("agents", {
2206
+ description: "Manage agents",
2207
+ handler: async (_args, ctx) => {
2208
+ await showAgentsMenu(ctx)
2209
+ },
2210
+ })
2211
+ }
2212
+
2213
+ async function waitForSubagentShutdown(manager: AgentManager): Promise<void> {
2214
+ let timeout: ReturnType<typeof setTimeout> | undefined
2215
+ try {
2216
+ await Promise.race([
2217
+ manager.waitForAll(),
2218
+ new Promise<void>((resolve) => {
2219
+ timeout = setTimeout(resolve, SUBAGENT_SHUTDOWN_WAIT_MS)
2220
+ timeout.unref?.()
2221
+ }),
2222
+ ])
2223
+ } finally {
2224
+ if (timeout) clearTimeout(timeout)
2225
+ }
2226
+ }