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,8 @@
1
1
  #!/bin/bash
2
2
  # =============================================================================
3
3
  # Tests for lib.sh — shared skills library
4
- # Covers: --file preprocessor, read_json_input, require_param, error_exit
4
+ # Covers: --file preprocessor, read_json_input, require_param, error_exit,
5
+ # api_call output cap (CREWLY_SKILL_MAX_OUTPUT_BYTES)
5
6
  # =============================================================================
6
7
  set -euo pipefail
7
8
 
@@ -184,6 +185,72 @@ CREWLY_EOF
184
185
  RESULT=$(bash "$TEMP_DIR/test_skill.sh" --file "$TEMP_DIR/heredoc_mixed.json")
185
186
  assert_contains "heredoc handles mixed quotes" "it's fine" "$RESULT"
186
187
 
188
+ # =============================================================================
189
+ # api_call output cap (CREWLY_SKILL_MAX_OUTPUT_BYTES)
190
+ # curl is mocked with a shell function that returns $MOCK_BODY + "\n200".
191
+ # =============================================================================
192
+ mkdir -p "$TEMP_DIR/skills/fake-skill"
193
+ cat > "$TEMP_DIR/skills/fake-skill/execute.sh" << 'SKILL_EOF'
194
+ #!/bin/bash
195
+ set -euo pipefail
196
+ source "$LIB_PATH"
197
+ # Mock curl: emit the canned body followed by the http code line, like
198
+ # `curl -w '\n%{http_code}'` does.
199
+ curl() {
200
+ printf '%s\n%s' "$MOCK_BODY" "${MOCK_CODE:-200}"
201
+ }
202
+ api_call GET "/anything"
203
+ SKILL_EOF
204
+ chmod +x "$TEMP_DIR/skills/fake-skill/execute.sh"
205
+
206
+ export CREWLY_HOME="$TEMP_DIR/crewly-home"
207
+ CAP_DIR="$CREWLY_HOME/tmp/skill-output"
208
+
209
+ # ---- Test 17: small body passes through untouched ----
210
+ export MOCK_BODY='{"ok":true,"items":[1,2,3]}'
211
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=100 bash "$TEMP_DIR/skills/fake-skill/execute.sh")
212
+ assert_eq "api_call: body under cap passes through" '{"ok":true,"items":[1,2,3]}' "$RESULT"
213
+
214
+ # ---- Test 18: oversized body becomes a valid JSON envelope ----
215
+ BIG=$(jq -nc '{ok:true, rows:[range(0;400)|{id:., text:"row-\(.)-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}]}')
216
+ export MOCK_BODY="$BIG"
217
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=1000 bash "$TEMP_DIR/skills/fake-skill/execute.sh")
218
+ assert_eq "api_call: oversized body -> truncated=true" "true" "$(printf '%s' "$RESULT" | jq -r '.truncated')"
219
+ assert_eq "api_call: envelope bytes == real byte count" "$(printf '%s' "$BIG" | LC_ALL=C wc -c | tr -d ' ')" "$(printf '%s' "$RESULT" | jq -r '.bytes')"
220
+ assert_contains "api_call: envelope hint present" "pass --full or read the file" "$(printf '%s' "$RESULT" | jq -r '.hint')"
221
+ assert_eq "api_call: head is the first 4000 chars" "${BIG:0:4000}" "$(printf '%s' "$RESULT" | jq -r '.head')"
222
+ CAP_FILE=$(printf '%s' "$RESULT" | jq -r '.file')
223
+ assert_contains "api_call: file lands under CREWLY_HOME/tmp/skill-output" "$CAP_DIR/fake-skill-" "$CAP_FILE"
224
+ assert_eq "api_call: parked file holds the full body" "$BIG" "$(cat "$CAP_FILE")"
225
+
226
+ # ---- Test 19: --full bypasses the cap (flag is detected at source time) ----
227
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=1000 bash "$TEMP_DIR/skills/fake-skill/execute.sh" --full)
228
+ assert_eq "api_call: --full returns the raw body" "$BIG" "$RESULT"
229
+
230
+ # ---- Test 20: CREWLY_SKILL_FULL_OUTPUT=1 bypasses the cap ----
231
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=1000 CREWLY_SKILL_FULL_OUTPUT=1 bash "$TEMP_DIR/skills/fake-skill/execute.sh")
232
+ assert_eq "api_call: CREWLY_SKILL_FULL_OUTPUT=1 returns the raw body" "$BIG" "$RESULT"
233
+
234
+ # ---- Test 21: cap of 0 disables truncation ----
235
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=0 bash "$TEMP_DIR/skills/fake-skill/execute.sh")
236
+ assert_eq "api_call: CREWLY_SKILL_MAX_OUTPUT_BYTES=0 disables the cap" "$BIG" "$RESULT"
237
+
238
+ # ---- Test 22: parked files older than the TTL are pruned at the start of any api_call ----
239
+ mkdir -p "$CAP_DIR"
240
+ touch -t 202001010000 "$CAP_DIR/old-skill-stale.json"
241
+ touch "$CAP_DIR/fresh-skill-recent.json"
242
+ export MOCK_BODY='{"ok":true}'
243
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=1000 bash "$TEMP_DIR/skills/fake-skill/execute.sh")
244
+ assert_eq "api_call: prune runs even when the body is small" '{"ok":true}' "$RESULT"
245
+ assert_eq "api_call: stale parked output is deleted" "missing" "$([ -f "$CAP_DIR/old-skill-stale.json" ] && echo present || echo missing)"
246
+ assert_eq "api_call: fresh parked output is kept" "present" "$([ -f "$CAP_DIR/fresh-skill-recent.json" ] && echo present || echo missing)"
247
+
248
+ # ---- Test 23: error responses are untouched by the cap ----
249
+ export MOCK_BODY='{"error":"nope"}' MOCK_CODE=500
250
+ RESULT=$(CREWLY_SKILL_MAX_OUTPUT_BYTES=5 bash "$TEMP_DIR/skills/fake-skill/execute.sh" 2>&1 || true)
251
+ assert_contains "api_call: non-2xx still reports the error object" '"status":500' "$RESULT"
252
+ unset MOCK_BODY MOCK_CODE CREWLY_HOME
253
+
187
254
  echo ""
188
255
  echo "=== Results: $PASS/$TOTAL passed, $FAIL failed ==="
189
256
 
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: Count JSON
3
+ description: Run a command that prints JSON and count the entries matching a field=value filter. Built for skill_output Key Results (e.g. "tickets in review") so a KR can be measured from any board or API that speaks JSON.
4
+ version: 1.0.0
5
+ category: measurement
6
+ skillType: claude-skill
7
+ assignableRoles:
8
+ - orchestrator
9
+ - team-leader
10
+ - developer
11
+ - devops
12
+ - operations
13
+ - ops
14
+ triggers:
15
+ - count json
16
+ - measure kr
17
+ tags:
18
+ - okr
19
+ - measurement
20
+ - json
21
+ execution:
22
+ type: script
23
+ script:
24
+ file: execute.sh
25
+ interpreter: bash
26
+ timeoutMs: 60000
27
+ ---
28
+
29
+ # Count JSON
30
+
31
+ Runs a command, reads the JSON it prints (an array, or an object holding an
32
+ array under `items` / `tickets` / `data`), applies an optional `field=value`
33
+ filter, and prints `{"count": N, "total": M, "filter": "..."}`.
34
+
35
+ Made for `measurementSource: "skill_output"` Key Results:
36
+
37
+ ```json
38
+ { "measurementConfig": { "skill": "count-json",
39
+ "args": { "command": "cd /opt/app/web && make tickets TICKET_ARGS=--json",
40
+ "field": "status", "value": "review" },
41
+ "jsonPath": ".count" } }
42
+ ```
43
+
44
+ ## Parameters
45
+
46
+ | Name | Required | Meaning |
47
+ |---|---|---|
48
+ | `command` | yes | Shell command whose stdout is JSON (or a `file` path instead) |
49
+ | `file` | no | Read JSON from this file instead of running a command |
50
+ | `field` | no | Top-level field to filter on |
51
+ | `value` | no | Value that `field` must equal (string compare) |
52
+ | `arrayPath` | no | jq path to the array when it is nested (default: auto-detect) |
53
+
54
+ ## Output
55
+
56
+ ```json
57
+ {"count": 6, "total": 21, "filter": "status=review"}
58
+ ```
59
+
60
+ The command runs with a 50 s timeout; a non-JSON result exits 1 with an error
61
+ object on stderr.
@@ -0,0 +1,52 @@
1
+ #!/bin/bash
2
+ # count-json — run a command (or read a file) that yields JSON, count entries
3
+ # matching field=value. Output: {"count":N,"total":M,"filter":"field=value"}
4
+ #
5
+ # Usage: execute.sh '{"command":"...","field":"status","value":"review"}'
6
+ # execute.sh '{"file":"/tmp/board.json","field":"status","value":"open"}'
7
+ set -uo pipefail
8
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
10
+
11
+ INPUT="${1:-}"
12
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"command\":\"...\",\"field\":\"status\",\"value\":\"review\"}'"
13
+
14
+ COMMAND=$(printf '%s' "$INPUT" | jq -r '.command // empty')
15
+ FILE=$(printf '%s' "$INPUT" | jq -r '.file // empty')
16
+ FIELD=$(printf '%s' "$INPUT" | jq -r '.field // empty')
17
+ VALUE=$(printf '%s' "$INPUT" | jq -r '.value // empty')
18
+ ARRAY_PATH=$(printf '%s' "$INPUT" | jq -r '.arrayPath // empty')
19
+ TIMEOUT_S="${COUNT_JSON_TIMEOUT_S:-50}"
20
+
21
+ [ -z "$COMMAND" ] && [ -z "$FILE" ] && error_exit "command or file is required"
22
+
23
+ if [ -n "$FILE" ]; then
24
+ [ -f "$FILE" ] || error_exit "file not found: $FILE"
25
+ RAW=$(cat "$FILE")
26
+ else
27
+ if command -v timeout >/dev/null 2>&1; then
28
+ RAW=$(timeout "$TIMEOUT_S" bash -c "$COMMAND" 2>/dev/null)
29
+ else
30
+ RAW=$(bash -c "$COMMAND" 2>/dev/null)
31
+ fi
32
+ [ $? -ne 0 ] && [ -z "$RAW" ] && error_exit "command failed or produced no output"
33
+ fi
34
+
35
+ # Skip any non-JSON preamble (progress lines, banners).
36
+ JSON=$(printf '%s' "$RAW" | awk 'found||/^[[{]/{found=1; print}')
37
+ [ -z "$JSON" ] && error_exit "no JSON found in output"
38
+
39
+ if [ -n "$ARRAY_PATH" ]; then
40
+ SELECT="$ARRAY_PATH"
41
+ else
42
+ SELECT='if type=="array" then . elif (.items|type)=="array" then .items elif (.tickets|type)=="array" then .tickets elif (.data|type)=="array" then .data else [] end'
43
+ fi
44
+
45
+ if [ -n "$FIELD" ]; then
46
+ printf '%s' "$JSON" | jq -c --arg f "$FIELD" --arg v "$VALUE" \
47
+ "($SELECT) as \$arr | {count: (\$arr | map(select((.[\$f] // \"\" | tostring) == \$v)) | length), total: (\$arr | length), filter: (\$f + \"=\" + \$v)}" \
48
+ || error_exit "output is not valid JSON"
49
+ else
50
+ printf '%s' "$JSON" | jq -c "($SELECT) as \$arr | {count: (\$arr | length), total: (\$arr | length), filter: \"\"}" \
51
+ || error_exit "output is not valid JSON"
52
+ fi
@@ -0,0 +1,35 @@
1
+ #!/bin/bash
2
+ # Tests for count-json — run with: bash execute.test.sh
3
+ set -u
4
+ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ EXEC="$HERE/execute.sh"
6
+ PASS=0; FAIL=0
7
+ check() {
8
+ local name="$1"; local got="$2"; local want="$3"
9
+ if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
10
+ }
11
+ run() { bash "$EXEC" "$1" 2>/dev/null; }
12
+ run_err() { bash "$EXEC" "$1" 2>&1 >/dev/null | jq -r '.error' 2>/dev/null; }
13
+
14
+ TMP=$(mktemp -d); trap 'rm -rf "$TMP"' EXIT
15
+ printf '%s' '[{"ticketId":"T1","status":"open"},{"ticketId":"T2","status":"review"},{"ticketId":"T3","status":"review"},{"ticketId":"T4","status":"blocked"}]' > "$TMP/board.json"
16
+ printf '%s' 'fetching...
17
+ {"items":[{"s":"a"},{"s":"b"}]}' > "$TMP/nested.txt"
18
+
19
+ ARGS=$(jq -cn --arg f "$TMP/board.json" '{file:$f, field:"status", value:"review"}')
20
+ check "filter by field=value" "$(run "$ARGS")" '{"count":2,"total":4,"filter":"status=review"}'
21
+
22
+ ARGS=$(jq -cn --arg f "$TMP/board.json" '{file:$f}')
23
+ check "no filter counts all" "$(run "$ARGS")" '{"count":4,"total":4,"filter":""}'
24
+
25
+ ARGS=$(jq -cn --arg c "cat $TMP/nested.txt" '{command:$c, field:"s", value:"b"}')
26
+ check "command with preamble and nested items" "$(run "$ARGS")" '{"count":1,"total":2,"filter":"s=b"}'
27
+
28
+ ARGS=$(jq -cn --arg f "$TMP/board.json" '{file:$f, arrayPath:".", field:"status", value:"open"}')
29
+ check "explicit arrayPath" "$(run "$ARGS")" '{"count":1,"total":4,"filter":"status=open"}'
30
+
31
+ check "non-JSON errors" "$(run_err '{"command":"echo not json"}')" "no JSON found in output"
32
+ check "missing input errors" "$(run_err '{}')" "command or file is required"
33
+
34
+ echo "=== Results: $PASS passed, $FAIL failed ==="
35
+ [ "$FAIL" -eq 0 ]
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: Record Prediction
3
+ description: Record a prediction with a confidence level so your calibration can be measured once it resolves.
4
+ version: 1.0.0
5
+ category: memory
6
+ skillType: claude-skill
7
+ assignableRoles:
8
+ - developer
9
+ - qa
10
+ - tpm
11
+ - designer
12
+ - frontend-developer
13
+ - backend-developer
14
+ - fullstack-dev
15
+ - qa-engineer
16
+ - product-manager
17
+ - architect
18
+ - generalist
19
+ - sales
20
+ - support
21
+ - orchestrator
22
+ triggers:
23
+ - record prediction
24
+ - I predict
25
+ - confidence
26
+ - estimate
27
+ tags:
28
+ - memory
29
+ - calibration
30
+ - self-improvement
31
+ execution:
32
+ type: script
33
+ script:
34
+ file: execute.sh
35
+ interpreter: bash
36
+ timeoutMs: 15000
37
+ ---
38
+
39
+ # Record Prediction
40
+
41
+ Write down a falsifiable prediction ("this PR lands today", "the flaky test is a race in the mock") with a confidence between 0 and 1. Later, close it with `resolve-prediction`. Your calibration score (how well confidence tracks reality) is shown in your prompt once predictions resolve, with guidance when you are over- or under-confident.
42
+
43
+ ## Parameters
44
+
45
+ | Flag | JSON Field | Required | Description |
46
+ |------|-----------|----------|-------------|
47
+ | `--statement` / `-p` | `statement` | Yes | What you predict will happen |
48
+ | `--confidence` / `-c` | `confidence` | Yes | 0–1 (e.g. `0.7`) |
49
+ | `--resolve-by` | `resolveBy` | No | ISO date by which it should be resolved |
50
+ | `--session` / `-s` | `sessionName` | No | Your session name — defaults to `$CREWLY_SESSION_NAME` |
51
+
52
+ ## Examples
53
+
54
+ ```bash
55
+ bash execute.sh --statement "checkout PR merges before Friday" --confidence 0.7 --resolve-by 2026-10-03
56
+ bash execute.sh '{"statement":"checkout PR merges before Friday","confidence":0.7}'
57
+ ```
58
+
59
+ ## Output
60
+
61
+ `{ "success": true, "id": "pred-...", "prediction": {...} }` — keep the `id`; you need it to resolve.
@@ -0,0 +1,90 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # record-prediction — Record a prediction with a confidence level
4
+ #
5
+ # Backed by POST /api/agents/:sessionName/self-improvement/predictions.
6
+ #
7
+ # Usage:
8
+ # bash execute.sh --statement "PR lands today" --confidence 0.7 [--resolve-by 2026-10-01] [--session crewly-dev-1]
9
+ # bash execute.sh '{"statement":"PR lands today","confidence":0.7,"resolveBy":"2026-10-01"}'
10
+ # =============================================================================
11
+ set -euo pipefail
12
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
13
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
14
+
15
+ print_usage() {
16
+ cat <<'EOF_USAGE'
17
+ Usage:
18
+ bash execute.sh --statement "PR lands today" --confidence 0.7 [--resolve-by 2026-10-01] [--session crewly-dev-1]
19
+ bash execute.sh '{"statement":"PR lands today","confidence":0.7}'
20
+
21
+ Options:
22
+ --statement | -p What you predict (required)
23
+ --confidence | -c Confidence 0-1 (required)
24
+ --resolve-by ISO date the prediction should be resolved by (optional)
25
+ --session | -s Session name (defaults to $CREWLY_SESSION_NAME)
26
+ --help | -h Show this help
27
+ EOF_USAGE
28
+ }
29
+
30
+ INPUT_JSON=""
31
+ SESSION_NAME=""
32
+ STATEMENT=""
33
+ CONFIDENCE=""
34
+ RESOLVE_BY=""
35
+
36
+ if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
37
+ INPUT_JSON="$1"
38
+ shift || true
39
+ fi
40
+
41
+ while [[ $# -gt 0 ]]; do
42
+ case "$1" in
43
+ --statement|-p)
44
+ [ $# -ge 2 ] || error_exit "--statement requires a value"
45
+ STATEMENT="$2"; shift 2 ;;
46
+ --confidence|-c)
47
+ [ $# -ge 2 ] || error_exit "--confidence requires a value"
48
+ CONFIDENCE="$2"; shift 2 ;;
49
+ --resolve-by)
50
+ [ $# -ge 2 ] || error_exit "--resolve-by requires a value"
51
+ RESOLVE_BY="$2"; shift 2 ;;
52
+ --session|-s)
53
+ [ $# -ge 2 ] || error_exit "--session requires a value"
54
+ SESSION_NAME="$2"; shift 2 ;;
55
+ --help|-h) print_usage; exit 0 ;;
56
+ *) error_exit "Unknown option: $1" ;;
57
+ esac
58
+ done
59
+
60
+ if [ -n "$INPUT_JSON" ]; then
61
+ INPUT=$(read_json_input "$INPUT_JSON")
62
+ [ -z "$SESSION_NAME" ] && SESSION_NAME=$(printf '%s' "$INPUT" | jq -r '.sessionName // .agentId // empty')
63
+ [ -z "$STATEMENT" ] && STATEMENT=$(printf '%s' "$INPUT" | jq -r '.statement // .prediction // empty')
64
+ [ -z "$CONFIDENCE" ] && CONFIDENCE=$(printf '%s' "$INPUT" | jq -r 'if .confidence == null then empty else (.confidence | tostring) end')
65
+ [ -z "$RESOLVE_BY" ] && RESOLVE_BY=$(printf '%s' "$INPUT" | jq -r '.resolveBy // empty')
66
+ fi
67
+
68
+ [ -z "$SESSION_NAME" ] && SESSION_NAME="${CREWLY_SESSION_NAME:-}"
69
+ require_param "sessionName (--session or CREWLY_SESSION_NAME)" "$SESSION_NAME"
70
+ require_param "statement (--statement)" "$STATEMENT"
71
+ require_param "confidence (--confidence)" "$CONFIDENCE"
72
+
73
+ # Validate locally so a typo fails fast with a readable message.
74
+ if ! printf '%s' "$CONFIDENCE" | grep -Eq '^(0(\.[0-9]+)?|1(\.0+)?)$'; then
75
+ error_exit "confidence must be a number between 0 and 1 (got: $CONFIDENCE)"
76
+ fi
77
+
78
+ if [ -n "$RESOLVE_BY" ]; then
79
+ BODY=$(jq -cn --arg s "$STATEMENT" --argjson c "$CONFIDENCE" --arg r "$RESOLVE_BY" '{statement: $s, confidence: $c, resolveBy: $r}')
80
+ else
81
+ BODY=$(jq -cn --arg s "$STATEMENT" --argjson c "$CONFIDENCE" '{statement: $s, confidence: $c}')
82
+ fi
83
+
84
+ RESPONSE=$(api_call POST "/agents/${SESSION_NAME}/self-improvement/predictions" "$BODY" 2>&1) || {
85
+ ERROR_MSG=$(printf '%s' "$RESPONSE" | jq -r '.details.error // .details // .error // "Unknown error"' 2>/dev/null || echo "$RESPONSE")
86
+ jq -n --arg reason "$ERROR_MSG" '{success: false, reason: $reason}'
87
+ exit 1
88
+ }
89
+
90
+ printf '%s' "$RESPONSE" | jq -c '{success: (.success // false), id: (.data.prediction.id // null), prediction: (.data.prediction // null)}'
@@ -0,0 +1,67 @@
1
+ #!/bin/bash
2
+ # Tests for record-prediction — run with: bash execute.test.sh
3
+ # Spins up a python HTTP stub as the backend, asserts the request path/body
4
+ # the skill sends and the JSON it prints. Exit 0 on pass.
5
+ set -u
6
+ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ EXEC="$HERE/execute.sh"
8
+ PASS=0; FAIL=0
9
+ check() {
10
+ local name="$1"; local got="$2"; local want="$3"
11
+ if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
12
+ }
13
+
14
+ PORT=18793
15
+ STUB_LOG="$(mktemp)"; export STUB_LOG; export STUB_PORT="$PORT"
16
+ python3 -u <<'PY' >/dev/null 2>&1 &
17
+ from http.server import BaseHTTPRequestHandler, HTTPServer
18
+ import json, os
19
+ LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
20
+ class H(BaseHTTPRequestHandler):
21
+ def do_POST(self):
22
+ n = int(self.headers.get('content-length', '0')); body = self.rfile.read(n).decode() if n else ''
23
+ data = json.loads(body or '{}')
24
+ open(LOG, 'w').write(json.dumps({'path': self.path, 'body': data}))
25
+ if data.get('resolveBy') == 'soon':
26
+ self.send_response(400); self.send_header('Content-Type', 'application/json'); self.end_headers()
27
+ self.wfile.write(b'{"success":false,"error":"resolveBy must be an ISO date string"}'); return
28
+ pred = {'id': 'pred-1-abc', 'prediction': data.get('statement'), 'confidence': data.get('confidence'), 'madeAt': '2026-09-18'}
29
+ if 'resolveBy' in data: pred['resolveBy'] = data['resolveBy']
30
+ self.send_response(201); self.send_header('Content-Type', 'application/json'); self.end_headers()
31
+ self.wfile.write(json.dumps({'success': True, 'data': {'prediction': pred}}).encode())
32
+ def log_message(self, *a, **k): pass
33
+ HTTPServer(('127.0.0.1', PORT), H).serve_forever()
34
+ PY
35
+ STUB_PID=$!
36
+ disown "$STUB_PID" 2>/dev/null || true
37
+ trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -f "$STUB_LOG"' EXIT
38
+ for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
39
+
40
+ run() { CREWLY_API_URL="http://127.0.0.1:${PORT}" CREWLY_SESSION_NAME="crewly-dev-1" bash "$EXEC" "$@" 2>/dev/null; }
41
+ run_err() { CREWLY_API_URL="http://127.0.0.1:${PORT}" CREWLY_SESSION_NAME="" bash "$EXEC" "$@" 2>&1 >/dev/null | jq -r '.error' 2>/dev/null; }
42
+
43
+ OUT=$(run --statement "PR lands today" --confidence 0.7 --resolve-by 2026-10-01)
44
+ check "flags: output id" "$(printf '%s' "$OUT" | jq -r .id)" "pred-1-abc"
45
+ check "flags: output success" "$(printf '%s' "$OUT" | jq -r .success)" "true"
46
+ check "flags: path" "$(jq -r .path "$STUB_LOG")" "/api/agents/crewly-dev-1/self-improvement/predictions"
47
+ check "flags: body (confidence is numeric, resolveBy present)" "$(jq -c .body "$STUB_LOG")" '{"statement":"PR lands today","confidence":0.7,"resolveBy":"2026-10-01"}'
48
+
49
+ run '{"statement":"no deadline","confidence":1,"sessionName":"crewly-qa-9"}' >/dev/null
50
+ check "json: body omits resolveBy when absent" "$(jq -c .body "$STUB_LOG")" '{"statement":"no deadline","confidence":1}'
51
+ check "json: explicit session in path" "$(jq -r .path "$STUB_LOG")" "/api/agents/crewly-qa-9/self-improvement/predictions"
52
+
53
+ run '{"prediction":"legacy field name","confidence":"0.25"}' >/dev/null
54
+ check "json: accepts legacy 'prediction' key and string confidence" "$(jq -c .body "$STUB_LOG")" '{"statement":"legacy field name","confidence":0.25}'
55
+
56
+ OUT=$(CREWLY_API_URL="http://127.0.0.1:${PORT}" CREWLY_SESSION_NAME="crewly-dev-1" bash "$EXEC" --statement x --confidence 0.5 --resolve-by soon 2>/dev/null); RC=$?
57
+ check "backend 400: exit code" "$RC" "1"
58
+ check "backend 400: reason" "$(printf '%s' "$OUT" | jq -r .reason)" "resolveBy must be an ISO date string"
59
+
60
+ check "confidence > 1 rejected locally" "$(run_err --session s --statement x --confidence 1.5)" "confidence must be a number between 0 and 1 (got: 1.5)"
61
+ check "non-numeric confidence rejected locally" "$(run_err --session s --statement x --confidence abc)" "confidence must be a number between 0 and 1 (got: abc)"
62
+ check "missing statement errors" "$(run_err --session s --confidence 0.5)" "Missing required parameter: statement (--statement)"
63
+ check "missing confidence errors" "$(run_err --session s --statement x)" "Missing required parameter: confidence (--confidence)"
64
+ check "missing session errors" "$(run_err --statement x --confidence 0.5)" "Missing required parameter: sessionName (--session or CREWLY_SESSION_NAME)"
65
+
66
+ echo "=== Results: $PASS passed, $FAIL failed ==="
67
+ [ "$FAIL" -eq 0 ]
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: Resolve Prediction
3
+ description: Close a recorded prediction with what actually happened so your calibration score updates.
4
+ version: 1.0.0
5
+ category: memory
6
+ skillType: claude-skill
7
+ assignableRoles:
8
+ - developer
9
+ - qa
10
+ - tpm
11
+ - designer
12
+ - frontend-developer
13
+ - backend-developer
14
+ - fullstack-dev
15
+ - qa-engineer
16
+ - product-manager
17
+ - architect
18
+ - generalist
19
+ - sales
20
+ - support
21
+ - orchestrator
22
+ triggers:
23
+ - resolve prediction
24
+ - prediction outcome
25
+ - was I right
26
+ tags:
27
+ - memory
28
+ - calibration
29
+ - self-improvement
30
+ execution:
31
+ type: script
32
+ script:
33
+ file: execute.sh
34
+ interpreter: bash
35
+ timeoutMs: 15000
36
+ ---
37
+
38
+ # Resolve Prediction
39
+
40
+ Record the outcome of a prediction made with `record-prediction`. Pass `--accurate true|false`; if you only pass an outcome, a plain verdict such as `correct`, `wrong`, `yes`, `no` is understood — anything else needs the explicit flag. The response includes your updated calibration score.
41
+
42
+ ## Parameters
43
+
44
+ | Flag | JSON Field | Required | Description |
45
+ |------|-----------|----------|-------------|
46
+ | `--id` | `id` | Yes | Prediction id (`pred-...`) |
47
+ | `--outcome` / `-o` | `outcome` | Yes | What actually happened |
48
+ | `--accurate` / `-a` | `accurate` | No* | `true` / `false` — required unless outcome is a plain verdict |
49
+ | `--session` / `-s` | `sessionName` | No | Your session name — defaults to `$CREWLY_SESSION_NAME` |
50
+
51
+ ## Examples
52
+
53
+ ```bash
54
+ bash execute.sh --id pred-1718000000-ab12cd --outcome "merged Thursday" --accurate true
55
+ bash execute.sh --id pred-1718000000-ab12cd --outcome wrong
56
+ bash execute.sh '{"id":"pred-1718000000-ab12cd","outcome":"slipped a week","accurate":false}'
57
+ ```
58
+
59
+ ## Output
60
+
61
+ `{ "success": true, "prediction": {...}, "calibrationScore": 0.82 }`
@@ -0,0 +1,87 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # resolve-prediction — Close a prediction with its actual outcome
4
+ #
5
+ # Backed by POST /api/agents/:sessionName/self-improvement/predictions/:id/resolve.
6
+ #
7
+ # Usage:
8
+ # bash execute.sh --id pred-123 --outcome "merged Thursday" --accurate true [--session crewly-dev-1]
9
+ # bash execute.sh --id pred-123 --outcome wrong
10
+ # bash execute.sh '{"id":"pred-123","outcome":"slipped","accurate":false}'
11
+ # =============================================================================
12
+ set -euo pipefail
13
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
14
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
15
+
16
+ print_usage() {
17
+ cat <<'EOF_USAGE'
18
+ Usage:
19
+ bash execute.sh --id pred-123 --outcome "merged Thursday" --accurate true [--session crewly-dev-1]
20
+ bash execute.sh --id pred-123 --outcome wrong
21
+ bash execute.sh '{"id":"pred-123","outcome":"slipped","accurate":false}'
22
+
23
+ Options:
24
+ --id Prediction id (required)
25
+ --outcome | -o What actually happened (required)
26
+ --accurate | -a true|false (required unless outcome is a plain verdict like "correct"/"wrong")
27
+ --session | -s Session name (defaults to $CREWLY_SESSION_NAME)
28
+ --help | -h Show this help
29
+ EOF_USAGE
30
+ }
31
+
32
+ INPUT_JSON=""
33
+ SESSION_NAME=""
34
+ PRED_ID=""
35
+ OUTCOME=""
36
+ ACCURATE=""
37
+
38
+ if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
39
+ INPUT_JSON="$1"
40
+ shift || true
41
+ fi
42
+
43
+ while [[ $# -gt 0 ]]; do
44
+ case "$1" in
45
+ --id)
46
+ [ $# -ge 2 ] || error_exit "--id requires a value"
47
+ PRED_ID="$2"; shift 2 ;;
48
+ --outcome|-o)
49
+ [ $# -ge 2 ] || error_exit "--outcome requires a value"
50
+ OUTCOME="$2"; shift 2 ;;
51
+ --accurate|-a)
52
+ [ $# -ge 2 ] || error_exit "--accurate requires a value"
53
+ ACCURATE="$2"; shift 2 ;;
54
+ --session|-s)
55
+ [ $# -ge 2 ] || error_exit "--session requires a value"
56
+ SESSION_NAME="$2"; shift 2 ;;
57
+ --help|-h) print_usage; exit 0 ;;
58
+ *) error_exit "Unknown option: $1" ;;
59
+ esac
60
+ done
61
+
62
+ if [ -n "$INPUT_JSON" ]; then
63
+ INPUT=$(read_json_input "$INPUT_JSON")
64
+ [ -z "$SESSION_NAME" ] && SESSION_NAME=$(printf '%s' "$INPUT" | jq -r '.sessionName // .agentId // empty')
65
+ [ -z "$PRED_ID" ] && PRED_ID=$(printf '%s' "$INPUT" | jq -r '.id // .predictionId // empty')
66
+ [ -z "$OUTCOME" ] && OUTCOME=$(printf '%s' "$INPUT" | jq -r '.outcome // empty')
67
+ [ -z "$ACCURATE" ] && ACCURATE=$(printf '%s' "$INPUT" | jq -r 'if .accurate == null then empty else (.accurate | tostring) end')
68
+ fi
69
+
70
+ [ -z "$SESSION_NAME" ] && SESSION_NAME="${CREWLY_SESSION_NAME:-}"
71
+ require_param "sessionName (--session or CREWLY_SESSION_NAME)" "$SESSION_NAME"
72
+ require_param "id (--id)" "$PRED_ID"
73
+ require_param "outcome (--outcome)" "$OUTCOME"
74
+
75
+ case "$ACCURATE" in
76
+ "") BODY=$(jq -cn --arg o "$OUTCOME" '{outcome: $o}') ;;
77
+ true|false) BODY=$(jq -cn --arg o "$OUTCOME" --argjson a "$ACCURATE" '{outcome: $o, accurate: $a}') ;;
78
+ *) error_exit "accurate must be true or false (got: $ACCURATE)" ;;
79
+ esac
80
+
81
+ RESPONSE=$(api_call POST "/agents/${SESSION_NAME}/self-improvement/predictions/${PRED_ID}/resolve" "$BODY" 2>&1) || {
82
+ ERROR_MSG=$(printf '%s' "$RESPONSE" | jq -r '.details.error // .details // .error // "Unknown error"' 2>/dev/null || echo "$RESPONSE")
83
+ jq -n --arg reason "$ERROR_MSG" '{success: false, reason: $reason}'
84
+ exit 1
85
+ }
86
+
87
+ printf '%s' "$RESPONSE" | jq -c '{success: (.success // false), prediction: (.data.prediction // null), calibrationScore: (.data.calibrationScore // null)}'