monomind 1.11.8 → 1.11.10

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 (379) hide show
  1. package/.claude/agents/github/issue-tracker.md +5 -5
  2. package/.claude/agents/github/pr-manager.md +5 -5
  3. package/.claude/agents/github/release-manager.md +3 -3
  4. package/.claude/agents/github/repo-architect.md +3 -3
  5. package/.claude/agents/github/swarm-issue.md +1 -1
  6. package/.claude/agents/github/sync-coordinator.md +1 -1
  7. package/.claude/agents/github/workflow-automation.md +1 -1
  8. package/.claude/commands/github/repo-architect.md +1 -1
  9. package/.claude/commands/github/sync-coordinator.md +1 -1
  10. package/.claude/commands/mastermind/createorg.md +4 -1
  11. package/.claude/commands/mastermind/help.md +2 -2
  12. package/.claude/commands/mastermind/orgs.md +21 -0
  13. package/.claude/commands/mastermind/orgstatus.md +59 -0
  14. package/.claude/commands/mastermind/runorg.md +4 -2
  15. package/.claude/commands/mastermind/stoporg.md +78 -0
  16. package/.claude/commands/mastermind/swarm.md +1 -1
  17. package/.claude/helpers/handlers/gates-handler.cjs +135 -0
  18. package/.claude/helpers/handlers/task-handler.cjs +7 -3
  19. package/.claude/helpers/hook-handler.cjs +11 -2
  20. package/.claude/helpers/intelligence.cjs +87 -0
  21. package/.claude/helpers/learning-service.mjs +60 -0
  22. package/.claude/helpers/memory.cjs +69 -0
  23. package/.claude/helpers/router.cjs +68 -0
  24. package/.claude/helpers/session.cjs +63 -0
  25. package/.claude/helpers/utils/monograph.cjs +4 -2
  26. package/.claude/helpers/utils/telemetry.cjs +3 -2
  27. package/.claude/scheduled_tasks.lock +1 -1
  28. package/.claude/settings.json +12 -2
  29. package/.claude/skills/agentic-jujutsu/SKILL.md +1 -1
  30. package/.claude/skills/hive-mind-advanced/SKILL.md +4 -4
  31. package/.claude/skills/mastermind/_agent-select.md +2 -2
  32. package/.claude/skills/mastermind/access.md +11 -11
  33. package/.claude/skills/mastermind/adapter-manager.md +13 -13
  34. package/.claude/skills/mastermind/adapters.md +7 -7
  35. package/.claude/skills/mastermind/agent-detail.md +1 -1
  36. package/.claude/skills/mastermind/agents.md +5 -5
  37. package/.claude/skills/mastermind/approval-detail.md +6 -6
  38. package/.claude/skills/mastermind/approve.md +9 -10
  39. package/.claude/skills/mastermind/backup.md +2 -2
  40. package/.claude/skills/mastermind/bootstrap.md +2 -2
  41. package/.claude/skills/mastermind/companies.md +7 -7
  42. package/.claude/skills/mastermind/createorg.md +213 -8
  43. package/.claude/skills/mastermind/diagnose.md +4 -4
  44. package/.claude/skills/mastermind/env.md +1 -1
  45. package/.claude/skills/mastermind/environments.md +8 -8
  46. package/.claude/skills/mastermind/export.md +12 -3
  47. package/.claude/skills/mastermind/goal-detail.md +9 -9
  48. package/.claude/skills/mastermind/goals.md +4 -4
  49. package/.claude/skills/mastermind/heartbeat.md +1 -1
  50. package/.claude/skills/mastermind/idea.md +4 -4
  51. package/.claude/skills/mastermind/import.md +8 -8
  52. package/.claude/skills/mastermind/inbox.md +4 -4
  53. package/.claude/skills/mastermind/instance-settings.md +9 -9
  54. package/.claude/skills/mastermind/instance.md +9 -7
  55. package/.claude/skills/mastermind/invite-landing.md +5 -5
  56. package/.claude/skills/mastermind/invites.md +12 -12
  57. package/.claude/skills/mastermind/issue-detail.md +8 -8
  58. package/.claude/skills/mastermind/monitor.md +11 -11
  59. package/.claude/skills/mastermind/my-issues.md +6 -6
  60. package/.claude/skills/mastermind/new-agent.md +4 -4
  61. package/.claude/skills/mastermind/org-chart.md +8 -6
  62. package/.claude/skills/mastermind/org-settings.md +58 -21
  63. package/.claude/skills/mastermind/orgs.md +98 -0
  64. package/.claude/skills/mastermind/orgstatus.md +194 -0
  65. package/.claude/skills/mastermind/plan-to-tasks.md +1 -1
  66. package/.claude/skills/mastermind/plugin-manager.md +12 -12
  67. package/.claude/skills/mastermind/plugin-settings.md +5 -5
  68. package/.claude/skills/mastermind/plugins.md +5 -5
  69. package/.claude/skills/mastermind/profile.md +2 -2
  70. package/.claude/skills/mastermind/project-detail.md +12 -12
  71. package/.claude/skills/mastermind/project-workspace.md +4 -4
  72. package/.claude/skills/mastermind/projects.md +4 -4
  73. package/.claude/skills/mastermind/review.md +50 -0
  74. package/.claude/skills/mastermind/routine-detail.md +3 -3
  75. package/.claude/skills/mastermind/routines.md +7 -6
  76. package/.claude/skills/mastermind/runorg.md +178 -8
  77. package/.claude/skills/mastermind/search.md +6 -6
  78. package/.claude/skills/mastermind/secrets.md +6 -6
  79. package/.claude/skills/mastermind/skills.md +4 -4
  80. package/.claude/skills/mastermind/stoporg.md +138 -0
  81. package/.claude/skills/mastermind/workspace-detail.md +5 -5
  82. package/.claude/skills/mastermind/workspaces.md +9 -9
  83. package/.claude/skills/performance-analysis/SKILL.md +3 -3
  84. package/.claude/skills/sparc-methodology/SKILL.md +2 -2
  85. package/.claude/skills/swarm-advanced/SKILL.md +4 -4
  86. package/.claude-plugin/README.md +10 -10
  87. package/.claude-plugin/docs/INSTALLATION.md +6 -6
  88. package/.claude-plugin/docs/PLUGIN_SUMMARY.md +9 -9
  89. package/.claude-plugin/docs/QUICKSTART.md +2 -2
  90. package/.claude-plugin/docs/STRUCTURE.md +1 -1
  91. package/.claude-plugin/marketplace.json +5 -5
  92. package/.claude-plugin/plugin.json +3 -3
  93. package/README.md +129 -376
  94. package/package.json +4 -8
  95. package/packages/@monomind/cli/README.md +129 -376
  96. package/packages/@monomind/cli/dist/src/agents/registry-builder.d.ts +27 -1
  97. package/packages/@monomind/cli/dist/src/agents/registry-builder.js +2 -2
  98. package/packages/@monomind/cli/dist/src/commands/agent.js +4 -9
  99. package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +1 -1
  100. package/packages/@monomind/cli/dist/src/commands/analyze.js +1 -1
  101. package/packages/@monomind/cli/dist/src/commands/claims.d.ts +1 -1
  102. package/packages/@monomind/cli/dist/src/commands/claims.js +2 -2
  103. package/packages/@monomind/cli/dist/src/commands/cleanup.d.ts +1 -1
  104. package/packages/@monomind/cli/dist/src/commands/cleanup.js +1 -1
  105. package/packages/@monomind/cli/dist/src/commands/completions.d.ts +1 -1
  106. package/packages/@monomind/cli/dist/src/commands/completions.js +1 -1
  107. package/packages/@monomind/cli/dist/src/commands/deployment.d.ts +1 -1
  108. package/packages/@monomind/cli/dist/src/commands/deployment.js +2 -2
  109. package/packages/@monomind/cli/dist/src/commands/doctor.d.ts +1 -1
  110. package/packages/@monomind/cli/dist/src/commands/doctor.js +69 -4
  111. package/packages/@monomind/cli/dist/src/commands/guidance.js +129 -0
  112. package/packages/@monomind/cli/dist/src/commands/index.js +4 -0
  113. package/packages/@monomind/cli/dist/src/commands/init.js +18 -0
  114. package/packages/@monomind/cli/dist/src/commands/monovector/import.d.ts +1 -1
  115. package/packages/@monomind/cli/dist/src/commands/monovector/import.js +1 -1
  116. package/packages/@monomind/cli/dist/src/commands/monovector/index.d.ts +1 -1
  117. package/packages/@monomind/cli/dist/src/commands/monovector/index.js +1 -1
  118. package/packages/@monomind/cli/dist/src/commands/monovector/setup.d.ts +1 -1
  119. package/packages/@monomind/cli/dist/src/commands/monovector/setup.js +2 -2
  120. package/packages/@monomind/cli/dist/src/commands/neural.d.ts +1 -1
  121. package/packages/@monomind/cli/dist/src/commands/neural.js +2 -2
  122. package/packages/@monomind/cli/dist/src/commands/performance.d.ts +1 -1
  123. package/packages/@monomind/cli/dist/src/commands/performance.js +2 -2
  124. package/packages/@monomind/cli/dist/src/commands/platforms.d.ts +1 -1
  125. package/packages/@monomind/cli/dist/src/commands/platforms.js +1 -1
  126. package/packages/@monomind/cli/dist/src/commands/plugins.d.ts +1 -1
  127. package/packages/@monomind/cli/dist/src/commands/plugins.js +2 -4
  128. package/packages/@monomind/cli/dist/src/commands/providers.d.ts +1 -1
  129. package/packages/@monomind/cli/dist/src/commands/providers.js +2 -2
  130. package/packages/@monomind/cli/dist/src/commands/route.d.ts +1 -1
  131. package/packages/@monomind/cli/dist/src/commands/route.js +5 -11
  132. package/packages/@monomind/cli/dist/src/commands/security.d.ts +1 -1
  133. package/packages/@monomind/cli/dist/src/commands/security.js +140 -91
  134. package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +7 -1
  135. package/packages/@monomind/cli/dist/src/index.d.ts +1 -1
  136. package/packages/@monomind/cli/dist/src/index.js +10 -26
  137. package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +2 -2
  138. package/packages/@monomind/cli/dist/src/init/executor.js +3 -3
  139. package/packages/@monomind/cli/dist/src/init/settings-generator.js +2 -2
  140. package/packages/@monomind/cli/dist/src/mcp-client.d.ts +5 -0
  141. package/packages/@monomind/cli/dist/src/mcp-client.js +7 -0
  142. package/packages/@monomind/cli/dist/src/mcp-server.js +17 -1
  143. package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +6 -6
  144. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +2 -2
  145. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +1 -1
  146. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +1 -52
  147. package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +4 -0
  148. package/packages/@monomind/cli/dist/src/mcp-tools/index.js +4 -0
  149. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +1 -2
  150. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +107 -5
  151. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.d.ts +6 -6
  152. package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +48 -61
  153. package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +0 -1
  154. package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +232 -57
  155. package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +3 -32
  156. package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +0 -69
  157. package/packages/@monomind/cli/dist/src/routing/embed-worker.d.ts +2 -0
  158. package/packages/@monomind/cli/dist/src/routing/embed-worker.js +55 -0
  159. package/packages/@monomind/cli/dist/src/routing/embedder.d.ts +31 -0
  160. package/packages/@monomind/cli/dist/src/routing/embedder.js +0 -0
  161. package/packages/@monomind/cli/dist/src/routing/llm-caller.d.ts +1 -1
  162. package/packages/@monomind/cli/dist/src/routing/llm-caller.js +18 -3
  163. package/packages/@monomind/cli/dist/src/routing/route-layer-factory.d.ts +9 -0
  164. package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +151 -0
  165. package/packages/@monomind/cli/dist/src/services/worker-daemon.js +0 -1
  166. package/packages/@monomind/cli/dist/src/suggest.d.ts +1 -1
  167. package/packages/@monomind/cli/dist/src/suggest.js +1 -1
  168. package/packages/@monomind/cli/package.json +9 -10
  169. package/packages/@monomind/cli/scripts/understand-analyze.mjs +1 -1
  170. package/packages/@monomind/guidance/README.md +6 -6
  171. package/packages/@monomind/guidance/package.json +9 -1
  172. package/scripts/install.sh +7 -7
  173. package/scripts/ua-enrich.mjs +3 -2
  174. package/packages/@monomind/shared/dist/agent-contract.d.ts +0 -28
  175. package/packages/@monomind/shared/dist/agent-contract.js +0 -57
  176. package/packages/@monomind/shared/dist/agent-error-result.d.ts +0 -17
  177. package/packages/@monomind/shared/dist/agent-error-result.js +0 -23
  178. package/packages/@monomind/shared/dist/core/config/defaults.d.ts +0 -41
  179. package/packages/@monomind/shared/dist/core/config/defaults.js +0 -186
  180. package/packages/@monomind/shared/dist/core/config/index.d.ts +0 -8
  181. package/packages/@monomind/shared/dist/core/config/index.js +0 -12
  182. package/packages/@monomind/shared/dist/core/config/loader.d.ts +0 -45
  183. package/packages/@monomind/shared/dist/core/config/loader.js +0 -238
  184. package/packages/@monomind/shared/dist/core/config/schema.d.ts +0 -324
  185. package/packages/@monomind/shared/dist/core/config/schema.js +0 -160
  186. package/packages/@monomind/shared/dist/core/config/validator.d.ts +0 -92
  187. package/packages/@monomind/shared/dist/core/config/validator.js +0 -147
  188. package/packages/@monomind/shared/dist/core/event-bus.d.ts +0 -31
  189. package/packages/@monomind/shared/dist/core/event-bus.js +0 -197
  190. package/packages/@monomind/shared/dist/core/index.d.ts +0 -15
  191. package/packages/@monomind/shared/dist/core/index.js +0 -19
  192. package/packages/@monomind/shared/dist/core/interfaces/agent.interface.d.ts +0 -200
  193. package/packages/@monomind/shared/dist/core/interfaces/agent.interface.js +0 -6
  194. package/packages/@monomind/shared/dist/core/interfaces/coordinator.interface.d.ts +0 -310
  195. package/packages/@monomind/shared/dist/core/interfaces/coordinator.interface.js +0 -7
  196. package/packages/@monomind/shared/dist/core/interfaces/event.interface.d.ts +0 -224
  197. package/packages/@monomind/shared/dist/core/interfaces/event.interface.js +0 -46
  198. package/packages/@monomind/shared/dist/core/interfaces/index.d.ts +0 -10
  199. package/packages/@monomind/shared/dist/core/interfaces/index.js +0 -15
  200. package/packages/@monomind/shared/dist/core/interfaces/memory.interface.d.ts +0 -298
  201. package/packages/@monomind/shared/dist/core/interfaces/memory.interface.js +0 -7
  202. package/packages/@monomind/shared/dist/core/interfaces/task.interface.d.ts +0 -185
  203. package/packages/@monomind/shared/dist/core/interfaces/task.interface.js +0 -6
  204. package/packages/@monomind/shared/dist/core/orchestrator/event-coordinator.d.ts +0 -35
  205. package/packages/@monomind/shared/dist/core/orchestrator/event-coordinator.js +0 -101
  206. package/packages/@monomind/shared/dist/core/orchestrator/health-monitor.d.ts +0 -60
  207. package/packages/@monomind/shared/dist/core/orchestrator/health-monitor.js +0 -166
  208. package/packages/@monomind/shared/dist/core/orchestrator/index.d.ts +0 -46
  209. package/packages/@monomind/shared/dist/core/orchestrator/index.js +0 -64
  210. package/packages/@monomind/shared/dist/core/orchestrator/lifecycle-manager.d.ts +0 -56
  211. package/packages/@monomind/shared/dist/core/orchestrator/lifecycle-manager.js +0 -195
  212. package/packages/@monomind/shared/dist/core/orchestrator/session-manager.d.ts +0 -83
  213. package/packages/@monomind/shared/dist/core/orchestrator/session-manager.js +0 -193
  214. package/packages/@monomind/shared/dist/core/orchestrator/task-manager.d.ts +0 -49
  215. package/packages/@monomind/shared/dist/core/orchestrator/task-manager.js +0 -253
  216. package/packages/@monomind/shared/dist/events/domain-events.d.ts +0 -282
  217. package/packages/@monomind/shared/dist/events/domain-events.js +0 -165
  218. package/packages/@monomind/shared/dist/events/event-store.d.ts +0 -126
  219. package/packages/@monomind/shared/dist/events/event-store.js +0 -416
  220. package/packages/@monomind/shared/dist/events/event-store.test.d.ts +0 -8
  221. package/packages/@monomind/shared/dist/events/event-store.test.js +0 -293
  222. package/packages/@monomind/shared/dist/events/example-usage.d.ts +0 -10
  223. package/packages/@monomind/shared/dist/events/example-usage.js +0 -193
  224. package/packages/@monomind/shared/dist/events/index.d.ts +0 -21
  225. package/packages/@monomind/shared/dist/events/index.js +0 -22
  226. package/packages/@monomind/shared/dist/events/projections.d.ts +0 -177
  227. package/packages/@monomind/shared/dist/events/projections.js +0 -421
  228. package/packages/@monomind/shared/dist/events/rvf-event-log.d.ts +0 -82
  229. package/packages/@monomind/shared/dist/events/rvf-event-log.js +0 -340
  230. package/packages/@monomind/shared/dist/events/state-reconstructor.d.ts +0 -101
  231. package/packages/@monomind/shared/dist/events/state-reconstructor.js +0 -263
  232. package/packages/@monomind/shared/dist/events.d.ts +0 -80
  233. package/packages/@monomind/shared/dist/events.js +0 -249
  234. package/packages/@monomind/shared/dist/hooks/example-usage.d.ts +0 -42
  235. package/packages/@monomind/shared/dist/hooks/example-usage.js +0 -351
  236. package/packages/@monomind/shared/dist/hooks/executor.d.ts +0 -100
  237. package/packages/@monomind/shared/dist/hooks/executor.js +0 -264
  238. package/packages/@monomind/shared/dist/hooks/hooks.test.d.ts +0 -9
  239. package/packages/@monomind/shared/dist/hooks/hooks.test.js +0 -322
  240. package/packages/@monomind/shared/dist/hooks/index.d.ts +0 -52
  241. package/packages/@monomind/shared/dist/hooks/index.js +0 -51
  242. package/packages/@monomind/shared/dist/hooks/registry.d.ts +0 -133
  243. package/packages/@monomind/shared/dist/hooks/registry.js +0 -277
  244. package/packages/@monomind/shared/dist/hooks/safety/bash-safety.d.ts +0 -105
  245. package/packages/@monomind/shared/dist/hooks/safety/bash-safety.js +0 -481
  246. package/packages/@monomind/shared/dist/hooks/safety/file-organization.d.ts +0 -144
  247. package/packages/@monomind/shared/dist/hooks/safety/file-organization.js +0 -328
  248. package/packages/@monomind/shared/dist/hooks/safety/git-commit.d.ts +0 -158
  249. package/packages/@monomind/shared/dist/hooks/safety/git-commit.js +0 -450
  250. package/packages/@monomind/shared/dist/hooks/safety/index.d.ts +0 -17
  251. package/packages/@monomind/shared/dist/hooks/safety/index.js +0 -17
  252. package/packages/@monomind/shared/dist/hooks/session-hooks.d.ts +0 -234
  253. package/packages/@monomind/shared/dist/hooks/session-hooks.js +0 -334
  254. package/packages/@monomind/shared/dist/hooks/task-hooks.d.ts +0 -163
  255. package/packages/@monomind/shared/dist/hooks/task-hooks.js +0 -326
  256. package/packages/@monomind/shared/dist/hooks/types.d.ts +0 -267
  257. package/packages/@monomind/shared/dist/hooks/types.js +0 -62
  258. package/packages/@monomind/shared/dist/hooks/verify-exports.test.d.ts +0 -9
  259. package/packages/@monomind/shared/dist/hooks/verify-exports.test.js +0 -93
  260. package/packages/@monomind/shared/dist/index.d.ts +0 -46
  261. package/packages/@monomind/shared/dist/index.js +0 -77
  262. package/packages/@monomind/shared/dist/mcp/connection-pool.d.ts +0 -98
  263. package/packages/@monomind/shared/dist/mcp/connection-pool.js +0 -364
  264. package/packages/@monomind/shared/dist/mcp/index.d.ts +0 -69
  265. package/packages/@monomind/shared/dist/mcp/index.js +0 -84
  266. package/packages/@monomind/shared/dist/mcp/server.d.ts +0 -166
  267. package/packages/@monomind/shared/dist/mcp/server.js +0 -593
  268. package/packages/@monomind/shared/dist/mcp/session-manager.d.ts +0 -136
  269. package/packages/@monomind/shared/dist/mcp/session-manager.js +0 -335
  270. package/packages/@monomind/shared/dist/mcp/tool-registry.d.ts +0 -178
  271. package/packages/@monomind/shared/dist/mcp/tool-registry.js +0 -439
  272. package/packages/@monomind/shared/dist/mcp/transport/http.d.ts +0 -104
  273. package/packages/@monomind/shared/dist/mcp/transport/http.js +0 -476
  274. package/packages/@monomind/shared/dist/mcp/transport/index.d.ts +0 -102
  275. package/packages/@monomind/shared/dist/mcp/transport/index.js +0 -238
  276. package/packages/@monomind/shared/dist/mcp/transport/stdio.d.ts +0 -104
  277. package/packages/@monomind/shared/dist/mcp/transport/stdio.js +0 -263
  278. package/packages/@monomind/shared/dist/mcp/transport/websocket.d.ts +0 -133
  279. package/packages/@monomind/shared/dist/mcp/transport/websocket.js +0 -396
  280. package/packages/@monomind/shared/dist/mcp/types.d.ts +0 -438
  281. package/packages/@monomind/shared/dist/mcp/types.js +0 -54
  282. package/packages/@monomind/shared/dist/plugin-interface.d.ts +0 -544
  283. package/packages/@monomind/shared/dist/plugin-interface.js +0 -23
  284. package/packages/@monomind/shared/dist/plugin-loader.d.ts +0 -139
  285. package/packages/@monomind/shared/dist/plugin-loader.js +0 -434
  286. package/packages/@monomind/shared/dist/plugin-registry.d.ts +0 -183
  287. package/packages/@monomind/shared/dist/plugin-registry.js +0 -457
  288. package/packages/@monomind/shared/dist/plugins/index.d.ts +0 -10
  289. package/packages/@monomind/shared/dist/plugins/index.js +0 -10
  290. package/packages/@monomind/shared/dist/plugins/official/hive-mind-plugin.d.ts +0 -106
  291. package/packages/@monomind/shared/dist/plugins/official/hive-mind-plugin.js +0 -241
  292. package/packages/@monomind/shared/dist/plugins/official/index.d.ts +0 -10
  293. package/packages/@monomind/shared/dist/plugins/official/index.js +0 -10
  294. package/packages/@monomind/shared/dist/plugins/official/maestro-plugin.d.ts +0 -121
  295. package/packages/@monomind/shared/dist/plugins/official/maestro-plugin.js +0 -355
  296. package/packages/@monomind/shared/dist/plugins/types.d.ts +0 -93
  297. package/packages/@monomind/shared/dist/plugins/types.js +0 -9
  298. package/packages/@monomind/shared/dist/reducers.d.ts +0 -33
  299. package/packages/@monomind/shared/dist/reducers.js +0 -89
  300. package/packages/@monomind/shared/dist/resilience/bulkhead.d.ts +0 -105
  301. package/packages/@monomind/shared/dist/resilience/bulkhead.js +0 -206
  302. package/packages/@monomind/shared/dist/resilience/circuit-breaker.d.ts +0 -132
  303. package/packages/@monomind/shared/dist/resilience/circuit-breaker.js +0 -233
  304. package/packages/@monomind/shared/dist/resilience/index.d.ts +0 -19
  305. package/packages/@monomind/shared/dist/resilience/index.js +0 -19
  306. package/packages/@monomind/shared/dist/resilience/rate-limiter.d.ts +0 -168
  307. package/packages/@monomind/shared/dist/resilience/rate-limiter.js +0 -314
  308. package/packages/@monomind/shared/dist/resilience/retry.d.ts +0 -91
  309. package/packages/@monomind/shared/dist/resilience/retry.js +0 -159
  310. package/packages/@monomind/shared/dist/retry-policy.d.ts +0 -14
  311. package/packages/@monomind/shared/dist/retry-policy.js +0 -23
  312. package/packages/@monomind/shared/dist/retry-runner.d.ts +0 -21
  313. package/packages/@monomind/shared/dist/retry-runner.js +0 -57
  314. package/packages/@monomind/shared/dist/schema-validator.d.ts +0 -46
  315. package/packages/@monomind/shared/dist/schema-validator.js +0 -133
  316. package/packages/@monomind/shared/dist/scratchpad.d.ts +0 -23
  317. package/packages/@monomind/shared/dist/scratchpad.js +0 -32
  318. package/packages/@monomind/shared/dist/security/index.d.ts +0 -10
  319. package/packages/@monomind/shared/dist/security/index.js +0 -12
  320. package/packages/@monomind/shared/dist/security/input-validation.d.ts +0 -73
  321. package/packages/@monomind/shared/dist/security/input-validation.js +0 -201
  322. package/packages/@monomind/shared/dist/security/secure-random.d.ts +0 -92
  323. package/packages/@monomind/shared/dist/security/secure-random.js +0 -142
  324. package/packages/@monomind/shared/dist/services/index.d.ts +0 -7
  325. package/packages/@monomind/shared/dist/services/index.js +0 -7
  326. package/packages/@monomind/shared/dist/services/progress.service.d.ts +0 -124
  327. package/packages/@monomind/shared/dist/services/progress.service.js +0 -402
  328. package/packages/@monomind/shared/dist/state-manager.d.ts +0 -34
  329. package/packages/@monomind/shared/dist/state-manager.js +0 -73
  330. package/packages/@monomind/shared/dist/state-validator.d.ts +0 -20
  331. package/packages/@monomind/shared/dist/state-validator.js +0 -49
  332. package/packages/@monomind/shared/dist/swarm-state.d.ts +0 -52
  333. package/packages/@monomind/shared/dist/swarm-state.js +0 -18
  334. package/packages/@monomind/shared/dist/testing/fixture-builder.d.ts +0 -14
  335. package/packages/@monomind/shared/dist/testing/fixture-builder.js +0 -32
  336. package/packages/@monomind/shared/dist/testing/index.d.ts +0 -2
  337. package/packages/@monomind/shared/dist/testing/index.js +0 -2
  338. package/packages/@monomind/shared/dist/testing/test-model.d.ts +0 -29
  339. package/packages/@monomind/shared/dist/testing/test-model.js +0 -53
  340. package/packages/@monomind/shared/dist/types/agent-registry.d.ts +0 -62
  341. package/packages/@monomind/shared/dist/types/agent-registry.js +0 -8
  342. package/packages/@monomind/shared/dist/types/agent-version.d.ts +0 -49
  343. package/packages/@monomind/shared/dist/types/agent-version.js +0 -7
  344. package/packages/@monomind/shared/dist/types/agent.types.d.ts +0 -137
  345. package/packages/@monomind/shared/dist/types/agent.types.js +0 -6
  346. package/packages/@monomind/shared/dist/types/benchmark.d.ts +0 -39
  347. package/packages/@monomind/shared/dist/types/benchmark.js +0 -6
  348. package/packages/@monomind/shared/dist/types/communication-flow.d.ts +0 -25
  349. package/packages/@monomind/shared/dist/types/communication-flow.js +0 -7
  350. package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +0 -40
  351. package/packages/@monomind/shared/dist/types/consensus-audit.js +0 -7
  352. package/packages/@monomind/shared/dist/types/dlq.d.ts +0 -40
  353. package/packages/@monomind/shared/dist/types/dlq.js +0 -7
  354. package/packages/@monomind/shared/dist/types/eval.d.ts +0 -59
  355. package/packages/@monomind/shared/dist/types/eval.js +0 -6
  356. package/packages/@monomind/shared/dist/types/index.d.ts +0 -19
  357. package/packages/@monomind/shared/dist/types/index.js +0 -33
  358. package/packages/@monomind/shared/dist/types/mcp.types.d.ts +0 -266
  359. package/packages/@monomind/shared/dist/types/mcp.types.js +0 -7
  360. package/packages/@monomind/shared/dist/types/memory.types.d.ts +0 -236
  361. package/packages/@monomind/shared/dist/types/memory.types.js +0 -7
  362. package/packages/@monomind/shared/dist/types/retry.d.ts +0 -72
  363. package/packages/@monomind/shared/dist/types/retry.js +0 -40
  364. package/packages/@monomind/shared/dist/types/specialization.d.ts +0 -27
  365. package/packages/@monomind/shared/dist/types/specialization.js +0 -8
  366. package/packages/@monomind/shared/dist/types/swarm.types.d.ts +0 -186
  367. package/packages/@monomind/shared/dist/types/swarm.types.js +0 -65
  368. package/packages/@monomind/shared/dist/types/task.types.d.ts +0 -178
  369. package/packages/@monomind/shared/dist/types/task.types.js +0 -32
  370. package/packages/@monomind/shared/dist/types/termination.d.ts +0 -29
  371. package/packages/@monomind/shared/dist/types/termination.js +0 -14
  372. package/packages/@monomind/shared/dist/types/tool-version.d.ts +0 -41
  373. package/packages/@monomind/shared/dist/types/tool-version.js +0 -8
  374. package/packages/@monomind/shared/dist/types/trigger.d.ts +0 -40
  375. package/packages/@monomind/shared/dist/types/trigger.js +0 -8
  376. package/packages/@monomind/shared/dist/types.d.ts +0 -197
  377. package/packages/@monomind/shared/dist/types.js +0 -21
  378. package/packages/@monomind/shared/dist/utils/secure-logger.d.ts +0 -69
  379. package/packages/@monomind/shared/dist/utils/secure-logger.js +0 -208
@@ -164,7 +164,7 @@ if [ -n "$issue_id" ]; then
164
164
  echo "ISSUE: $issue_id"
165
165
  echo "────────────────────────────────────────────────────────"
166
166
  if [ -f "$issuesFile" ]; then
167
- jq --arg id "$issue_id" '.issues[] | select(.id == $id)' "$issuesFile" 2>/dev/null \
167
+ jq --arg id "$issue_id" '(.issues // [])[] | select(.id == $id)' "$issuesFile" 2>/dev/null \
168
168
  || echo " Issue not found: $issue_id"
169
169
  fi
170
170
  fi
@@ -212,9 +212,9 @@ agentCount=$(jq '.roles | length' "$orgFile")
212
212
  echo "Org agents: $agentCount"
213
213
 
214
214
  if [ -f "$issuesFile" ]; then
215
- openCount=$(jq '[.issues[] | select(.status == "open")] | length' "$issuesFile")
216
- inpCount=$(jq '[.issues[] | select(.status == "in_progress")] | length' "$issuesFile")
217
- doneCount=$(jq '[.issues[] | select(.status == "done")] | length' "$issuesFile")
215
+ openCount=$(jq '[(.issues // [])[] | select(.status == "open")] | length' "$issuesFile")
216
+ inpCount=$(jq '[(.issues // [])[] | select(.status == "in_progress")] | length' "$issuesFile")
217
+ doneCount=$(jq '[(.issues // [])[] | select(.status == "done")] | length' "$issuesFile")
218
218
  echo "Issues: open=$openCount in_progress=$inpCount done=$doneCount"
219
219
  fi
220
220
 
@@ -57,7 +57,7 @@ echo "LLM PROVIDER"
57
57
  echo "────────────"
58
58
  ceo_model=$(jq -r '.run_config.ceo_adapter // "claude-sonnet-4-6"' "$orgFile")
59
59
  echo " CEO adapter model: $ceo_model"
60
- jq -r '.roles[] | " \(.id): \(.adapter_config.model // "inherited from CEO")"' "$orgFile" 2>/dev/null
60
+ jq -r '(.roles // [])[] | " \(.id): \(.adapter_config.model // "inherited from CEO")"' "$orgFile" 2>/dev/null
61
61
  echo ""
62
62
 
63
63
  # API key availability (check env vars, never print values)
@@ -73,7 +73,7 @@ count=$(jq '.environments | length' "$envFile")
73
73
  if [ "$count" -eq 0 ]; then
74
74
  echo " No environments. Use --action create to add one."
75
75
  else
76
- jq -r --arg def "$defaultEnv" '.environments[] |
76
+ jq -r --arg def "$defaultEnv" '(.environments // [])[] |
77
77
  [
78
78
  .id,
79
79
  (.kind // "local"),
@@ -116,7 +116,7 @@ jq --arg id "$envId" \
116
116
  --arg sref "${secret_ref:-}" \
117
117
  --arg wdir "${work_dir:-/tmp/monomind}" \
118
118
  --arg ts "$ts" \
119
- '.environments = [.environments[] | select(.id != $id)] +
119
+ '.environments = [(.environments // [])[] | select(.id != $id)] +
120
120
  [{"id":$id,"name":$n,"kind":$kind,
121
121
  "host":(if $host != "" then $host else null end),
122
122
  "port":(if $host != "" then $port else null end),
@@ -135,7 +135,7 @@ echo "Run --action probe --env-id $envId to verify connectivity."
135
135
 
136
136
  ```bash
137
137
  [ -z "$env_id" ] && { echo "ERROR: --env-id required."; exit 1; }
138
- exists=$(jq --arg id "$env_id" '[.environments[] | select(.id == $id)] | length' "$envFile")
138
+ exists=$(jq --arg id "$env_id" '[(.environments // [])[] | select(.id == $id)] | length' "$envFile")
139
139
  [ "$exists" -eq 0 ] && { echo "ERROR: Environment '$env_id' not found."; exit 1; }
140
140
 
141
141
  tmp="${envFile}.tmp"
@@ -145,7 +145,7 @@ jq --arg id "$env_id" \
145
145
  --arg user "${user:-}" \
146
146
  --arg sref "${secret_ref:-}" \
147
147
  --arg wdir "${work_dir:-}" \
148
- '.environments = [.environments[] | if .id == $id then
148
+ '.environments = [(.environments // [])[] | if .id == $id then
149
149
  . *
150
150
  (if $host != "" then {"host":$host} else {} end) *
151
151
  (if $port > 0 then {"port":$port} else {} end) *
@@ -164,7 +164,7 @@ echo "Updated environment: $env_id"
164
164
  [ -z "$env_id" ] && { echo "ERROR: --env-id required."; exit 1; }
165
165
  tmp="${envFile}.tmp"
166
166
  jq --arg id "$env_id" \
167
- '.environments = [.environments[] | select(.id != $id)] |
167
+ '.environments = [(.environments // [])[] | select(.id != $id)] |
168
168
  if .default_env == $id then .default_env = null else . end' \
169
169
  "$envFile" > "$tmp" && mv "$tmp" "$envFile"
170
170
  echo "Deleted environment: $env_id"
@@ -174,7 +174,7 @@ echo "Deleted environment: $env_id"
174
174
 
175
175
  ```bash
176
176
  [ -z "$env_id" ] && { echo "ERROR: --env-id required."; exit 1; }
177
- envData=$(jq -r --arg id "$env_id" '.environments[] | select(.id == $id)' "$envFile")
177
+ envData=$(jq -r --arg id "$env_id" '(.environments // [])[] | select(.id == $id)' "$envFile")
178
178
  [ -z "$envData" ] && { echo "ERROR: Environment '$env_id' not found."; exit 1; }
179
179
 
180
180
  kind=$(echo "$envData" | jq -r '.kind')
@@ -212,7 +212,7 @@ esac
212
212
 
213
213
  tmp="${envFile}.tmp"
214
214
  jq --arg id "$env_id" --arg st "$status" --arg ts "$ts" \
215
- '.environments = [.environments[] | if .id == $id then .probeStatus = $st | .lastProbe = $ts else . end]' \
215
+ '.environments = [(.environments // [])[] | if .id == $id then .probeStatus = $st | .lastProbe = $ts else . end]' \
216
216
  "$envFile" > "$tmp" && mv "$tmp" "$envFile"
217
217
 
218
218
  echo "Probe [$env_id]: $status (checked at $ts)"
@@ -222,7 +222,7 @@ echo "Probe [$env_id]: $status (checked at $ts)"
222
222
 
223
223
  ```bash
224
224
  [ -z "$env_id" ] && { echo "ERROR: --env-id required."; exit 1; }
225
- exists=$(jq --arg id "$env_id" '[.environments[] | select(.id == $id)] | length' "$envFile")
225
+ exists=$(jq --arg id "$env_id" '[(.environments // [])[] | select(.id == $id)] | length' "$envFile")
226
226
  [ "$exists" -eq 0 ] && { echo "ERROR: Environment '$env_id' not found."; exit 1; }
227
227
 
228
228
  tmp="${envFile}.tmp"
@@ -34,10 +34,13 @@ This skill is invoked by `mastermind:export` or directly via `/mastermind:export
34
34
  | `goals` | `<org>-goals.json` | ✓ |
35
35
  | `routines` | `<org>-routines.json` | ✓ |
36
36
  | `projects` | `<org>-projects.json` | ✓ |
37
+ | `issues` | `<org>-issues.json` | ✓ |
37
38
  | `members` | `<org>-members.json` | ✓ |
38
39
  | `adapters` | `<org>-adapters.json` | ✓ |
39
40
  | `environments` | `<org>-environments.json` | ✓ |
40
41
  | `workspaces` | `<org>-workspaces.json` | ✓ |
42
+ | `threads` | `<org>-threads.json` | ✓ |
43
+ | `budgets` | `<org>-budgets.json` | ✓ |
41
44
  | `activity` | `<org>-activity.jsonl` (last 500 events) | ✓ |
42
45
  | `secrets-refs` | secret reference names only (NO values) | opt-in |
43
46
 
@@ -84,7 +87,7 @@ Show what would be included in an export without writing anything:
84
87
  echo "EXPORT PREVIEW — org: $org_name"
85
88
  echo "────────────────────────────────────────────────────────"
86
89
 
87
- allSections="config goals routines projects members adapters environments workspaces activity"
90
+ allSections="config goals routines projects issues members adapters environments workspaces threads budgets activity"
88
91
  includeSections="${include:-$allSections}"
89
92
 
90
93
  for section in $allSections; do
@@ -94,10 +97,13 @@ for section in $allSections; do
94
97
  goals) srcFile=".monomind/orgs/${org_name}-goals.json" ;;
95
98
  routines) srcFile=".monomind/orgs/${org_name}-routines.json" ;;
96
99
  projects) srcFile=".monomind/orgs/${org_name}-projects.json" ;;
100
+ issues) srcFile=".monomind/orgs/${org_name}-issues.json" ;;
97
101
  members) srcFile=".monomind/orgs/${org_name}-members.json" ;;
98
102
  adapters) srcFile=".monomind/orgs/${org_name}-adapters.json" ;;
99
103
  environments) srcFile=".monomind/orgs/${org_name}-environments.json" ;;
100
104
  workspaces) srcFile=".monomind/orgs/${org_name}-workspaces.json" ;;
105
+ threads) srcFile=".monomind/orgs/${org_name}-threads.json" ;;
106
+ budgets) srcFile=".monomind/orgs/${org_name}-budgets.json" ;;
101
107
  activity) srcFile=".monomind/orgs/${org_name}-activity.jsonl" ;;
102
108
  secrets-refs) srcFile=".monomind/orgs/.secrets/${org_name}/" ;;
103
109
  esac
@@ -119,7 +125,7 @@ echo "Run with --action export to proceed."
119
125
  ```bash
120
126
  echo "Exporting org '$org_name'…"
121
127
 
122
- allSections="config goals routines projects members adapters environments workspaces activity"
128
+ allSections="config goals routines projects issues members adapters environments workspaces threads budgets activity"
123
129
  includeSections="${include:-$allSections}"
124
130
 
125
131
  # Build list of files to include
@@ -135,10 +141,13 @@ for section in $allSections; do
135
141
  goals) srcFile=".monomind/orgs/${org_name}-goals.json" ; dstName="${org_name}-goals.json" ;;
136
142
  routines) srcFile=".monomind/orgs/${org_name}-routines.json" ; dstName="${org_name}-routines.json" ;;
137
143
  projects) srcFile=".monomind/orgs/${org_name}-projects.json" ; dstName="${org_name}-projects.json" ;;
144
+ issues) srcFile=".monomind/orgs/${org_name}-issues.json" ; dstName="${org_name}-issues.json" ;;
138
145
  members) srcFile=".monomind/orgs/${org_name}-members.json" ; dstName="${org_name}-members.json" ;;
139
146
  adapters) srcFile=".monomind/orgs/${org_name}-adapters.json" ; dstName="${org_name}-adapters.json" ;;
140
147
  environments) srcFile=".monomind/orgs/${org_name}-environments.json" ; dstName="${org_name}-environments.json" ;;
141
148
  workspaces) srcFile=".monomind/orgs/${org_name}-workspaces.json" ; dstName="${org_name}-workspaces.json" ;;
149
+ threads) srcFile=".monomind/orgs/${org_name}-threads.json" ; dstName="${org_name}-threads.json" ;;
150
+ budgets) srcFile=".monomind/orgs/${org_name}-budgets.json" ; dstName="${org_name}-budgets.json" ;;
142
151
  activity) srcFile=".monomind/orgs/${org_name}-activity.jsonl" ; dstName="${org_name}-activity.jsonl" ;;
143
152
  secrets-refs)
144
153
  # Export ONLY secret reference names — NO values
@@ -154,7 +163,7 @@ for section in $allSections; do
154
163
  if [ -f "$srcFile" ]; then
155
164
  # For environments: strip key material before including
156
165
  if [ "$section" = "environments" ]; then
157
- jq '.environments = [.environments[] | del(.key_material,.private_key,.ssh_key,.password)]' \
166
+ jq '.environments = [(.environments // [])[] | del(.key_material,.private_key,.ssh_key,.password)]' \
158
167
  "$srcFile" > "${orgExportDir}/${dstName}"
159
168
  elif [ "$section" = "activity" ]; then
160
169
  # Only last 500 events
@@ -53,7 +53,7 @@ orgFile=".monomind/orgs/${org_name}.json"
53
53
  goalsFile=".monomind/orgs/${org_name}-goals.json"
54
54
  [ ! -f "$goalsFile" ] && { echo "ERROR: No goals file for org '$org_name'. Create goals via /mastermind:goals."; exit 1; }
55
55
 
56
- goalDef=$(jq -r --arg id "$goal_id" '.goals[] | select(.id == $id or .slug == $id)' "$goalsFile")
56
+ goalDef=$(jq -r --arg id "$goal_id" '(.goals // [])[] | select(.id == $id or .slug == $id)' "$goalsFile")
57
57
  [ -z "$goalDef" ] && { echo "ERROR: Goal '$goal_id' not found in org '$org_name'."; exit 1; }
58
58
 
59
59
  resolvedId=$(echo "$goalDef" | jq -r '.id')
@@ -81,8 +81,8 @@ echo "$goalDef" | jq -r '
81
81
  '
82
82
 
83
83
  # Sub-goals count
84
- subCount=$(jq --arg pid "$resolvedId" '[.goals[] | select(.parent_id == $pid)] | length' "$goalsFile" 2>/dev/null || echo 0)
85
- doneCount=$(jq --arg pid "$resolvedId" '[.goals[] | select(.parent_id == $pid and .status == "done")] | length' "$goalsFile" 2>/dev/null || echo 0)
84
+ subCount=$(jq --arg pid "$resolvedId" '[(.goals // [])[] | select(.parent_id == $pid)] | length' "$goalsFile" 2>/dev/null || echo 0)
85
+ doneCount=$(jq --arg pid "$resolvedId" '[(.goals // [])[] | select(.parent_id == $pid and .status == "done")] | length' "$goalsFile" 2>/dev/null || echo 0)
86
86
  echo " Sub-goals: $subCount total, $doneCount done"
87
87
 
88
88
  # Linked projects
@@ -109,7 +109,7 @@ function print_tree() {
109
109
  local pid="$1"
110
110
  local indent="$2"
111
111
  local children
112
- children=$(jq -r --arg pid "$pid" '.goals[] | select(.parent_id == $pid) |
112
+ children=$(jq -r --arg pid "$pid" '(.goals // [])[] | select(.parent_id == $pid) |
113
113
  [.id, (.status // "open"), (.title // "(no title)")] | @tsv' "$goalsFile" 2>/dev/null)
114
114
  while IFS=$'\t' read -r cid cst ctitle; do
115
115
  [ -z "$cid" ] && continue
@@ -138,7 +138,7 @@ else
138
138
  while IFS= read -r pid; do
139
139
  [ -z "$pid" ] && continue
140
140
  if [ -f "$projectsFile" ]; then
141
- projInfo=$(jq -r --arg id "$pid" '.projects[] | select(.id == $id) |
141
+ projInfo=$(jq -r --arg id "$pid" '(.projects // [])[] | select(.id == $id) |
142
142
  " [\(.status // "active")] \(.name // $id) — \(.description // "")"' "$projectsFile" 2>/dev/null)
143
143
  [ -n "$projInfo" ] && echo "$projInfo" || echo " [$pid] (project not found in projects file)"
144
144
  else
@@ -151,7 +151,7 @@ echo ""
151
151
  echo "Issues referencing this goal:"
152
152
  issuesFile=".monomind/orgs/${org_name}-issues.json"
153
153
  if [ -f "$issuesFile" ]; then
154
- count=$(jq --arg gid "$resolvedId" '[.issues[] | select(.goal_id == $gid)] | length' "$issuesFile" 2>/dev/null || echo 0)
154
+ count=$(jq --arg gid "$resolvedId" '[(.issues // [])[] | select(.goal_id == $gid)] | length' "$issuesFile" 2>/dev/null || echo 0)
155
155
  echo " $count issue(s) linked to this goal."
156
156
  fi
157
157
  ```
@@ -181,7 +181,7 @@ fi
181
181
  ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)
182
182
  tmp="${goalsFile}.tmp"
183
183
  jq --arg id "$resolvedId" --arg field "$field" --arg val "$value" --arg ts "$ts" \
184
- '.goals = [.goals[] | if .id == $id then .[$field] = $val | .updated_at = $ts else . end]' \
184
+ '.goals = [(.goals // [])[] | if .id == $id then .[$field] = $val | .updated_at = $ts else . end]' \
185
185
  "$goalsFile" > "$tmp" && mv "$tmp" "$goalsFile"
186
186
 
187
187
  echo "Goal '$goal_id' updated: $field = $value"
@@ -218,7 +218,7 @@ echo " Parent: $goal_id"
218
218
  ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)
219
219
  tmp="${goalsFile}.tmp"
220
220
  jq --arg id "$resolvedId" --arg ts "$ts" \
221
- '.goals = [.goals[] | if .id == $id then .status = "done" | .updated_at = $ts | .closed_at = $ts else . end]' \
221
+ '.goals = [(.goals // [])[] | if .id == $id then .status = "done" | .updated_at = $ts | .closed_at = $ts else . end]' \
222
222
  "$goalsFile" > "$tmp" && mv "$tmp" "$goalsFile"
223
223
  echo "Goal '$goal_id' → done."
224
224
  ```
@@ -229,7 +229,7 @@ echo "Goal '$goal_id' → done."
229
229
  ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)
230
230
  tmp="${goalsFile}.tmp"
231
231
  jq --arg id "$resolvedId" --arg ts "$ts" \
232
- '.goals = [.goals[] | if .id == $id then .status = "open" | .updated_at = $ts | .closed_at = null else . end]' \
232
+ '.goals = [(.goals // [])[] | if .id == $id then .status = "open" | .updated_at = $ts | .closed_at = null else . end]' \
233
233
  "$goalsFile" > "$tmp" && mv "$tmp" "$goalsFile"
234
234
  echo "Goal '$goal_id' → reopened."
235
235
  ```
@@ -55,7 +55,7 @@ jq -r '
55
55
  (" " * (.depth // 0)) + "[\(.id)] \(.title) [\(.status // "active")] \(.metric // "")" ,
56
56
  tree(gs; .id);
57
57
  .goals | tree(.; null)
58
- ' "$goalsFile" 2>/dev/null || jq -r '.goals[] | "[\(.id)] \(.title) [\(.status // "active")]"' "$goalsFile"
58
+ ' "$goalsFile" 2>/dev/null || jq -r '(.goals // [])[] | "[\(.id)] \(.title) [\(.status // "active")]"' "$goalsFile"
59
59
  ```
60
60
 
61
61
  Render as:
@@ -95,7 +95,7 @@ tmp="${goalsFile}.tmp"
95
95
  jq --arg id "$goal_id" \
96
96
  --arg status "${status:-}" \
97
97
  --arg metric "${metric:-}" \
98
- '.goals = [.goals[] | if .id == $id then
98
+ '.goals = [(.goals // [])[] | if .id == $id then
99
99
  (if $status != "" then .status = $status else . end) |
100
100
  (if $metric != "" then .metric = $metric else . end) |
101
101
  (.updated_at = (now|todate))
@@ -110,7 +110,7 @@ Link a task id to a goal (append to goal's tasks array):
110
110
  ```bash
111
111
  tmp="${goalsFile}.tmp"
112
112
  jq --arg id "$goal_id" --arg task "$task_id" \
113
- '.goals = [.goals[] | if .id == $id then .tasks += [$task] else . end]' \
113
+ '.goals = [(.goals // [])[] | if .id == $id then .tasks += [$task] else . end]' \
114
114
  "$goalsFile" > "$tmp" && mv "$tmp" "$goalsFile"
115
115
  ```
116
116
 
@@ -121,7 +121,7 @@ Mark goal as achieved and timestamp:
121
121
  ```bash
122
122
  tmp="${goalsFile}.tmp"
123
123
  jq --arg id "$goal_id" \
124
- '.goals = [.goals[] | if .id == $id then .status = "achieved" | .achieved_at = (now|todate) else . end]' \
124
+ '.goals = [(.goals // [])[] | if .id == $id then .status = "achieved" | .achieved_at = (now|todate) else . end]' \
125
125
  "$goalsFile" > "$tmp" && mv "$tmp" "$goalsFile"
126
126
  ```
127
127
 
@@ -49,7 +49,7 @@ memNs="org:${org_name}"
49
49
  ## Step 2 — Validate Agent
50
50
 
51
51
  ```bash
52
- agentConfig=$(jq --arg id "$agent_id" '.roles[] | select(.id == $id)' "$orgFile")
52
+ agentConfig=$(jq --arg id "$agent_id" '(.roles // [])[] | select(.id == $id)' "$orgFile")
53
53
  [ -z "$agentConfig" ] && { echo "ERROR: Agent '$agent_id' not found in org '$org_name'."; exit 1; }
54
54
 
55
55
  agentTitle=$(echo "$agentConfig" | jq -r '.title')
@@ -157,7 +157,7 @@ user_market_agents=$(jq \
157
157
  --arg cats "$CATEGORIES" \
158
158
  --arg kw "$(echo "$PROMPT" | tr '[:upper:]' '[:lower:]' | grep -oE '[a-z]{5,}' | sort -u | tr '\n' ' ')" \
159
159
  --argjson n "$TOP_N" \
160
- '[ .agents[] | select(.deprecated != true)
160
+ '[ (.agents // [])[] | select(.deprecated != true)
161
161
  | select(.category as $c | ($cats | split(" ") | any(. == $c)))
162
162
  | {name: .name, slug: .slug, category: .category,
163
163
  score: (
@@ -175,7 +175,7 @@ CATEGORIES="engineering development architecture"
175
175
  tech_agents=$(jq \
176
176
  --arg cats "$CATEGORIES" \
177
177
  --argjson n 3 \
178
- '[ .agents[] | select(.deprecated != true)
178
+ '[ (.agents // [])[] | select(.deprecated != true)
179
179
  | select(.category as $c | ($cats | split(" ") | any(. == $c)))
180
180
  | {name: .name, slug: .slug}
181
181
  ] | unique_by(.slug) | .[0:$n] | [.[].name]' \
@@ -715,7 +715,7 @@ REGISTRY=".monomind/registry.json"
715
715
 
716
716
  # Dev decomposition agent — pick the most relevant engineering/architecture specialist
717
717
  dev_decomp_agent=$(jq -r \
718
- '[ .agents[] | select(.deprecated != true)
718
+ '[ (.agents // [])[] | select(.deprecated != true)
719
719
  | select(.category == "engineering" or .category == "architecture")
720
720
  | {name: .name,
721
721
  score: (.name | ascii_downcase |
@@ -733,7 +733,7 @@ dev_decomp_agent="${dev_decomp_agent:-Software Architect}"
733
733
 
734
734
  # Ops decomposition agent — pick the most relevant strategy/sales/product specialist
735
735
  ops_decomp_agent=$(jq -r \
736
- '[ .agents[] | select(.deprecated != true)
736
+ '[ (.agents // [])[] | select(.deprecated != true)
737
737
  | select(.category == "strategy" or .category == "sales" or .category == "product" or .category == "marketing")
738
738
  | {name: .name,
739
739
  score: (.name | ascii_downcase |
@@ -90,8 +90,8 @@ elif [ "$fmt" = "json" ]; then
90
90
  cp "$archive_path" "$tmpDir/org.json"
91
91
  fi
92
92
 
93
- # Find the main org config file
94
- orgConfigFile=$(find "$tmpDir" -name "*.json" | grep -v '\-' | head -1)
93
+ # Find the main org config file (exclude sidecar files and manifest)
94
+ orgConfigFile=$(find "$tmpDir" -name "*.json" | grep -vE -- '-approvals|-state|-activity|-goals|-routines|-projects|-members|-issues|-workspaces|-worktrees|-environments|-plugins|-adapters|-bootstrap|-threads|-budgets|-project-workspaces|-approval-comments|-secrets|/manifest\.json' | head -1)
95
95
  [ -z "$orgConfigFile" ] && orgConfigFile=$(find "$tmpDir" -name "org.json" -o -name "export.json" | head -1)
96
96
 
97
97
  if [ -z "$orgConfigFile" ]; then
@@ -125,11 +125,11 @@ fi
125
125
  # Preview agent plans
126
126
  echo "AGENT PLANS"
127
127
  echo "────────────────────────────────────────────────────────"
128
- jq -r --arg target "$targetOrgFile" '.roles[] |
128
+ jq -r --arg target "$targetOrgFile" '(.roles // [])[] |
129
129
  [.id, (.title // "-"), (.adapter.type // "?"), (.adapter.model // "-")] | @tsv' \
130
130
  "$orgConfigFile" | while IFS=$'\t' read -r id title adapter model; do
131
131
  if [ -f "$targetOrgFile" ]; then
132
- exists=$(jq -r --arg id "$id" '[.roles[] | select(.id == $id)] | length' "$targetOrgFile")
132
+ exists=$(jq -r --arg id "$id" '[(.roles // [])[] | select(.id == $id)] | length' "$targetOrgFile")
133
133
  action=$([ "$exists" -gt 0 ] && echo "UPDATE" || echo "CREATE")
134
134
  else
135
135
  action="CREATE"
@@ -157,7 +157,7 @@ elif [ "$fmt" = "json" ]; then
157
157
  cp "$archive_path" "$tmpDir/org.json"
158
158
  fi
159
159
 
160
- orgConfigFile=$(find "$tmpDir" -name "*.json" | grep -v '\-' | head -1)
160
+ orgConfigFile=$(find "$tmpDir" -name "*.json" | grep -vE -- '-approvals|-state|-activity|-goals|-routines|-projects|-members|-issues|-workspaces|-worktrees|-environments|-plugins|-adapters|-bootstrap|-threads|-budgets|-project-workspaces|-approval-comments|-secrets|/manifest\.json' | head -1)
161
161
  [ -z "$orgConfigFile" ] && orgConfigFile=$(find "$tmpDir" -name "org.json" -o -name "export.json" | head -1)
162
162
  [ -z "$orgConfigFile" ] && { echo "ERROR: Could not find org config file in archive."; exit 1; }
163
163
 
@@ -191,7 +191,7 @@ ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)
191
191
  if [ -n "$adapter_override" ]; then
192
192
  tmp="${orgConfigFile}.ovr"
193
193
  jq --arg a "$adapter_override" \
194
- '.roles = [.roles[] | .adapter.type = $a]' \
194
+ '.roles = [(.roles // [])[] | .adapter.type = $a]' \
195
195
  "$orgConfigFile" > "$tmp" && mv "$tmp" "$orgConfigFile"
196
196
  echo " Applied adapter override: $adapter_override to all agents"
197
197
  fi
@@ -216,7 +216,7 @@ else
216
216
  fi
217
217
 
218
218
  # Copy associated files (goals, routines, issues, etc.) from archive
219
- for suffix in members issues goals projects routines approvals adapters plugins environments workspaces activity threads budgets; do
219
+ for suffix in members issues goals projects routines approvals adapters plugins environments workspaces worktrees activity threads budgets project-workspaces approval-comments bootstrap; do
220
220
  src=$(find "$tmpDir" -name "*-${suffix}.json" | head -1)
221
221
  [ -z "$src" ] && src=$(find "$tmpDir" -name "*-${suffix}.jsonl" | head -1)
222
222
  if [ -n "$src" ]; then
@@ -238,7 +238,7 @@ try:
238
238
  except Exception as e:
239
239
  print(json.dumps(json.load(open(dest_path))), file=__import__('sys').stdout)
240
240
  PYEOF
241
- mv "${dest}.tmp" "$dest"
241
+ [ $? -eq 0 ] && mv "${dest}.tmp" "$dest" || rm -f "${dest}.tmp"
242
242
  else
243
243
  cp "$src" "$dest"
244
244
  fi
@@ -34,7 +34,7 @@ If `caller` is not "command", load brain context following _protocol.md Brain Lo
34
34
  if [ -n "$org_name" ]; then
35
35
  orgs="$org_name"
36
36
  else
37
- orgs=$(ls .monomind/orgs/*.json 2>/dev/null | grep -v '\-state\|-goals\|-routines\|-approvals\|-projects\|-worktrees\|-secrets' | xargs -I{} basename {} .json | sort)
37
+ orgs=$(ls .monomind/orgs/*.json 2>/dev/null | grep -vE -- '-approvals|-state|-activity|-goals|-routines|-projects|-members|-issues|-workspaces|-worktrees|-environments|-plugins|-adapters|-bootstrap|-threads|-budgets|-project-workspaces|-approval-comments' | xargs -I{} basename {} .json | sort)
38
38
  fi
39
39
  ```
40
40
 
@@ -56,7 +56,7 @@ for org in $orgs; do
56
56
 
57
57
  # 1. Pending approvals
58
58
  if [ -f "$approvalsFile" ]; then
59
- pending=$(jq '[.approvals[] | select(.status == "pending")] | length' "$approvalsFile" 2>/dev/null || echo 0)
59
+ pending=$(jq '[(.approvals // [])[] | select(.status == "pending")] | length' "$approvalsFile" 2>/dev/null || echo 0)
60
60
  total_approvals=$((total_approvals + pending))
61
61
  fi
62
62
 
@@ -103,7 +103,7 @@ for org in $orgs; do
103
103
 
104
104
  # Pending approvals
105
105
  if [ -f "$approvalsFile" ]; then
106
- pending_approvals=$(jq -r '.approvals[] | select(.status == "pending") | " [APPROVAL] [\(.id)] \(.agent_id): \(.title) risk=\(.risk_level // "low")"' \
106
+ pending_approvals=$(jq -r '(.approvals // [])[] | select(.status == "pending") | " [APPROVAL] [\(.id)] \(.agent_id): \(.title) risk=\(.risk_level // "low")"' \
107
107
  "$approvalsFile" 2>/dev/null)
108
108
  [ -n "$pending_approvals" ] && { has_items=1; echo "ORG: $org"; echo "$pending_approvals"; }
109
109
  fi
@@ -132,7 +132,7 @@ for org in $orgs; do
132
132
  approvalsFile=".monomind/orgs/${org}-approvals.json"
133
133
  [ -f "$approvalsFile" ] || continue
134
134
  echo "=== $org ==="
135
- jq -r '.approvals[] | select(.status == "pending") |
135
+ jq -r '(.approvals // [])[] | select(.status == "pending") |
136
136
  "[\(.id)] \(.agent_id): \(.title)\n Action: \(.action)\n Risk: \(.risk_level // "low")\n → /mastermind:approve --org '"$org"' --action approve --approval-id \(.id)"
137
137
  ' "$approvalsFile" 2>/dev/null || echo " No pending approvals."
138
138
  echo ""
@@ -185,7 +185,7 @@ stalledCount=0
185
185
  for issuesFile in .monomind/orgs/*-issues.json; do
186
186
  [ -f "$issuesFile" ] || continue
187
187
  cnt=$(jq --arg cutoff "$cutoff" \
188
- '[.issues[] | select(.status == "in_progress" and (.lastActivityAt // .createdAt // "") < $cutoff)] | length' \
188
+ '[(.issues // [])[] | select(.status == "in_progress" and (.lastActivityAt // .createdAt // "") < $cutoff)] | length' \
189
189
  "$issuesFile" 2>/dev/null || echo 0)
190
190
  stalledCount=$((stalledCount + cnt))
191
191
  done
@@ -235,12 +235,12 @@ ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)
235
235
  tmp="${accessFile}.tmp"
236
236
  jq --arg uid "$user_id" --arg org "$org_name" --arg ts "$ts" \
237
237
  '.users = (
238
- if any(.users[]; .id == $uid) then
239
- [.users[] | if .id == $uid then
238
+ if any((.users // [])[]; .id == $uid) then
239
+ [(.users // [])[] | if .id == $uid then
240
240
  .companyAccess = ((.companyAccess // []) | if any(.[]; . == $org) then . else . + [$org] end)
241
241
  else . end]
242
242
  else
243
- .users + [{"id": $uid, "companyAccess": [$org], "isInstanceAdmin": false, "grantedAt": $ts}]
243
+ (.users // []) + [{"id": $uid, "companyAccess": [$org], "isInstanceAdmin": false, "grantedAt": $ts}]
244
244
  end)' \
245
245
  "$accessFile" > "$tmp" && mv "$tmp" "$accessFile"
246
246
 
@@ -258,7 +258,7 @@ accessFile=".monomind/instance-access.json"
258
258
 
259
259
  tmp="${accessFile}.tmp"
260
260
  jq --arg uid "$user_id" --arg org "$org_name" \
261
- '.users = [.users[] | if .id == $uid then
261
+ '.users = [(.users // [])[] | if .id == $uid then
262
262
  .companyAccess = [(.companyAccess // [])[] | select(. != $org)]
263
263
  else . end]' \
264
264
  "$accessFile" > "$tmp" && mv "$tmp" "$accessFile"
@@ -276,9 +276,9 @@ accessFile=".monomind/instance-access.json"
276
276
 
277
277
  tmp="${accessFile}.tmp"
278
278
  jq --arg uid "$user_id" \
279
- '.users = (if any(.users[]; .id == $uid) then
280
- [.users[] | if .id == $uid then .isInstanceAdmin = true else . end]
281
- else .users + [{"id":$uid,"companyAccess":[],"isInstanceAdmin":true}] end)' \
279
+ '.users = (if any((.users // [])[]; .id == $uid) then
280
+ [(.users // [])[] | if .id == $uid then .isInstanceAdmin = true else . end]
281
+ else (.users // []) + [{"id":$uid,"companyAccess":[],"isInstanceAdmin":true}] end)' \
282
282
  "$accessFile" > "$tmp" && mv "$tmp" "$accessFile"
283
283
 
284
284
  echo "User '$user_id' granted instance admin role."
@@ -292,7 +292,7 @@ echo "User '$user_id' granted instance admin role."
292
292
  accessFile=".monomind/instance-access.json"
293
293
  tmp="${accessFile}.tmp"
294
294
  jq --arg uid "$user_id" \
295
- '.users = [.users[] | if .id == $uid then .isInstanceAdmin = false else . end]' \
295
+ '.users = [(.users // [])[] | if .id == $uid then .isInstanceAdmin = false else . end]' \
296
296
  "$accessFile" > "$tmp" && mv "$tmp" "$accessFile"
297
297
 
298
298
  echo "Instance admin revoked for user '$user_id'."
@@ -78,7 +78,7 @@ jq -r '
78
78
 
79
79
  echo ""
80
80
  echo "ORGS"
81
- orgs=$(ls .monomind/orgs/*.json 2>/dev/null | grep -v '\-state\|-goals\|-routines\|-approvals\|-projects\|-worktrees\|-secrets\|-members\|-adapters\|-plugins' | wc -l | tr -d ' ')
81
+ orgs=$(ls .monomind/orgs/*.json 2>/dev/null | grep -vE -- '-approvals|-state|-activity|-goals|-routines|-projects|-members|-issues|-workspaces|-worktrees|-environments|-plugins|-adapters|-bootstrap|-threads|-budgets|-project-workspaces|-approval-comments' | wc -l | tr -d ' ')
82
82
  echo " Active orgs: $orgs"
83
83
  ```
84
84
 
@@ -96,14 +96,15 @@ found=0
96
96
  for orgF in .monomind/orgs/*.json; do
97
97
  [[ "$orgF" == *-state* || "$orgF" == *-goals* || "$orgF" == *-routines* || "$orgF" == *-approvals* ]] && continue
98
98
  [[ "$orgF" == *-projects* || "$orgF" == *-worktrees* || "$orgF" == *-members* || "$orgF" == *-adapters* ]] && continue
99
- [[ "$orgF" == *-plugins* || "$orgF" == *-bootstrap* ]] && continue
99
+ [[ "$orgF" == *-plugins* || "$orgF" == *-bootstrap* || "$orgF" == *-activity* ]] && continue
100
+ [[ "$orgF" == *-issues* || "$orgF" == *-workspaces* || "$orgF" == *-environments* ]] && continue
100
101
 
101
102
  orgName=$(basename "$orgF" .json)
102
103
  [ -n "$org_name" ] && [ "$orgName" != "$org_name" ] && continue
103
104
 
104
105
  stateFile=".monomind/orgs/${orgName}-state.json"
105
106
  jq -r --arg org "$orgName" '
106
- .roles[] |
107
+ (.roles // [])[] |
107
108
  select(.heartbeat.enabled == true or (.runtimeConfig.heartbeat.enabled == true)) |
108
109
  [$org, .id,
109
110
  ((.heartbeat.interval // .runtimeConfig.heartbeat.interval // "900") | tostring) + "s",
@@ -131,12 +132,12 @@ orgFile=".monomind/orgs/${org_name}.json"
131
132
 
132
133
  # Get current state
133
134
  current=$(jq -r --arg id "$agent_id" \
134
- '.roles[] | select(.id == $id) | .heartbeat.enabled // false' "$orgFile" 2>/dev/null || echo "false")
135
+ '(.roles // [])[] | select(.id == $id) | .heartbeat.enabled // false' "$orgFile" 2>/dev/null || echo "false")
135
136
  newState=$([ "$current" = "true" ] && echo "false" || echo "true")
136
137
 
137
138
  tmp="${orgFile}.tmp"
138
139
  jq --arg id "$agent_id" --argjson enabled "$newState" \
139
- '.roles = [.roles[] | if .id == $id then .heartbeat.enabled = $enabled else . end]' \
140
+ '.roles = [(.roles // [])[] | if .id == $id then .heartbeat.enabled = $enabled else . end]' \
140
141
  "$orgFile" > "$tmp" && mv "$tmp" "$orgFile"
141
142
 
142
143
  echo "Heartbeat for '$agent_id' → $([ "$newState" = "true" ] && echo 'ENABLED' || echo 'DISABLED')"
@@ -187,7 +188,8 @@ total_pending=0
187
188
  for orgF in .monomind/orgs/*.json; do
188
189
  [[ "$orgF" == *-state* || "$orgF" == *-goals* || "$orgF" == *-routines* || "$orgF" == *-approvals* ]] && continue
189
190
  [[ "$orgF" == *-projects* || "$orgF" == *-worktrees* || "$orgF" == *-members* || "$orgF" == *-adapters* ]] && continue
190
- [[ "$orgF" == *-plugins* || "$orgF" == *-bootstrap* ]] && continue
191
+ [[ "$orgF" == *-plugins* || "$orgF" == *-bootstrap* || "$orgF" == *-activity* ]] && continue
192
+ [[ "$orgF" == *-issues* || "$orgF" == *-workspaces* || "$orgF" == *-environments* ]] && continue
191
193
 
192
194
  orgName=$(basename "$orgF" .json)
193
195
  total_orgs=$((total_orgs + 1))
@@ -199,7 +201,7 @@ for orgF in .monomind/orgs/*.json; do
199
201
  total_running=$((total_running + running))
200
202
  fi
201
203
  if [ -f "$approvalsFile" ]; then
202
- pending=$(jq '[.approvals[] | select(.status == "pending")] | length' "$approvalsFile" 2>/dev/null || echo 0)
204
+ pending=$(jq '[(.approvals // [])[] | select(.status == "pending")] | length' "$approvalsFile" 2>/dev/null || echo 0)
203
205
  total_pending=$((total_pending + pending))
204
206
  fi
205
207
  done
@@ -52,7 +52,7 @@ if [ -z "$org_name" ]; then
52
52
  # Search all members files for a matching invite token
53
53
  for mf in .monomind/orgs/*-members.json; do
54
54
  [ -f "$mf" ] || continue
55
- match=$(jq -r --arg t "$token" '.join_requests[] | select(.token == $t or .id == $t) | .id' "$mf" 2>/dev/null | head -1)
55
+ match=$(jq -r --arg t "$token" '(.join_requests // [])[] | select(.token == $t or .id == $t) | .id' "$mf" 2>/dev/null | head -1)
56
56
  if [ -n "$match" ]; then
57
57
  org_name=$(basename "$mf" "-members.json")
58
58
  break
@@ -65,7 +65,7 @@ membersFile=".monomind/orgs/${org_name}-members.json"
65
65
  [ ! -f "$membersFile" ] && { echo "ERROR: Org '$org_name' members file not found."; exit 1; }
66
66
 
67
67
  inviteDef=$(jq -r --arg t "$token" \
68
- '.join_requests[] | select((.token == $t or .id == $t) and .type == "invite")' \
68
+ '(.join_requests // [])[] | select((.token == $t or .id == $t) and .type == "invite")' \
69
69
  "$membersFile" | head -c 4096)
70
70
  [ -z "$inviteDef" ] && { echo "ERROR: Invite token '$token' not found or already used."; exit 1; }
71
71
 
@@ -117,7 +117,7 @@ tmp="${membersFile}.tmp"
117
117
  # Mark invite accepted and add member record
118
118
  jq --arg token "$token" --arg mid "$memberId" --arg name "$display_name" \
119
119
  --arg email "$email" --arg role "$inviteRole" --arg ts "$ts" \
120
- '.join_requests = [.join_requests[] | if (.token == $token or .id == $token) then
120
+ '.join_requests = [(.join_requests // [])[] | if (.token == $token or .id == $token) then
121
121
  .status = "accepted" | .acceptedAt = $ts | .acceptedAs = "human"
122
122
  else . end] |
123
123
  .members += [{"id":$mid,"displayName":$name,"email":$email,"role":$role,
@@ -167,7 +167,7 @@ ts=$(date -u +%Y-%m-%dT%H:%M:%SZ)
167
167
  tmp="${membersFile}.tmp"
168
168
  jq --arg token "$token" --arg mid "$agentId" --arg name "$agent_name" \
169
169
  --arg role "$inviteRole" --arg adapter "$adapterType" --arg model "$modelId" --arg ts "$ts" \
170
- '.join_requests = [.join_requests[] | if (.token == $token or .id == $token) then
170
+ '.join_requests = [(.join_requests // [])[] | if (.token == $token or .id == $token) then
171
171
  .status = "accepted" | .acceptedAt = $ts | .acceptedAs = "agent"
172
172
  else . end] |
173
173
  .members += [{"id":$mid,"displayName":$name,"role":$role,
@@ -178,7 +178,7 @@ jq --arg token "$token" --arg mid "$agentId" --arg name "$agent_name" \
178
178
  # Also add to org roles file so the agent can run
179
179
  orgFile=".monomind/orgs/${org_name}.json"
180
180
  if [ -f "$orgFile" ]; then
181
- dupCheck=$(jq -r --arg id "$agentId" '[.roles[] | select(.id == $id)] | length' "$orgFile")
181
+ dupCheck=$(jq -r --arg id "$agentId" '[(.roles // [])[] | select(.id == $id)] | length' "$orgFile")
182
182
  if [ "$dupCheck" -eq 0 ]; then
183
183
  tmp2="${orgFile}.tmp"
184
184
  jq --arg id "$agentId" --arg title "$agent_name" \