crewly 1.14.1 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/README.md +34 -4
  2. package/config/constants.ts +57 -0
  3. package/config/index.ts +6 -2
  4. package/config/roles/architect/soul.md +31 -0
  5. package/config/roles/auditor/soul.md +30 -0
  6. package/config/roles/backend-developer/soul.md +30 -0
  7. package/config/roles/content-strategist/soul.md +29 -0
  8. package/config/roles/designer/soul.md +30 -0
  9. package/config/roles/developer/prompt.md +1 -1
  10. package/config/roles/developer/soul.md +4 -1
  11. package/config/roles/frontend-developer/soul.md +28 -0
  12. package/config/roles/fullstack-dev/soul.md +28 -0
  13. package/config/roles/generalist/soul.md +28 -0
  14. package/config/roles/ops/soul.md +31 -0
  15. package/config/roles/orchestrator/fragments/lifecycle.md +2 -22
  16. package/config/roles/orchestrator/fragments/recovery.md +1 -1
  17. package/config/roles/orchestrator/prompt.md +18 -49
  18. package/config/roles/orchestrator/soul.md +2 -1
  19. package/config/roles/product-manager/prompt.md +1 -1
  20. package/config/roles/product-manager/soul.md +30 -0
  21. package/config/roles/qa/soul.md +31 -0
  22. package/config/roles/qa-engineer/soul.md +31 -0
  23. package/config/roles/researcher/soul.md +4 -1
  24. package/config/roles/sales/soul.md +30 -0
  25. package/config/roles/support/soul.md +30 -0
  26. package/config/roles/team-leader/prompt.md +1 -1
  27. package/config/roles/team-leader/soul.md +32 -0
  28. package/config/roles/tpm/soul.md +31 -0
  29. package/config/roles/ux-designer/soul.md +31 -0
  30. package/config/runtime_scripts/runtime-config.json +7 -0
  31. package/config/skills/_common/lib.sh +124 -2
  32. package/config/skills/_common/lib.test.sh +68 -1
  33. package/config/skills/agent/core/count-json/SKILL.md +61 -0
  34. package/config/skills/agent/core/count-json/execute.sh +52 -0
  35. package/config/skills/agent/core/count-json/execute.test.sh +35 -0
  36. package/config/skills/agent/core/record-prediction/SKILL.md +61 -0
  37. package/config/skills/agent/core/record-prediction/execute.sh +90 -0
  38. package/config/skills/agent/core/record-prediction/execute.test.sh +67 -0
  39. package/config/skills/agent/core/resolve-prediction/SKILL.md +61 -0
  40. package/config/skills/agent/core/resolve-prediction/execute.sh +87 -0
  41. package/config/skills/agent/core/resolve-prediction/execute.test.sh +74 -0
  42. package/config/skills/agent/core/set-focus/SKILL.md +64 -0
  43. package/config/skills/agent/core/set-focus/execute.sh +73 -0
  44. package/config/skills/agent/core/set-focus/execute.test.sh +67 -0
  45. package/config/skills/agent/core/suppress-noise/SKILL.md +59 -0
  46. package/config/skills/agent/core/suppress-noise/execute.sh +68 -0
  47. package/config/skills/agent/core/suppress-noise/execute.test.sh +58 -0
  48. package/config/skills/orchestrator/delegate-task/SKILL.md +17 -21
  49. package/config/skills/orchestrator/delegate-task/execute.sh +18 -9
  50. package/config/skills/orchestrator/delegate-task/execute.test.sh +1 -1
  51. package/config/skills/orchestrator/wiki-migrate/SKILL.md +33 -3
  52. package/config/skills/orchestrator/wiki-migrate/compact.jq +36 -0
  53. package/config/skills/orchestrator/wiki-migrate/execute.sh +35 -5
  54. package/config/skills/orchestrator/wiki-migrate/execute.test.sh +124 -0
  55. package/config/skills/team-leader/verify-output/execute.sh +14 -6
  56. package/config/skills/team-leader/verify-output/execute.test.sh +117 -0
  57. package/dist/backend/backend/src/constants.d.ts +161 -0
  58. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  59. package/dist/backend/backend/src/constants.js +159 -1
  60. package/dist/backend/backend/src/constants.js.map +1 -1
  61. package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.d.ts +76 -0
  62. package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.d.ts.map +1 -0
  63. package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.js +262 -0
  64. package/dist/backend/backend/src/controllers/agent-self-improvement/agent-self-improvement.controller.js.map +1 -0
  65. package/dist/backend/backend/src/controllers/mission/mission-policy.controller.d.ts.map +1 -1
  66. package/dist/backend/backend/src/controllers/mission/mission-policy.controller.js +4 -6
  67. package/dist/backend/backend/src/controllers/mission/mission-policy.controller.js.map +1 -1
  68. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts +10 -0
  69. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.d.ts.map +1 -1
  70. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +78 -16
  71. package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
  72. package/dist/backend/backend/src/controllers/oauth/oauth.routes.d.ts.map +1 -1
  73. package/dist/backend/backend/src/controllers/oauth/oauth.routes.js +31 -0
  74. package/dist/backend/backend/src/controllers/oauth/oauth.routes.js.map +1 -1
  75. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.d.ts.map +1 -1
  76. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js +11 -1
  77. package/dist/backend/backend/src/controllers/orchestrator/orchestrator.controller.js.map +1 -1
  78. package/dist/backend/backend/src/controllers/request-types.d.ts +6 -2
  79. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  80. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +14 -0
  81. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  82. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +59 -0
  83. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  84. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts +9 -0
  85. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
  86. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +14 -1
  87. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
  88. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  89. package/dist/backend/backend/src/controllers/team/team.controller.js +20 -1
  90. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  91. package/dist/backend/backend/src/index.d.ts +13 -0
  92. package/dist/backend/backend/src/index.d.ts.map +1 -1
  93. package/dist/backend/backend/src/index.js +240 -9
  94. package/dist/backend/backend/src/index.js.map +1 -1
  95. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +139 -0
  96. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -0
  97. package/dist/backend/backend/src/middleware/api-token.middleware.js +301 -0
  98. package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -0
  99. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  100. package/dist/backend/backend/src/routes/api.routes.js +9 -1
  101. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  102. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +78 -0
  103. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/agent/agent-registration.service.js +311 -13
  105. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts +7 -0
  107. package/dist/backend/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/agent/claude-runtime.service.js +10 -1
  109. package/dist/backend/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  110. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +8 -0
  111. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  112. package/dist/backend/backend/src/services/agent/codex-runtime.service.js +11 -1
  113. package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  114. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +36 -1
  115. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  116. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +66 -9
  117. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  118. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +7 -0
  119. package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +10 -1
  121. package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  122. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +197 -0
  123. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +422 -3
  125. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/agent/opencode-runtime.service.d.ts +114 -0
  127. package/dist/backend/backend/src/services/agent/opencode-runtime.service.d.ts.map +1 -0
  128. package/dist/backend/backend/src/services/agent/opencode-runtime.service.js +185 -0
  129. package/dist/backend/backend/src/services/agent/opencode-runtime.service.js.map +1 -0
  130. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +27 -0
  131. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  132. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +71 -1
  133. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  134. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +1 -1
  135. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  136. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +15 -3
  137. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  138. package/dist/backend/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
  139. package/dist/backend/backend/src/services/agent/runtime-service.factory.js +9 -0
  140. package/dist/backend/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  141. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts +23 -0
  142. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +45 -0
  144. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  145. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -1
  146. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +1 -1
  148. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  149. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +43 -3
  150. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -1
  151. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js +85 -4
  152. package/dist/backend/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -1
  153. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +35 -0
  154. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +73 -2
  156. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  157. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +44 -0
  158. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js +33 -0
  160. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  161. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  162. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +13 -1
  163. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  164. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  165. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +6 -0
  166. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  167. package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts +45 -0
  168. package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts.map +1 -0
  169. package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.js +59 -0
  170. package/dist/backend/backend/src/services/ai/self-improvement/agent-memory-provider.js.map +1 -0
  171. package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.d.ts +137 -0
  172. package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.d.ts.map +1 -0
  173. package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.js +216 -0
  174. package/dist/backend/backend/src/services/ai/self-improvement/consolidation-scheduler.service.js.map +1 -0
  175. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +4 -1
  176. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -1
  177. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js +3 -1
  178. package/dist/backend/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -1
  179. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +26 -2
  180. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/backup/backup-archive.service.js +91 -10
  182. package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
  183. package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts +15 -2
  184. package/dist/backend/backend/src/services/backup/backup-restore.service.d.ts.map +1 -1
  185. package/dist/backend/backend/src/services/backup/backup-restore.service.js +100 -21
  186. package/dist/backend/backend/src/services/backup/backup-restore.service.js.map +1 -1
  187. package/dist/backend/backend/src/services/backup/backup.types.d.ts +85 -2
  188. package/dist/backend/backend/src/services/backup/backup.types.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/backup/backup.types.js +21 -0
  190. package/dist/backend/backend/src/services/backup/backup.types.js.map +1 -1
  191. package/dist/backend/backend/src/services/backup/project-file-filter.d.ts +35 -0
  192. package/dist/backend/backend/src/services/backup/project-file-filter.d.ts.map +1 -0
  193. package/dist/backend/backend/src/services/backup/project-file-filter.js +90 -0
  194. package/dist/backend/backend/src/services/backup/project-file-filter.js.map +1 -0
  195. package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts +165 -0
  196. package/dist/backend/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -0
  197. package/dist/backend/backend/src/services/budget/team-budget-gate.service.js +364 -0
  198. package/dist/backend/backend/src/services/budget/team-budget-gate.service.js.map +1 -0
  199. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -3
  200. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  201. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +34 -3
  202. package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  203. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +5 -3
  204. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  205. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +6 -4
  206. package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  207. package/dist/backend/backend/src/services/core/api-token.service.d.ts +78 -0
  208. package/dist/backend/backend/src/services/core/api-token.service.d.ts.map +1 -0
  209. package/dist/backend/backend/src/services/core/api-token.service.js +149 -0
  210. package/dist/backend/backend/src/services/core/api-token.service.js.map +1 -0
  211. package/dist/backend/backend/src/services/core/logger.service.d.ts +10 -1
  212. package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
  213. package/dist/backend/backend/src/services/core/logger.service.js +18 -3
  214. package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
  215. package/dist/backend/backend/src/services/core/storage.service.d.ts +11 -0
  216. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  217. package/dist/backend/backend/src/services/core/storage.service.js +34 -0
  218. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  219. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +7 -1
  220. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  221. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +29 -7
  222. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  223. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.d.ts +140 -0
  224. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.d.ts.map +1 -0
  225. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.js +346 -0
  226. package/dist/backend/backend/src/services/hierarchy/hierarchy-escalation-monitor.service.js.map +1 -0
  227. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts +1 -1
  228. package/dist/backend/backend/src/services/mcp-tool-definitions.js +1 -1
  229. package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
  230. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +27 -3
  231. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  232. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +42 -7
  233. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  234. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +47 -0
  235. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  236. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +67 -1
  237. package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  238. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +22 -15
  239. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  240. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +24 -15
  241. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  242. package/dist/backend/backend/src/services/runtime-adapter.d.ts +10 -1
  243. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
  244. package/dist/backend/backend/src/services/runtime-adapter.js +12 -1
  245. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
  246. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +7 -1
  247. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  248. package/dist/backend/backend/src/services/session/pty/pty-session.js +9 -3
  249. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  250. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts +27 -0
  251. package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  252. package/dist/backend/backend/src/services/session/session-handoff.service.js +110 -22
  253. package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
  254. package/dist/backend/backend/src/services/settings/settings.service.d.ts.map +1 -1
  255. package/dist/backend/backend/src/services/settings/settings.service.js +1 -0
  256. package/dist/backend/backend/src/services/settings/settings.service.js.map +1 -1
  257. package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
  258. package/dist/backend/backend/src/services/skill/skill-catalog.service.js +7 -1
  259. package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
  260. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +52 -0
  261. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  262. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +132 -6
  263. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  264. package/dist/backend/backend/src/services/v3/escalation-boot.d.ts +87 -0
  265. package/dist/backend/backend/src/services/v3/escalation-boot.d.ts.map +1 -0
  266. package/dist/backend/backend/src/services/v3/escalation-boot.js +128 -0
  267. package/dist/backend/backend/src/services/v3/escalation-boot.js.map +1 -0
  268. package/dist/backend/backend/src/services/v3/escalation.service.d.ts +1 -1
  269. package/dist/backend/backend/src/services/v3/escalation.service.d.ts.map +1 -1
  270. package/dist/backend/backend/src/services/v3/escalation.service.js +4 -4
  271. package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
  272. package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.d.ts +78 -0
  273. package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.d.ts.map +1 -0
  274. package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.js +129 -0
  275. package/dist/backend/backend/src/services/v3/fallback-trigger-cleanup.subscriber.js.map +1 -0
  276. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.d.ts +118 -0
  277. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.d.ts.map +1 -0
  278. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.js +277 -0
  279. package/dist/backend/backend/src/services/v3/kr-completion.subscriber.js.map +1 -0
  280. package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.d.ts +117 -0
  281. package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.d.ts.map +1 -0
  282. package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.js +214 -0
  283. package/dist/backend/backend/src/services/v3/kr-skill-measurer.service.js.map +1 -0
  284. package/dist/backend/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  285. package/dist/backend/backend/src/services/v3/kr-tracking.service.js +3 -6
  286. package/dist/backend/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  287. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts +5 -0
  288. package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  289. package/dist/backend/backend/src/services/v3/mission-executor.service.js +36 -0
  290. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  291. package/dist/backend/backend/src/services/v3/mission-paths.d.ts +69 -0
  292. package/dist/backend/backend/src/services/v3/mission-paths.d.ts.map +1 -0
  293. package/dist/backend/backend/src/services/v3/mission-paths.js +92 -0
  294. package/dist/backend/backend/src/services/v3/mission-paths.js.map +1 -0
  295. package/dist/backend/backend/src/services/v3/mission-period.service.d.ts.map +1 -1
  296. package/dist/backend/backend/src/services/v3/mission-period.service.js +1 -12
  297. package/dist/backend/backend/src/services/v3/mission-period.service.js.map +1 -1
  298. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts +76 -2
  299. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -1
  300. package/dist/backend/backend/src/services/v3/mission-reminder.service.js +267 -9
  301. package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -1
  302. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts +6 -4
  303. package/dist/backend/backend/src/services/v3/okr-cascade.service.d.ts.map +1 -1
  304. package/dist/backend/backend/src/services/v3/okr-cascade.service.js +11 -10
  305. package/dist/backend/backend/src/services/v3/okr-cascade.service.js.map +1 -1
  306. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts +24 -0
  307. package/dist/backend/backend/src/services/v3/okr-review.service.d.ts.map +1 -1
  308. package/dist/backend/backend/src/services/v3/okr-review.service.js +63 -3
  309. package/dist/backend/backend/src/services/v3/okr-review.service.js.map +1 -1
  310. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts +17 -0
  311. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
  312. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +62 -13
  313. package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
  314. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +6 -2
  315. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  316. package/dist/backend/backend/src/services/v3/v3-data.service.js +14 -9
  317. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  318. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +14 -0
  319. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  320. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +31 -0
  321. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  322. package/dist/backend/backend/src/types/event-bus.types.d.ts +4 -2
  323. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  324. package/dist/backend/backend/src/types/event-bus.types.js +15 -0
  325. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  326. package/dist/backend/backend/src/types/index.d.ts +27 -1
  327. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  328. package/dist/backend/backend/src/types/index.js.map +1 -1
  329. package/dist/backend/backend/src/types/settings.types.d.ts +1 -1
  330. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  331. package/dist/backend/backend/src/types/settings.types.js +7 -0
  332. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  333. package/dist/backend/backend/src/types/team-template.types.d.ts +2 -2
  334. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  335. package/dist/backend/backend/src/types/team-template.types.js +1 -1
  336. package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
  337. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  338. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  339. package/dist/backend/backend/src/types/v2/index.js +1 -1
  340. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  341. package/dist/backend/backend/src/types/v2/mission.types.d.ts +41 -0
  342. package/dist/backend/backend/src/types/v2/mission.types.d.ts.map +1 -1
  343. package/dist/backend/backend/src/types/v2/mission.types.js +29 -0
  344. package/dist/backend/backend/src/types/v2/mission.types.js.map +1 -1
  345. package/dist/backend/backend/src/utils/network-exposure.utils.d.ts +67 -0
  346. package/dist/backend/backend/src/utils/network-exposure.utils.d.ts.map +1 -0
  347. package/dist/backend/backend/src/utils/network-exposure.utils.js +92 -0
  348. package/dist/backend/backend/src/utils/network-exposure.utils.js.map +1 -0
  349. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts +2 -0
  350. package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  351. package/dist/backend/backend/src/utils/terminal-string-ops.js +14 -0
  352. package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
  353. package/dist/backend/build-info.json +2 -2
  354. package/dist/backend/config/constants.d.ts +53 -0
  355. package/dist/backend/config/constants.d.ts.map +1 -1
  356. package/dist/backend/config/constants.js +54 -0
  357. package/dist/backend/config/constants.js.map +1 -1
  358. package/dist/backend/config/index.d.ts +2 -2
  359. package/dist/backend/config/index.d.ts.map +1 -1
  360. package/dist/backend/config/index.js +6 -6
  361. package/dist/backend/config/index.js.map +1 -1
  362. package/dist/cli/backend/src/constants.d.ts +161 -0
  363. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  364. package/dist/cli/backend/src/constants.js +159 -1
  365. package/dist/cli/backend/src/constants.js.map +1 -1
  366. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +78 -0
  367. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  368. package/dist/cli/backend/src/services/agent/agent-registration.service.js +311 -13
  369. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  370. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +7 -0
  371. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -1
  372. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +10 -1
  373. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -1
  374. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +8 -0
  375. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  376. package/dist/cli/backend/src/services/agent/codex-runtime.service.js +11 -1
  377. package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  378. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +36 -1
  379. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  380. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +66 -9
  381. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  382. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +7 -0
  383. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
  384. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +10 -1
  385. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
  386. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +197 -0
  387. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  388. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +422 -3
  389. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  390. package/dist/cli/backend/src/services/agent/opencode-runtime.service.d.ts +114 -0
  391. package/dist/cli/backend/src/services/agent/opencode-runtime.service.d.ts.map +1 -0
  392. package/dist/cli/backend/src/services/agent/opencode-runtime.service.js +185 -0
  393. package/dist/cli/backend/src/services/agent/opencode-runtime.service.js.map +1 -0
  394. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +27 -0
  395. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  396. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +71 -1
  397. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  398. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +1 -1
  399. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  400. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +15 -3
  401. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  402. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -1
  403. package/dist/cli/backend/src/services/agent/runtime-service.factory.js +9 -0
  404. package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -1
  405. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +23 -0
  406. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  407. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +45 -0
  408. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  409. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +43 -3
  410. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -1
  411. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +85 -4
  412. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -1
  413. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +35 -0
  414. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  415. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +73 -2
  416. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  417. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +44 -0
  418. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  419. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js +33 -0
  420. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  421. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  422. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +13 -1
  423. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  424. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  425. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +6 -0
  426. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  427. package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts +45 -0
  428. package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.d.ts.map +1 -0
  429. package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.js +59 -0
  430. package/dist/cli/backend/src/services/ai/self-improvement/agent-memory-provider.js.map +1 -0
  431. package/dist/cli/backend/src/services/ai/self-improvement/attention.service.d.ts +74 -0
  432. package/dist/cli/backend/src/services/ai/self-improvement/attention.service.d.ts.map +1 -0
  433. package/dist/cli/backend/src/services/ai/self-improvement/attention.service.js +132 -0
  434. package/dist/cli/backend/src/services/ai/self-improvement/attention.service.js.map +1 -0
  435. package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts +107 -0
  436. package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.d.ts.map +1 -0
  437. package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.js +183 -0
  438. package/dist/cli/backend/src/services/ai/self-improvement/memory-consolidation.service.js.map +1 -0
  439. package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts +100 -0
  440. package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.d.ts.map +1 -0
  441. package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.js +130 -0
  442. package/dist/cli/backend/src/services/ai/self-improvement/prediction-calibration.service.js.map +1 -0
  443. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +26 -2
  444. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  445. package/dist/cli/backend/src/services/backup/backup-archive.service.js +91 -10
  446. package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
  447. package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts +15 -2
  448. package/dist/cli/backend/src/services/backup/backup-restore.service.d.ts.map +1 -1
  449. package/dist/cli/backend/src/services/backup/backup-restore.service.js +100 -21
  450. package/dist/cli/backend/src/services/backup/backup-restore.service.js.map +1 -1
  451. package/dist/cli/backend/src/services/backup/backup.types.d.ts +85 -2
  452. package/dist/cli/backend/src/services/backup/backup.types.d.ts.map +1 -1
  453. package/dist/cli/backend/src/services/backup/backup.types.js +21 -0
  454. package/dist/cli/backend/src/services/backup/backup.types.js.map +1 -1
  455. package/dist/cli/backend/src/services/backup/project-file-filter.d.ts +35 -0
  456. package/dist/cli/backend/src/services/backup/project-file-filter.d.ts.map +1 -0
  457. package/dist/cli/backend/src/services/backup/project-file-filter.js +90 -0
  458. package/dist/cli/backend/src/services/backup/project-file-filter.js.map +1 -0
  459. package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts +165 -0
  460. package/dist/cli/backend/src/services/budget/team-budget-gate.service.d.ts.map +1 -0
  461. package/dist/cli/backend/src/services/budget/team-budget-gate.service.js +364 -0
  462. package/dist/cli/backend/src/services/budget/team-budget-gate.service.js.map +1 -0
  463. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +23 -3
  464. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
  465. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +34 -3
  466. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
  467. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +5 -3
  468. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
  469. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +6 -4
  470. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
  471. package/dist/cli/backend/src/services/core/api-token.service.d.ts +78 -0
  472. package/dist/cli/backend/src/services/core/api-token.service.d.ts.map +1 -0
  473. package/dist/cli/backend/src/services/core/api-token.service.js +149 -0
  474. package/dist/cli/backend/src/services/core/api-token.service.js.map +1 -0
  475. package/dist/cli/backend/src/services/core/logger.service.d.ts +10 -1
  476. package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
  477. package/dist/cli/backend/src/services/core/logger.service.js +18 -3
  478. package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
  479. package/dist/cli/backend/src/services/core/storage.service.d.ts +11 -0
  480. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  481. package/dist/cli/backend/src/services/core/storage.service.js +34 -0
  482. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  483. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts +1 -1
  484. package/dist/cli/backend/src/services/mcp-tool-definitions.js +1 -1
  485. package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
  486. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +27 -3
  487. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  488. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +42 -7
  489. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  490. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +47 -0
  491. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
  492. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +67 -1
  493. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
  494. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +7 -1
  495. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  496. package/dist/cli/backend/src/services/session/pty/pty-session.js +9 -3
  497. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  498. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +27 -0
  499. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
  500. package/dist/cli/backend/src/services/session/session-handoff.service.js +110 -22
  501. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
  502. package/dist/cli/backend/src/services/settings/settings.service.d.ts.map +1 -1
  503. package/dist/cli/backend/src/services/settings/settings.service.js +1 -0
  504. package/dist/cli/backend/src/services/settings/settings.service.js.map +1 -1
  505. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +52 -0
  506. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  507. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +132 -6
  508. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  509. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -1
  510. package/dist/cli/backend/src/services/v3/kr-tracking.service.js +3 -6
  511. package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -1
  512. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +5 -0
  513. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
  514. package/dist/cli/backend/src/services/v3/mission-executor.service.js +36 -0
  515. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
  516. package/dist/cli/backend/src/services/v3/mission-paths.d.ts +69 -0
  517. package/dist/cli/backend/src/services/v3/mission-paths.d.ts.map +1 -0
  518. package/dist/cli/backend/src/services/v3/mission-paths.js +92 -0
  519. package/dist/cli/backend/src/services/v3/mission-paths.js.map +1 -0
  520. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +6 -2
  521. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  522. package/dist/cli/backend/src/services/v3/v3-data.service.js +14 -9
  523. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
  524. package/dist/cli/backend/src/types/event-bus.types.d.ts +4 -2
  525. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  526. package/dist/cli/backend/src/types/event-bus.types.js +15 -0
  527. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  528. package/dist/cli/backend/src/types/index.d.ts +27 -1
  529. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  530. package/dist/cli/backend/src/types/index.js.map +1 -1
  531. package/dist/cli/backend/src/types/settings.types.d.ts +1 -1
  532. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  533. package/dist/cli/backend/src/types/settings.types.js +7 -0
  534. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  535. package/dist/cli/backend/src/types/team-template.types.d.ts +2 -2
  536. package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
  537. package/dist/cli/backend/src/types/team-template.types.js +1 -1
  538. package/dist/cli/backend/src/types/team-template.types.js.map +1 -1
  539. package/dist/cli/backend/src/types/v2/index.d.ts +1 -1
  540. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  541. package/dist/cli/backend/src/types/v2/index.js +1 -1
  542. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  543. package/dist/cli/backend/src/types/v2/mission.types.d.ts +41 -0
  544. package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -1
  545. package/dist/cli/backend/src/types/v2/mission.types.js +29 -0
  546. package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -1
  547. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts +2 -0
  548. package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
  549. package/dist/cli/backend/src/utils/terminal-string-ops.js +14 -0
  550. package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
  551. package/dist/cli/cli/src/commands/backup.d.ts +25 -0
  552. package/dist/cli/cli/src/commands/backup.d.ts.map +1 -1
  553. package/dist/cli/cli/src/commands/backup.js +120 -6
  554. package/dist/cli/cli/src/commands/backup.js.map +1 -1
  555. package/dist/cli/cli/src/commands/doctor.d.ts +58 -0
  556. package/dist/cli/cli/src/commands/doctor.d.ts.map +1 -0
  557. package/dist/cli/cli/src/commands/doctor.js +163 -0
  558. package/dist/cli/cli/src/commands/doctor.js.map +1 -0
  559. package/dist/cli/cli/src/commands/onboard.d.ts +2 -2
  560. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  561. package/dist/cli/cli/src/commands/onboard.js +15 -7
  562. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  563. package/dist/cli/cli/src/commands/service.d.ts +68 -11
  564. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  565. package/dist/cli/cli/src/commands/service.js +183 -51
  566. package/dist/cli/cli/src/commands/service.js.map +1 -1
  567. package/dist/cli/cli/src/commands/token.d.ts +53 -0
  568. package/dist/cli/cli/src/commands/token.d.ts.map +1 -0
  569. package/dist/cli/cli/src/commands/token.js +70 -0
  570. package/dist/cli/cli/src/commands/token.js.map +1 -0
  571. package/dist/cli/cli/src/index.js +40 -5
  572. package/dist/cli/cli/src/index.js.map +1 -1
  573. package/dist/cli/cli/src/scripts/check-native-toolchain.d.ts +21 -0
  574. package/dist/cli/cli/src/scripts/check-native-toolchain.d.ts.map +1 -0
  575. package/dist/cli/cli/src/scripts/check-native-toolchain.js +40 -0
  576. package/dist/cli/cli/src/scripts/check-native-toolchain.js.map +1 -0
  577. package/dist/cli/cli/src/utils/native-toolchain.d.ts +111 -0
  578. package/dist/cli/cli/src/utils/native-toolchain.d.ts.map +1 -0
  579. package/dist/cli/cli/src/utils/native-toolchain.js +146 -0
  580. package/dist/cli/cli/src/utils/native-toolchain.js.map +1 -0
  581. package/dist/cli/cli/src/utils/package-root.d.ts +55 -0
  582. package/dist/cli/cli/src/utils/package-root.d.ts.map +1 -0
  583. package/dist/cli/cli/src/utils/package-root.js +107 -0
  584. package/dist/cli/cli/src/utils/package-root.js.map +1 -0
  585. package/dist/cli/cli/src/utils/version-check.d.ts +18 -2
  586. package/dist/cli/cli/src/utils/version-check.d.ts.map +1 -1
  587. package/dist/cli/cli/src/utils/version-check.js +51 -4
  588. package/dist/cli/cli/src/utils/version-check.js.map +1 -1
  589. package/dist/cli/config/constants.d.ts +53 -0
  590. package/dist/cli/config/constants.d.ts.map +1 -1
  591. package/dist/cli/config/constants.js +54 -0
  592. package/dist/cli/config/constants.js.map +1 -1
  593. package/dist/cli/config/index.d.ts +2 -2
  594. package/dist/cli/config/index.d.ts.map +1 -1
  595. package/dist/cli/config/index.js +6 -6
  596. package/dist/cli/config/index.js.map +1 -1
  597. package/frontend/dist/assets/index-019817e2.js +4961 -0
  598. package/frontend/dist/assets/{index-88feb412.css → index-a56613e7.css} +1 -1
  599. package/frontend/dist/index.html +2 -2
  600. package/package.json +3 -2
  601. package/frontend/dist/assets/index-190a957f.js +0 -4961
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: Wiki Migrate
3
3
  description: One-shot conversion from legacy `.crewly/knowledge/*.json` + loose `.md` + agent `memory.json` into the v2.1 three-scope vault structure. Default dry-run; idempotent; never deletes legacy files.
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  category: knowledge
6
6
  skillType: claude-skill
7
7
  assignableRoles:
@@ -65,14 +65,39 @@ Vault picker:
65
65
  | `--project-root <abs path>` | yes | — | The dir containing `.crewly/`. |
66
66
  | `--apply` | no | off | Execute writes. Without this, run a dry-run scan. |
67
67
  | `--no-memory` | no | off | Skip the per-agent `memory.json` import. |
68
+ | `--full` (or `"full": true`) | no | off | Return the raw backend payload including the full `proposedPages` array. Default output is the compact report below. |
69
+
70
+ ## Output: compact by default
71
+
72
+ The backend payload carries one row per proposed page — hundreds of entries on a real project — and re-reading it on every scan is a context-cost problem, not a decision aid. By default the skill therefore returns a **compact report**:
73
+
74
+ ```json
75
+ {
76
+ "ok": true, "vaultPath": "...", "legacyDetected": true,
77
+ "bootstrapNeeded": { "project": true, "global": false, "teams": [] },
78
+ "summary": { "decisions": 10, "patterns": 8, "...": 0, "alreadyMigrated": 8 },
79
+ "totalProposed": 25, "alreadyMigrated": 8, "skippedOther": 1, "netNew": 16,
80
+ "routingUncertain": 2,
81
+ "byCategory": { "decision": { "proposed": 10, "netNew": 6 }, "pattern": { "...": 0 } },
82
+ "netNewSample": [ "llm-curated/decisions/2026-05-01-foo.md", "..." ],
83
+ "hint": "compact view — pass --full for the complete proposedPages array"
84
+ }
85
+ ```
86
+
87
+ - `byCategory` is keyed by `sourceType`; `netNew` = pages without a `skipReason`.
88
+ - `netNewSample` lists the first 10 net-new target paths (`WIKI_MIGRATE_SAMPLE_SIZE` env overrides the count).
89
+ - Apply-only keys (`applied`, `skipped`, `bootstrapped`, `manifestPath`) pass through unchanged.
90
+
91
+ Only pass `--full` when you actually need per-row detail (a specific `sourceFile`, `sourceId`, or the `routingUncertain` rows). Even then the shared skill output cap applies: very large payloads are parked under `$CREWLY_HOME/tmp/skill-output/` and you get a `{"truncated":true,"file":...}` envelope — read the file with `jq` and select the fields you need.
68
92
 
69
93
  ## What you do with the report
70
94
 
71
95
  **On scan (dry-run):**
72
- - Read `proposedPages` — each row tells you target path, source file, sourceId.
96
+ - `netNew == 0` → nothing to do; stop here.
97
+ - Read `byCategory` / `netNewSample` to sanity-check what will land; use `--full` only if a specific row needs inspection.
73
98
  - Look at `bootstrapNeeded` — confirms which vaults will be created.
74
99
  - Look at `summary` — counts per source type.
75
- - Look for `routingUncertain: true` rows — these will land in the project vault but flagged for later human review.
100
+ - `routingUncertain` counts rows that will land in the project vault but flagged for later human review (`--full` shows which).
76
101
 
77
102
  **On apply:**
78
103
  - Confirm `applied` count matches the proposal.
@@ -97,6 +122,11 @@ bash execute.sh --project-root /Users/me/code/myproject --apply
97
122
  bash execute.sh --project-root /Users/me/code/myproject --no-memory --apply
98
123
  ```
99
124
 
125
+ **Inspect every proposed row (raw payload):**
126
+ ```bash
127
+ bash execute.sh --project-root /Users/me/code/myproject --full
128
+ ```
129
+
100
130
  ## Failure modes
101
131
 
102
132
  - `400 invalid_input` — `projectRoot` is not absolute, or `confirm` was missing on apply (skill handles this automatically).
@@ -0,0 +1,36 @@
1
+ # wiki-migrate compact report filter.
2
+ #
3
+ # The backend's scan/apply payload carries the full `proposedPages` array —
4
+ # hundreds of rows on a real project — and the orchestrator only needs the
5
+ # shape of the migration to decide whether to apply it. This filter drops the
6
+ # array and replaces it with counts (by sourceType), the already-migrated /
7
+ # net-new split, and a short sample of net-new target paths.
8
+ #
9
+ # Every other top-level key (ok, vaultPath, legacyDetected, bootstrapNeeded,
10
+ # summary, applied, skipped, bootstrapped, manifestPath, ...) passes through.
11
+ #
12
+ # Args: $sample (number) — how many net-new relPaths to include.
13
+ def is_new: (.skipReason // "") == "";
14
+
15
+ . as $r
16
+ | ($r.proposedPages // []) as $pages
17
+ | ($pages | map(select(is_new))) as $new
18
+ | ($r | del(.proposedPages))
19
+ + {
20
+ totalProposed: ($pages | length),
21
+ alreadyMigrated: ($pages | map(select(.skipReason == "already migrated")) | length),
22
+ skippedOther: ($pages | map(select((.skipReason // "") != "" and .skipReason != "already migrated")) | length),
23
+ netNew: ($new | length),
24
+ routingUncertain: ($pages | map(select(.routingUncertain == true)) | length),
25
+ byCategory: (
26
+ $pages
27
+ | group_by(.sourceType)
28
+ | map({
29
+ key: (.[0].sourceType // "unknown"),
30
+ value: { proposed: length, netNew: (map(select(is_new)) | length) }
31
+ })
32
+ | from_entries
33
+ ),
34
+ netNewSample: ($new | .[:$sample] | map(.targetRelativePath)),
35
+ hint: "compact view — pass --full for the complete proposedPages array"
36
+ }
@@ -12,18 +12,30 @@
12
12
  # Safe to re-run. The manifest at <project>/.crewly/wiki/.migration-state.json
13
13
  # tracks already-migrated entries by content hash + sourceId.
14
14
  #
15
+ # Output is a COMPACT report by default (counts by sourceType, alreadyMigrated
16
+ # vs netNew, first few net-new target paths). The raw backend payload carries
17
+ # the full `proposedPages` array — hundreds of rows — and is only returned
18
+ # with --full.
19
+ #
15
20
  # Usage:
16
- # bash execute.sh --project-root /abs/path # scan
21
+ # bash execute.sh --project-root /abs/path # scan (compact)
22
+ # bash execute.sh --project-root /abs/path --full # scan (raw proposedPages)
17
23
  # bash execute.sh --project-root /abs/path --apply # write
18
24
  # bash execute.sh --project-root /abs/path --no-memory --apply # skip agent memory.json copies
19
25
  set -euo pipefail
20
26
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
21
27
  source "${SCRIPT_DIR}/../../_common/lib.sh"
22
28
 
29
+ # Number of net-new target paths listed in the compact report.
30
+ WIKI_MIGRATE_SAMPLE_SIZE="${WIKI_MIGRATE_SAMPLE_SIZE:-10}"
31
+ COMPACT_FILTER="${SCRIPT_DIR}/compact.jq"
32
+
23
33
  INPUT_JSON=""
24
34
  PROJECT_ROOT=""
25
35
  APPLY="false"
26
36
  INCLUDE_MEMORY="true"
37
+ # lib.sh sets CREWLY_SKILL_FULL_OUTPUT=1 when --full is anywhere in argv.
38
+ FULL="${CREWLY_SKILL_FULL_OUTPUT:-0}"
27
39
 
28
40
  if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
29
41
  INPUT_JSON="$1"; shift || true
@@ -34,6 +46,7 @@ while [[ $# -gt 0 ]]; do
34
46
  --project-root|-p) PROJECT_ROOT="$2"; shift 2 ;;
35
47
  --apply|-a) APPLY="true"; shift ;;
36
48
  --no-memory) INCLUDE_MEMORY="false"; shift ;;
49
+ --full|-f) FULL="1"; shift ;;
37
50
  --json|-j) INPUT_JSON="$2"; shift 2 ;;
38
51
  --help|-h)
39
52
  cat <<EOF
@@ -42,14 +55,20 @@ Usage:
42
55
  execute.sh --project-root <abs path> --apply # execute migration
43
56
  execute.sh --project-root <abs path> --no-memory --apply
44
57
  # apply but skip agent memory.json copies
58
+ execute.sh --project-root <abs path> --full # raw payload incl. full proposedPages
45
59
 
46
- Outputs a JSON report:
60
+ Outputs a compact JSON report (default):
47
61
  - legacyDetected : true when any legacy source exists
48
- - proposedPages : per-entry target + skipReason (when "already migrated")
62
+ - totalProposed / alreadyMigrated / netNew / skippedOther / routingUncertain
63
+ - byCategory : {sourceType: {proposed, netNew}}
64
+ - netNewSample : first ${WIKI_MIGRATE_SAMPLE_SIZE} net-new target paths
49
65
  - bootstrapNeeded : which vaults will be bootstrapped on --apply
50
66
  - summary : counts per source type
51
67
  - applied/skipped : only present on --apply
52
68
 
69
+ With --full the raw backend payload is returned instead, including the
70
+ per-entry proposedPages array (target + skipReason when "already migrated").
71
+
53
72
  The skill makes NO LLM calls. Re-running is safe (idempotent via manifest).
54
73
  EOF
55
74
  exit 0 ;;
@@ -65,6 +84,7 @@ if [ -n "$INPUT_JSON" ]; then
65
84
  [ -z "$PROJECT_ROOT" ] && PROJECT_ROOT=$(printf '%s' "$INPUT" | jq -r '.projectRoot // empty')
66
85
  if printf '%s' "$INPUT" | jq -e '.apply == true' >/dev/null 2>&1; then APPLY="true"; fi
67
86
  if printf '%s' "$INPUT" | jq -e '.includeAgentMemory == false' >/dev/null 2>&1; then INCLUDE_MEMORY="false"; fi
87
+ if printf '%s' "$INPUT" | jq -e '.full == true' >/dev/null 2>&1; then FULL="1"; fi
68
88
  fi
69
89
 
70
90
  require_param "projectRoot (--project-root)" "$PROJECT_ROOT"
@@ -74,9 +94,19 @@ export _WM_M="$INCLUDE_MEMORY"
74
94
 
75
95
  if [ "$APPLY" = "true" ]; then
76
96
  BODY=$(jq -n '{projectRoot: env._WM_R, includeAgentMemory: (env._WM_M == "true"), confirm: true}')
77
- api_call POST "/wiki/migrate/apply" "$BODY"
97
+ ENDPOINT="/wiki/migrate/apply"
78
98
  else
79
99
  BODY=$(jq -n '{projectRoot: env._WM_R, includeAgentMemory: (env._WM_M == "true")}')
80
- api_call POST "/wiki/migrate/scan" "$BODY"
100
+ ENDPOINT="/wiki/migrate/scan"
81
101
  fi
82
102
  unset _WM_R _WM_M
103
+
104
+ # Fetch the raw payload uncapped so the compact filter sees the whole array;
105
+ # the compact report is small, and --full re-enters the shared output cap.
106
+ RAW=$(CREWLY_SKILL_FULL_OUTPUT=1 api_call POST "$ENDPOINT" "$BODY")
107
+
108
+ if [ "$FULL" = "1" ]; then
109
+ _cap_skill_output "$RAW"
110
+ else
111
+ printf '%s' "$RAW" | jq --argjson sample "$WIKI_MIGRATE_SAMPLE_SIZE" -f "$COMPACT_FILTER"
112
+ fi
@@ -0,0 +1,124 @@
1
+ #!/bin/bash
2
+ # Tests for ORC wiki-migrate execute.sh
3
+ #
4
+ # The backend's scan payload carries the full `proposedPages` array (hundreds
5
+ # of rows on a real project). The skill must return a COMPACT report by
6
+ # default and only hand back the raw payload with --full / {"full":true}.
7
+ #
8
+ # Like delegate-task/execute.test.sh, this harness runs a COPY of the real
9
+ # execute.sh (plus compact.jq) under a stubbed api_call so production logic
10
+ # is exercised verbatim.
11
+ set -euo pipefail
12
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13
+ PASS=0
14
+ FAIL=0
15
+
16
+ CALL_LOG=$(mktemp)
17
+ SKILL_PARENT=$(mktemp -d)
18
+ trap 'rm -rf "$SKILL_PARENT" "$CALL_LOG"' EXIT
19
+
20
+ # The skill resolves `${SCRIPT_DIR}/../../_common/lib.sh`, so mirror the
21
+ # config/skills/<role>/<skill> depth.
22
+ mkdir -p "$SKILL_PARENT/_common" "$SKILL_PARENT/orchestrator/wiki-migrate"
23
+
24
+ # Fixture: 25 proposed pages across 4 sourceTypes; 8 already migrated, 1
25
+ # skipped for another reason, 16 net-new, 2 routingUncertain.
26
+ FIXTURE=$(jq -nc '
27
+ def page($i; $type; $skip; $unc):
28
+ {sourceType: $type, sourceFile: "src/\($i).json", sourceId: "id-\($i)",
29
+ contentHash: "h\($i)", targetVaultPath: "/vault",
30
+ targetRelativePath: "llm-curated/\($type)/\($i).md", title: "t\($i)",
31
+ routingUncertain: $unc}
32
+ + (if $skip == "" then {} else {skipReason: $skip} end);
33
+ {
34
+ ok: true, vaultPath: "/vault", legacyDetected: true,
35
+ bootstrapNeeded: {project: true, global: false, teams: []},
36
+ summary: {decisions: 10, patterns: 8, gotchas: 4, relationships: 3,
37
+ learnings: 0, looseMd: 0, memoryEntries: 0, alreadyMigrated: 8},
38
+ proposedPages: (
39
+ [range(0;10) | page(.; "decision"; (if . < 4 then "already migrated" else "" end); false)]
40
+ + [range(10;18) | page(.; "pattern"; (if . < 14 then "already migrated" else "" end); (. == 15))]
41
+ + [range(18;22) | page(.; "gotcha"; (if . == 18 then "malformed" else "" end); (. == 19))]
42
+ + [range(22;25) | page(.; "relationship"; ""; false)]
43
+ )
44
+ }')
45
+ export FIXTURE
46
+
47
+ REAL_LIB="$(cd "$SCRIPT_DIR/../.." && pwd)/_common/lib.sh"
48
+ cat > "$SKILL_PARENT/_common/lib.sh" <<EOF
49
+ source "$REAL_LIB"
50
+ api_call() {
51
+ local method="\$1" path="\$2" body="\${3:-}"
52
+ echo "\${method} \${path} \${body}" >> "${CALL_LOG}"
53
+ printf '%s' "\$FIXTURE"
54
+ }
55
+ EOF
56
+ cp "$SCRIPT_DIR/execute.sh" "$SCRIPT_DIR/compact.jq" "$SKILL_PARENT/orchestrator/wiki-migrate/"
57
+ chmod +x "$SKILL_PARENT/orchestrator/wiki-migrate/execute.sh"
58
+ SKILL="$SKILL_PARENT/orchestrator/wiki-migrate/execute.sh"
59
+
60
+ assert_eq() {
61
+ local desc="$1" expected="$2" actual="$3"
62
+ if [ "$expected" = "$actual" ]; then
63
+ echo " PASS: $desc"; PASS=$((PASS + 1))
64
+ else
65
+ echo " FAIL: $desc"; echo " expected: $expected"; echo " actual: $actual"; FAIL=$((FAIL + 1))
66
+ fi
67
+ }
68
+
69
+ echo "=== wiki-migrate compact output ==="
70
+
71
+ # ---- Test 1: default scan is compact and drops proposedPages ----
72
+ OUT=$(bash "$SKILL" --project-root /tmp/proj)
73
+ assert_eq "scan hits the scan endpoint" "1" "$(grep -c 'POST /wiki/migrate/scan' "$CALL_LOG")"
74
+ assert_eq "compact: proposedPages dropped" "false" "$(printf '%s' "$OUT" | jq 'has("proposedPages")')"
75
+ assert_eq "compact: totalProposed" "25" "$(printf '%s' "$OUT" | jq '.totalProposed')"
76
+ assert_eq "compact: alreadyMigrated" "8" "$(printf '%s' "$OUT" | jq '.alreadyMigrated')"
77
+ assert_eq "compact: skippedOther" "1" "$(printf '%s' "$OUT" | jq '.skippedOther')"
78
+ assert_eq "compact: netNew" "16" "$(printf '%s' "$OUT" | jq '.netNew')"
79
+ assert_eq "compact: routingUncertain" "2" "$(printf '%s' "$OUT" | jq '.routingUncertain')"
80
+ assert_eq "compact: byCategory decision" '{"proposed":10,"netNew":6}' "$(printf '%s' "$OUT" | jq -c '.byCategory.decision')"
81
+ assert_eq "compact: byCategory gotcha" '{"proposed":4,"netNew":3}' "$(printf '%s' "$OUT" | jq -c '.byCategory.gotcha')"
82
+ assert_eq "compact: sample holds first 10 net-new relPaths" "10" "$(printf '%s' "$OUT" | jq '.netNewSample | length')"
83
+ assert_eq "compact: sample starts at first net-new page" "llm-curated/decision/4.md" "$(printf '%s' "$OUT" | jq -r '.netNewSample[0]')"
84
+ assert_eq "compact: sample excludes skipped pages" "0" "$(printf '%s' "$OUT" | jq '[.netNewSample[] | select(. == "llm-curated/gotcha/18.md")] | length')"
85
+ assert_eq "compact: passthrough keys kept" "true|/vault|true" "$(printf '%s' "$OUT" | jq -r '"\(.ok)|\(.vaultPath)|\(.bootstrapNeeded.project)"')"
86
+ assert_eq "compact: original summary kept" "8" "$(printf '%s' "$OUT" | jq '.summary.alreadyMigrated')"
87
+ assert_eq "compact: hint mentions --full" "true" "$(printf '%s' "$OUT" | jq '.hint | test("--full")')"
88
+ COMPACT_BYTES=$(printf '%s' "$OUT" | wc -c | tr -d ' ')
89
+ RAW_BYTES=$(printf '%s' "$FIXTURE" | wc -c | tr -d ' ')
90
+ assert_eq "compact: smaller than raw" "yes" "$([ "$COMPACT_BYTES" -lt "$RAW_BYTES" ] && echo yes || echo no)"
91
+
92
+ # ---- Test 2: WIKI_MIGRATE_SAMPLE_SIZE tunes the sample ----
93
+ OUT=$(WIKI_MIGRATE_SAMPLE_SIZE=3 bash "$SKILL" --project-root /tmp/proj)
94
+ assert_eq "sample size env respected" "3" "$(printf '%s' "$OUT" | jq '.netNewSample | length')"
95
+
96
+ # ---- Test 3: --full returns the raw payload ----
97
+ OUT=$(bash "$SKILL" --project-root /tmp/proj --full)
98
+ assert_eq "--full: proposedPages present" "25" "$(printf '%s' "$OUT" | jq '.proposedPages | length')"
99
+ assert_eq "--full: no compact keys" "false" "$(printf '%s' "$OUT" | jq 'has("netNew")')"
100
+
101
+ # ---- Test 4: {"full":true} JSON input also returns the raw payload ----
102
+ OUT=$(bash "$SKILL" '{"projectRoot":"/tmp/proj","full":true}')
103
+ assert_eq "json full:true: proposedPages present" "25" "$(printf '%s' "$OUT" | jq '.proposedPages | length')"
104
+
105
+ # ---- Test 5: apply path is compacted too and keeps apply-only keys ----
106
+ FIXTURE=$(printf '%s' "$FIXTURE" | jq -c '. + {applied: 16, skipped: 9, bootstrapped: ["/vault"], manifestPath: "/vault/.migration-state.json"}')
107
+ export FIXTURE
108
+ : > "$CALL_LOG"
109
+ OUT=$(bash "$SKILL" --project-root /tmp/proj --apply)
110
+ assert_eq "apply hits the apply endpoint" "1" "$(grep -c 'POST /wiki/migrate/apply' "$CALL_LOG")"
111
+ assert_eq "apply body carries confirm:true" "1" "$(grep -c '"confirm": *true' "$CALL_LOG")"
112
+ assert_eq "apply: applied/skipped kept" "16|9|/vault/.migration-state.json" "$(printf '%s' "$OUT" | jq -r '"\(.applied)|\(.skipped)|\(.manifestPath)"')"
113
+ assert_eq "apply: proposedPages dropped" "false" "$(printf '%s' "$OUT" | jq 'has("proposedPages")')"
114
+
115
+ # ---- Test 6: payload without proposedPages does not break the filter ----
116
+ FIXTURE='{"ok":true,"legacyDetected":false,"bootstrapNeeded":{"project":false,"global":false,"teams":[]}}'
117
+ export FIXTURE
118
+ OUT=$(bash "$SKILL" --project-root /tmp/proj)
119
+ assert_eq "empty scan: netNew 0" "0" "$(printf '%s' "$OUT" | jq '.netNew')"
120
+ assert_eq "empty scan: byCategory {}" "{}" "$(printf '%s' "$OUT" | jq -c '.byCategory')"
121
+
122
+ echo ""
123
+ echo "=== Results: $PASS passed, $FAIL failed ==="
124
+ [ "$FAIL" -eq 0 ]
@@ -44,6 +44,12 @@ elif [ -n "$WI_BRIEF" ]; then
44
44
  TASK_OUTPUT="$WI_BRIEF"
45
45
  fi
46
46
 
47
+ # Defaults. A pre-approved checklist or a template pipeline (below) may
48
+ # override these — they must NOT be reset after checklist loading, or the
49
+ # checklist's passPolicy is silently discarded.
50
+ PASS_POLICY="all"
51
+ MAX_RETRIES=2
52
+
47
53
  # =============================================================================
48
54
  # Pre-approved checklist loading (from design-checklist skill)
49
55
  # =============================================================================
@@ -55,13 +61,17 @@ if [ -n "$CHECKLIST_PATH" ] && [ -f "$CHECKLIST_PATH" ]; then
55
61
  CHECKLIST_STATUS=$(echo "$CHECKLIST_DATA" | jq -r '.status // "unknown"' 2>/dev/null || true)
56
62
 
57
63
  if [ "$CHECKLIST_STATUS" = "approved" ]; then
58
- # Convert checklist items to verification checks
64
+ # Convert checklist items to verification checks.
65
+ # NOTE: `(.command // empty)` inside an object constructor makes jq drop
66
+ # the WHOLE item when the key is absent, so every checklist item without
67
+ # both `command` and `pattern` used to vanish. Use `// null` instead —
68
+ # the consumers below read fields with `// empty`, so null is harmless.
59
69
  CHECKS=$(echo "$CHECKLIST_DATA" | jq -c '
60
70
  [.items[] | {
61
71
  name: .id,
62
72
  type: .type,
63
- command: (.command // empty),
64
- pattern: (.pattern // empty),
73
+ command: (.command // null),
74
+ pattern: (.pattern // null),
65
75
  description: .description,
66
76
  critical: (.critical // false)
67
77
  }]
@@ -79,7 +89,7 @@ elif [ -n "$TASK_ID" ] && [ -n "$PROJECT_PATH" ]; then
79
89
  if [ -f "$AUTO_CHECKLIST" ]; then
80
90
  CHECKLIST_STATUS=$(jq -r '.status // "unknown"' "$AUTO_CHECKLIST" 2>/dev/null || true)
81
91
  if [ "$CHECKLIST_STATUS" = "approved" ]; then
82
- CHECKS=$(jq -c '[.items[] | {name: .id, type: .type, command: (.command // empty), pattern: (.pattern // empty), description: .description, critical: (.critical // false)}]' "$AUTO_CHECKLIST" 2>/dev/null || echo '[]')
92
+ CHECKS=$(jq -c '[.items[] | {name: .id, type: .type, command: (.command // null), pattern: (.pattern // null), description: .description, critical: (.critical // false)}]' "$AUTO_CHECKLIST" 2>/dev/null || echo '[]')
83
93
  PASS_POLICY=$(jq -r '.passPolicy // "critical_only"' "$AUTO_CHECKLIST" 2>/dev/null || echo "critical_only")
84
94
  fi
85
95
  fi
@@ -89,8 +99,6 @@ fi
89
99
  # Pipeline loading: convert template pipeline steps to checks
90
100
  # =============================================================================
91
101
 
92
- PASS_POLICY="all"
93
- MAX_RETRIES=2
94
102
  CHECK_COUNT=$(echo "$CHECKS" | jq 'length')
95
103
 
96
104
  if [ "$CHECK_COUNT" = "0" ] && [ -n "$TEMPLATE_ID" ]; then
@@ -0,0 +1,117 @@
1
+ #!/bin/bash
2
+ # Tests for TL verify-output execute.sh
3
+ # Covers: passPolicy resolution — an approved checklist's passPolicy must
4
+ # survive into the verdict (it used to be clobbered by the
5
+ # pipeline-loading defaults), a template pipeline still overrides
6
+ # it when no checklist checks were loaded, and the default is "all".
7
+ #
8
+ # The real execute.sh is run end-to-end; HTTP is intercepted by a fake `curl`
9
+ # placed first on PATH so api_call() sees controlled responses.
10
+ set -euo pipefail
11
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
+ PASS=0
13
+ FAIL=0
14
+
15
+ WORK_DIR=$(mktemp -d)
16
+ trap 'rm -rf "$WORK_DIR"' EXIT
17
+
18
+ # ---------------------------------------------------------------------------
19
+ # Fake curl: dispatches on the URL (last argument) and emits body + http code
20
+ # in the `-w '\n%{http_code}'` shape api_call() parses.
21
+ # ---------------------------------------------------------------------------
22
+ FAKE_BIN="$WORK_DIR/bin"
23
+ mkdir -p "$FAKE_BIN"
24
+ cat > "$FAKE_BIN/curl" <<'CURL_EOF'
25
+ #!/bin/bash
26
+ url="${@: -1}"
27
+ case "$url" in
28
+ */api/templates/tmpl-majority)
29
+ printf '%s\n200' '{"success":true,"data":{"verificationPipeline":{"passPolicy":"majority","maxRetries":3,"steps":[{"id":"s1","name":"Review","method":"code_review","critical":false}]}}}'
30
+ ;;
31
+ *)
32
+ printf '%s\n404' '{"success":false}'
33
+ ;;
34
+ esac
35
+ CURL_EOF
36
+ chmod +x "$FAKE_BIN/curl"
37
+
38
+ PROJECT_DIR="$WORK_DIR/project"
39
+ mkdir -p "$PROJECT_DIR/.crewly/tasks"
40
+
41
+ run_verify() {
42
+ PATH="$FAKE_BIN:$PATH" CREWLY_API_URL="http://127.0.0.1:1" bash "$SCRIPT_DIR/execute.sh" "$1" 2>/dev/null
43
+ }
44
+
45
+ assert_json_field() {
46
+ local desc="$1" input="$2" filter="$3" expected="$4"
47
+ local OUTPUT actual
48
+ OUTPUT=$(run_verify "$input") || true
49
+ actual=$(printf '%s' "$OUTPUT" | jq -r "$filter" 2>/dev/null || echo "<no-json>")
50
+ if [ "$actual" = "$expected" ]; then
51
+ echo " PASS: $desc"
52
+ PASS=$((PASS + 1))
53
+ else
54
+ echo " FAIL: $desc (expected '$filter' = '$expected', got '$actual'; output: $OUTPUT)"
55
+ FAIL=$((FAIL + 1))
56
+ fi
57
+ }
58
+
59
+ # One critical check that passes, one non-critical check that fails.
60
+ # Under critical_only the verdict is PASS; under "all" it would be FAIL.
61
+ CHECKLIST='{
62
+ "status":"approved",
63
+ "passPolicy":"critical_only",
64
+ "items":[
65
+ {"id":"crit-ok","type":"command","command":"true","description":"critical passes","critical":true},
66
+ {"id":"minor-fail","type":"command","command":"false","description":"non-critical fails","critical":false}
67
+ ]
68
+ }'
69
+ printf '%s' "$CHECKLIST" > "$WORK_DIR/checklist.json"
70
+ printf '%s' "$CHECKLIST" > "$PROJECT_DIR/.crewly/tasks/checklist-task-auto.json"
71
+
72
+ echo "verify-output: passPolicy resolution"
73
+
74
+ INPUT_EXPLICIT=$(jq -n --arg p "$WORK_DIR/checklist.json" --arg pp "$PROJECT_DIR" \
75
+ '{taskId:"task-1",workerId:"w1",teamId:"t1",projectPath:$pp,checklistPath:$p}')
76
+ assert_json_field "explicit checklistPath: passPolicy from checklist survives" \
77
+ "$INPUT_EXPLICIT" '.passPolicy' 'critical_only'
78
+ assert_json_field "explicit checklistPath: both checklist items are loaded as checks" \
79
+ "$INPUT_EXPLICIT" '[.results[] | select(.name != "manual-review")] | length' '2'
80
+ assert_json_field "explicit checklistPath: non-critical failure is recorded" \
81
+ "$INPUT_EXPLICIT" '.failedSteps | join(",")' 'minor-fail'
82
+ assert_json_field "explicit checklistPath: verdict honours critical_only" \
83
+ "$INPUT_EXPLICIT" '.passed' 'true'
84
+
85
+ INPUT_AUTO=$(jq -n --arg pp "$PROJECT_DIR" \
86
+ '{taskId:"task-auto",workerId:"w1",teamId:"t1",projectPath:$pp}')
87
+ assert_json_field "auto-discovered checklist: passPolicy from checklist survives" \
88
+ "$INPUT_AUTO" '.passPolicy' 'critical_only'
89
+ assert_json_field "auto-discovered checklist: both checklist items are loaded as checks" \
90
+ "$INPUT_AUTO" '[.results[] | select(.name != "manual-review")] | length' '2'
91
+ assert_json_field "auto-discovered checklist: verdict honours critical_only" \
92
+ "$INPUT_AUTO" '.passed' 'true'
93
+
94
+ INPUT_ALL_POLICY=$(jq -n --arg p "$WORK_DIR/checklist-all.json" --arg pp "$PROJECT_DIR" \
95
+ '{taskId:"task-1b",workerId:"w1",teamId:"t1",projectPath:$pp,checklistPath:$p}')
96
+ printf '%s' "$CHECKLIST" | jq '.passPolicy = "all"' > "$WORK_DIR/checklist-all.json"
97
+ assert_json_field "checklist with passPolicy=all: non-critical failure fails the verdict" \
98
+ "$INPUT_ALL_POLICY" '.passed' 'false'
99
+
100
+ INPUT_TEMPLATE=$(jq -n --arg pp "$PROJECT_DIR" \
101
+ '{taskId:"task-2",workerId:"w1",teamId:"t1",projectPath:$pp,templateId:"tmpl-majority"}')
102
+ assert_json_field "template pipeline: passPolicy comes from the pipeline when no checklist" \
103
+ "$INPUT_TEMPLATE" '.passPolicy' 'majority'
104
+
105
+ INPUT_NONE=$(jq -n --arg pp "$PROJECT_DIR" \
106
+ '{taskId:"task-3",workerId:"w1",teamId:"t1",projectPath:$pp}')
107
+ assert_json_field "no checklist, no template: passPolicy defaults to all" \
108
+ "$INPUT_NONE" '.passPolicy' 'all'
109
+
110
+ INPUT_INLINE=$(jq -n --arg pp "$PROJECT_DIR" \
111
+ '{taskId:"task-4",workerId:"w1",teamId:"t1",projectPath:$pp,checks:[{name:"ok",type:"command",command:"true",critical:true},{name:"bad",type:"command",command:"false",critical:false}]}')
112
+ assert_json_field "inline checks with default policy: all must pass" \
113
+ "$INPUT_INLINE" '.passed' 'false'
114
+
115
+ echo ""
116
+ echo "Results: $PASS passed, $FAIL failed"
117
+ [ "$FAIL" -eq 0 ]