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.
- package/.claude/agents/github/issue-tracker.md +5 -5
- package/.claude/agents/github/pr-manager.md +5 -5
- package/.claude/agents/github/release-manager.md +3 -3
- package/.claude/agents/github/repo-architect.md +3 -3
- package/.claude/agents/github/swarm-issue.md +1 -1
- package/.claude/agents/github/sync-coordinator.md +1 -1
- package/.claude/agents/github/workflow-automation.md +1 -1
- package/.claude/commands/github/repo-architect.md +1 -1
- package/.claude/commands/github/sync-coordinator.md +1 -1
- package/.claude/commands/mastermind/createorg.md +4 -1
- package/.claude/commands/mastermind/help.md +2 -2
- package/.claude/commands/mastermind/orgs.md +21 -0
- package/.claude/commands/mastermind/orgstatus.md +59 -0
- package/.claude/commands/mastermind/runorg.md +4 -2
- package/.claude/commands/mastermind/stoporg.md +78 -0
- package/.claude/commands/mastermind/swarm.md +1 -1
- package/.claude/helpers/handlers/gates-handler.cjs +135 -0
- package/.claude/helpers/handlers/task-handler.cjs +7 -3
- package/.claude/helpers/hook-handler.cjs +11 -2
- package/.claude/helpers/intelligence.cjs +87 -0
- package/.claude/helpers/learning-service.mjs +60 -0
- package/.claude/helpers/memory.cjs +69 -0
- package/.claude/helpers/router.cjs +68 -0
- package/.claude/helpers/session.cjs +63 -0
- package/.claude/helpers/utils/monograph.cjs +4 -2
- package/.claude/helpers/utils/telemetry.cjs +3 -2
- package/.claude/scheduled_tasks.lock +1 -1
- package/.claude/settings.json +12 -2
- package/.claude/skills/agentic-jujutsu/SKILL.md +1 -1
- package/.claude/skills/hive-mind-advanced/SKILL.md +4 -4
- package/.claude/skills/mastermind/_agent-select.md +2 -2
- package/.claude/skills/mastermind/access.md +11 -11
- package/.claude/skills/mastermind/adapter-manager.md +13 -13
- package/.claude/skills/mastermind/adapters.md +7 -7
- package/.claude/skills/mastermind/agent-detail.md +1 -1
- package/.claude/skills/mastermind/agents.md +5 -5
- package/.claude/skills/mastermind/approval-detail.md +6 -6
- package/.claude/skills/mastermind/approve.md +9 -10
- package/.claude/skills/mastermind/backup.md +2 -2
- package/.claude/skills/mastermind/bootstrap.md +2 -2
- package/.claude/skills/mastermind/companies.md +7 -7
- package/.claude/skills/mastermind/createorg.md +213 -8
- package/.claude/skills/mastermind/diagnose.md +4 -4
- package/.claude/skills/mastermind/env.md +1 -1
- package/.claude/skills/mastermind/environments.md +8 -8
- package/.claude/skills/mastermind/export.md +12 -3
- package/.claude/skills/mastermind/goal-detail.md +9 -9
- package/.claude/skills/mastermind/goals.md +4 -4
- package/.claude/skills/mastermind/heartbeat.md +1 -1
- package/.claude/skills/mastermind/idea.md +4 -4
- package/.claude/skills/mastermind/import.md +8 -8
- package/.claude/skills/mastermind/inbox.md +4 -4
- package/.claude/skills/mastermind/instance-settings.md +9 -9
- package/.claude/skills/mastermind/instance.md +9 -7
- package/.claude/skills/mastermind/invite-landing.md +5 -5
- package/.claude/skills/mastermind/invites.md +12 -12
- package/.claude/skills/mastermind/issue-detail.md +8 -8
- package/.claude/skills/mastermind/monitor.md +11 -11
- package/.claude/skills/mastermind/my-issues.md +6 -6
- package/.claude/skills/mastermind/new-agent.md +4 -4
- package/.claude/skills/mastermind/org-chart.md +8 -6
- package/.claude/skills/mastermind/org-settings.md +58 -21
- package/.claude/skills/mastermind/orgs.md +98 -0
- package/.claude/skills/mastermind/orgstatus.md +194 -0
- package/.claude/skills/mastermind/plan-to-tasks.md +1 -1
- package/.claude/skills/mastermind/plugin-manager.md +12 -12
- package/.claude/skills/mastermind/plugin-settings.md +5 -5
- package/.claude/skills/mastermind/plugins.md +5 -5
- package/.claude/skills/mastermind/profile.md +2 -2
- package/.claude/skills/mastermind/project-detail.md +12 -12
- package/.claude/skills/mastermind/project-workspace.md +4 -4
- package/.claude/skills/mastermind/projects.md +4 -4
- package/.claude/skills/mastermind/review.md +50 -0
- package/.claude/skills/mastermind/routine-detail.md +3 -3
- package/.claude/skills/mastermind/routines.md +7 -6
- package/.claude/skills/mastermind/runorg.md +178 -8
- package/.claude/skills/mastermind/search.md +6 -6
- package/.claude/skills/mastermind/secrets.md +6 -6
- package/.claude/skills/mastermind/skills.md +4 -4
- package/.claude/skills/mastermind/stoporg.md +138 -0
- package/.claude/skills/mastermind/workspace-detail.md +5 -5
- package/.claude/skills/mastermind/workspaces.md +9 -9
- package/.claude/skills/performance-analysis/SKILL.md +3 -3
- package/.claude/skills/sparc-methodology/SKILL.md +2 -2
- package/.claude/skills/swarm-advanced/SKILL.md +4 -4
- package/.claude-plugin/README.md +10 -10
- package/.claude-plugin/docs/INSTALLATION.md +6 -6
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +9 -9
- package/.claude-plugin/docs/QUICKSTART.md +2 -2
- package/.claude-plugin/docs/STRUCTURE.md +1 -1
- package/.claude-plugin/marketplace.json +5 -5
- package/.claude-plugin/plugin.json +3 -3
- package/README.md +129 -376
- package/package.json +4 -8
- package/packages/@monomind/cli/README.md +129 -376
- package/packages/@monomind/cli/dist/src/agents/registry-builder.d.ts +27 -1
- package/packages/@monomind/cli/dist/src/agents/registry-builder.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/agent.js +4 -9
- package/packages/@monomind/cli/dist/src/commands/analyze.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/analyze.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/claims.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/claims.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/cleanup.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/cleanup.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/completions.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/completions.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/deployment.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/deployment.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/doctor.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/doctor.js +69 -4
- package/packages/@monomind/cli/dist/src/commands/guidance.js +129 -0
- package/packages/@monomind/cli/dist/src/commands/index.js +4 -0
- package/packages/@monomind/cli/dist/src/commands/init.js +18 -0
- package/packages/@monomind/cli/dist/src/commands/monovector/import.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/import.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/index.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/index.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/monovector/setup.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/neural.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/neural.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/performance.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/performance.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/platforms.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/platforms.js +1 -1
- package/packages/@monomind/cli/dist/src/commands/plugins.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/plugins.js +2 -4
- package/packages/@monomind/cli/dist/src/commands/providers.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/providers.js +2 -2
- package/packages/@monomind/cli/dist/src/commands/route.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/route.js +5 -11
- package/packages/@monomind/cli/dist/src/commands/security.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/commands/security.js +140 -91
- package/packages/@monomind/cli/dist/src/dlq/dlq-replayer.d.ts +7 -1
- package/packages/@monomind/cli/dist/src/index.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/index.js +10 -26
- package/packages/@monomind/cli/dist/src/init/claudemd-generator.js +2 -2
- package/packages/@monomind/cli/dist/src/init/executor.js +3 -3
- package/packages/@monomind/cli/dist/src/init/settings-generator.js +2 -2
- package/packages/@monomind/cli/dist/src/mcp-client.d.ts +5 -0
- package/packages/@monomind/cli/dist/src/mcp-client.js +7 -0
- package/packages/@monomind/cli/dist/src/mcp-server.js +17 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/a2a-tools.js +6 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +2 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.js +1 -1
- package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +1 -52
- package/packages/@monomind/cli/dist/src/mcp-tools/index.d.ts +4 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/index.js +4 -0
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-compat.js +1 -2
- package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +107 -5
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.d.ts +6 -6
- package/packages/@monomind/cli/dist/src/mcp-tools/security-tools.js +48 -61
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.d.ts +0 -1
- package/packages/@monomind/cli/dist/src/memory/memory-bridge.js +232 -57
- package/packages/@monomind/cli/dist/src/memory/memory-initializer.js +3 -32
- package/packages/@monomind/cli/dist/src/plugins/store/discovery.js +0 -69
- package/packages/@monomind/cli/dist/src/routing/embed-worker.d.ts +2 -0
- package/packages/@monomind/cli/dist/src/routing/embed-worker.js +55 -0
- package/packages/@monomind/cli/dist/src/routing/embedder.d.ts +31 -0
- package/packages/@monomind/cli/dist/src/routing/embedder.js +0 -0
- package/packages/@monomind/cli/dist/src/routing/llm-caller.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/routing/llm-caller.js +18 -3
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.d.ts +9 -0
- package/packages/@monomind/cli/dist/src/routing/route-layer-factory.js +151 -0
- package/packages/@monomind/cli/dist/src/services/worker-daemon.js +0 -1
- package/packages/@monomind/cli/dist/src/suggest.d.ts +1 -1
- package/packages/@monomind/cli/dist/src/suggest.js +1 -1
- package/packages/@monomind/cli/package.json +9 -10
- package/packages/@monomind/cli/scripts/understand-analyze.mjs +1 -1
- package/packages/@monomind/guidance/README.md +6 -6
- package/packages/@monomind/guidance/package.json +9 -1
- package/scripts/install.sh +7 -7
- package/scripts/ua-enrich.mjs +3 -2
- package/packages/@monomind/shared/dist/agent-contract.d.ts +0 -28
- package/packages/@monomind/shared/dist/agent-contract.js +0 -57
- package/packages/@monomind/shared/dist/agent-error-result.d.ts +0 -17
- package/packages/@monomind/shared/dist/agent-error-result.js +0 -23
- package/packages/@monomind/shared/dist/core/config/defaults.d.ts +0 -41
- package/packages/@monomind/shared/dist/core/config/defaults.js +0 -186
- package/packages/@monomind/shared/dist/core/config/index.d.ts +0 -8
- package/packages/@monomind/shared/dist/core/config/index.js +0 -12
- package/packages/@monomind/shared/dist/core/config/loader.d.ts +0 -45
- package/packages/@monomind/shared/dist/core/config/loader.js +0 -238
- package/packages/@monomind/shared/dist/core/config/schema.d.ts +0 -324
- package/packages/@monomind/shared/dist/core/config/schema.js +0 -160
- package/packages/@monomind/shared/dist/core/config/validator.d.ts +0 -92
- package/packages/@monomind/shared/dist/core/config/validator.js +0 -147
- package/packages/@monomind/shared/dist/core/event-bus.d.ts +0 -31
- package/packages/@monomind/shared/dist/core/event-bus.js +0 -197
- package/packages/@monomind/shared/dist/core/index.d.ts +0 -15
- package/packages/@monomind/shared/dist/core/index.js +0 -19
- package/packages/@monomind/shared/dist/core/interfaces/agent.interface.d.ts +0 -200
- package/packages/@monomind/shared/dist/core/interfaces/agent.interface.js +0 -6
- package/packages/@monomind/shared/dist/core/interfaces/coordinator.interface.d.ts +0 -310
- package/packages/@monomind/shared/dist/core/interfaces/coordinator.interface.js +0 -7
- package/packages/@monomind/shared/dist/core/interfaces/event.interface.d.ts +0 -224
- package/packages/@monomind/shared/dist/core/interfaces/event.interface.js +0 -46
- package/packages/@monomind/shared/dist/core/interfaces/index.d.ts +0 -10
- package/packages/@monomind/shared/dist/core/interfaces/index.js +0 -15
- package/packages/@monomind/shared/dist/core/interfaces/memory.interface.d.ts +0 -298
- package/packages/@monomind/shared/dist/core/interfaces/memory.interface.js +0 -7
- package/packages/@monomind/shared/dist/core/interfaces/task.interface.d.ts +0 -185
- package/packages/@monomind/shared/dist/core/interfaces/task.interface.js +0 -6
- package/packages/@monomind/shared/dist/core/orchestrator/event-coordinator.d.ts +0 -35
- package/packages/@monomind/shared/dist/core/orchestrator/event-coordinator.js +0 -101
- package/packages/@monomind/shared/dist/core/orchestrator/health-monitor.d.ts +0 -60
- package/packages/@monomind/shared/dist/core/orchestrator/health-monitor.js +0 -166
- package/packages/@monomind/shared/dist/core/orchestrator/index.d.ts +0 -46
- package/packages/@monomind/shared/dist/core/orchestrator/index.js +0 -64
- package/packages/@monomind/shared/dist/core/orchestrator/lifecycle-manager.d.ts +0 -56
- package/packages/@monomind/shared/dist/core/orchestrator/lifecycle-manager.js +0 -195
- package/packages/@monomind/shared/dist/core/orchestrator/session-manager.d.ts +0 -83
- package/packages/@monomind/shared/dist/core/orchestrator/session-manager.js +0 -193
- package/packages/@monomind/shared/dist/core/orchestrator/task-manager.d.ts +0 -49
- package/packages/@monomind/shared/dist/core/orchestrator/task-manager.js +0 -253
- package/packages/@monomind/shared/dist/events/domain-events.d.ts +0 -282
- package/packages/@monomind/shared/dist/events/domain-events.js +0 -165
- package/packages/@monomind/shared/dist/events/event-store.d.ts +0 -126
- package/packages/@monomind/shared/dist/events/event-store.js +0 -416
- package/packages/@monomind/shared/dist/events/event-store.test.d.ts +0 -8
- package/packages/@monomind/shared/dist/events/event-store.test.js +0 -293
- package/packages/@monomind/shared/dist/events/example-usage.d.ts +0 -10
- package/packages/@monomind/shared/dist/events/example-usage.js +0 -193
- package/packages/@monomind/shared/dist/events/index.d.ts +0 -21
- package/packages/@monomind/shared/dist/events/index.js +0 -22
- package/packages/@monomind/shared/dist/events/projections.d.ts +0 -177
- package/packages/@monomind/shared/dist/events/projections.js +0 -421
- package/packages/@monomind/shared/dist/events/rvf-event-log.d.ts +0 -82
- package/packages/@monomind/shared/dist/events/rvf-event-log.js +0 -340
- package/packages/@monomind/shared/dist/events/state-reconstructor.d.ts +0 -101
- package/packages/@monomind/shared/dist/events/state-reconstructor.js +0 -263
- package/packages/@monomind/shared/dist/events.d.ts +0 -80
- package/packages/@monomind/shared/dist/events.js +0 -249
- package/packages/@monomind/shared/dist/hooks/example-usage.d.ts +0 -42
- package/packages/@monomind/shared/dist/hooks/example-usage.js +0 -351
- package/packages/@monomind/shared/dist/hooks/executor.d.ts +0 -100
- package/packages/@monomind/shared/dist/hooks/executor.js +0 -264
- package/packages/@monomind/shared/dist/hooks/hooks.test.d.ts +0 -9
- package/packages/@monomind/shared/dist/hooks/hooks.test.js +0 -322
- package/packages/@monomind/shared/dist/hooks/index.d.ts +0 -52
- package/packages/@monomind/shared/dist/hooks/index.js +0 -51
- package/packages/@monomind/shared/dist/hooks/registry.d.ts +0 -133
- package/packages/@monomind/shared/dist/hooks/registry.js +0 -277
- package/packages/@monomind/shared/dist/hooks/safety/bash-safety.d.ts +0 -105
- package/packages/@monomind/shared/dist/hooks/safety/bash-safety.js +0 -481
- package/packages/@monomind/shared/dist/hooks/safety/file-organization.d.ts +0 -144
- package/packages/@monomind/shared/dist/hooks/safety/file-organization.js +0 -328
- package/packages/@monomind/shared/dist/hooks/safety/git-commit.d.ts +0 -158
- package/packages/@monomind/shared/dist/hooks/safety/git-commit.js +0 -450
- package/packages/@monomind/shared/dist/hooks/safety/index.d.ts +0 -17
- package/packages/@monomind/shared/dist/hooks/safety/index.js +0 -17
- package/packages/@monomind/shared/dist/hooks/session-hooks.d.ts +0 -234
- package/packages/@monomind/shared/dist/hooks/session-hooks.js +0 -334
- package/packages/@monomind/shared/dist/hooks/task-hooks.d.ts +0 -163
- package/packages/@monomind/shared/dist/hooks/task-hooks.js +0 -326
- package/packages/@monomind/shared/dist/hooks/types.d.ts +0 -267
- package/packages/@monomind/shared/dist/hooks/types.js +0 -62
- package/packages/@monomind/shared/dist/hooks/verify-exports.test.d.ts +0 -9
- package/packages/@monomind/shared/dist/hooks/verify-exports.test.js +0 -93
- package/packages/@monomind/shared/dist/index.d.ts +0 -46
- package/packages/@monomind/shared/dist/index.js +0 -77
- package/packages/@monomind/shared/dist/mcp/connection-pool.d.ts +0 -98
- package/packages/@monomind/shared/dist/mcp/connection-pool.js +0 -364
- package/packages/@monomind/shared/dist/mcp/index.d.ts +0 -69
- package/packages/@monomind/shared/dist/mcp/index.js +0 -84
- package/packages/@monomind/shared/dist/mcp/server.d.ts +0 -166
- package/packages/@monomind/shared/dist/mcp/server.js +0 -593
- package/packages/@monomind/shared/dist/mcp/session-manager.d.ts +0 -136
- package/packages/@monomind/shared/dist/mcp/session-manager.js +0 -335
- package/packages/@monomind/shared/dist/mcp/tool-registry.d.ts +0 -178
- package/packages/@monomind/shared/dist/mcp/tool-registry.js +0 -439
- package/packages/@monomind/shared/dist/mcp/transport/http.d.ts +0 -104
- package/packages/@monomind/shared/dist/mcp/transport/http.js +0 -476
- package/packages/@monomind/shared/dist/mcp/transport/index.d.ts +0 -102
- package/packages/@monomind/shared/dist/mcp/transport/index.js +0 -238
- package/packages/@monomind/shared/dist/mcp/transport/stdio.d.ts +0 -104
- package/packages/@monomind/shared/dist/mcp/transport/stdio.js +0 -263
- package/packages/@monomind/shared/dist/mcp/transport/websocket.d.ts +0 -133
- package/packages/@monomind/shared/dist/mcp/transport/websocket.js +0 -396
- package/packages/@monomind/shared/dist/mcp/types.d.ts +0 -438
- package/packages/@monomind/shared/dist/mcp/types.js +0 -54
- package/packages/@monomind/shared/dist/plugin-interface.d.ts +0 -544
- package/packages/@monomind/shared/dist/plugin-interface.js +0 -23
- package/packages/@monomind/shared/dist/plugin-loader.d.ts +0 -139
- package/packages/@monomind/shared/dist/plugin-loader.js +0 -434
- package/packages/@monomind/shared/dist/plugin-registry.d.ts +0 -183
- package/packages/@monomind/shared/dist/plugin-registry.js +0 -457
- package/packages/@monomind/shared/dist/plugins/index.d.ts +0 -10
- package/packages/@monomind/shared/dist/plugins/index.js +0 -10
- package/packages/@monomind/shared/dist/plugins/official/hive-mind-plugin.d.ts +0 -106
- package/packages/@monomind/shared/dist/plugins/official/hive-mind-plugin.js +0 -241
- package/packages/@monomind/shared/dist/plugins/official/index.d.ts +0 -10
- package/packages/@monomind/shared/dist/plugins/official/index.js +0 -10
- package/packages/@monomind/shared/dist/plugins/official/maestro-plugin.d.ts +0 -121
- package/packages/@monomind/shared/dist/plugins/official/maestro-plugin.js +0 -355
- package/packages/@monomind/shared/dist/plugins/types.d.ts +0 -93
- package/packages/@monomind/shared/dist/plugins/types.js +0 -9
- package/packages/@monomind/shared/dist/reducers.d.ts +0 -33
- package/packages/@monomind/shared/dist/reducers.js +0 -89
- package/packages/@monomind/shared/dist/resilience/bulkhead.d.ts +0 -105
- package/packages/@monomind/shared/dist/resilience/bulkhead.js +0 -206
- package/packages/@monomind/shared/dist/resilience/circuit-breaker.d.ts +0 -132
- package/packages/@monomind/shared/dist/resilience/circuit-breaker.js +0 -233
- package/packages/@monomind/shared/dist/resilience/index.d.ts +0 -19
- package/packages/@monomind/shared/dist/resilience/index.js +0 -19
- package/packages/@monomind/shared/dist/resilience/rate-limiter.d.ts +0 -168
- package/packages/@monomind/shared/dist/resilience/rate-limiter.js +0 -314
- package/packages/@monomind/shared/dist/resilience/retry.d.ts +0 -91
- package/packages/@monomind/shared/dist/resilience/retry.js +0 -159
- package/packages/@monomind/shared/dist/retry-policy.d.ts +0 -14
- package/packages/@monomind/shared/dist/retry-policy.js +0 -23
- package/packages/@monomind/shared/dist/retry-runner.d.ts +0 -21
- package/packages/@monomind/shared/dist/retry-runner.js +0 -57
- package/packages/@monomind/shared/dist/schema-validator.d.ts +0 -46
- package/packages/@monomind/shared/dist/schema-validator.js +0 -133
- package/packages/@monomind/shared/dist/scratchpad.d.ts +0 -23
- package/packages/@monomind/shared/dist/scratchpad.js +0 -32
- package/packages/@monomind/shared/dist/security/index.d.ts +0 -10
- package/packages/@monomind/shared/dist/security/index.js +0 -12
- package/packages/@monomind/shared/dist/security/input-validation.d.ts +0 -73
- package/packages/@monomind/shared/dist/security/input-validation.js +0 -201
- package/packages/@monomind/shared/dist/security/secure-random.d.ts +0 -92
- package/packages/@monomind/shared/dist/security/secure-random.js +0 -142
- package/packages/@monomind/shared/dist/services/index.d.ts +0 -7
- package/packages/@monomind/shared/dist/services/index.js +0 -7
- package/packages/@monomind/shared/dist/services/progress.service.d.ts +0 -124
- package/packages/@monomind/shared/dist/services/progress.service.js +0 -402
- package/packages/@monomind/shared/dist/state-manager.d.ts +0 -34
- package/packages/@monomind/shared/dist/state-manager.js +0 -73
- package/packages/@monomind/shared/dist/state-validator.d.ts +0 -20
- package/packages/@monomind/shared/dist/state-validator.js +0 -49
- package/packages/@monomind/shared/dist/swarm-state.d.ts +0 -52
- package/packages/@monomind/shared/dist/swarm-state.js +0 -18
- package/packages/@monomind/shared/dist/testing/fixture-builder.d.ts +0 -14
- package/packages/@monomind/shared/dist/testing/fixture-builder.js +0 -32
- package/packages/@monomind/shared/dist/testing/index.d.ts +0 -2
- package/packages/@monomind/shared/dist/testing/index.js +0 -2
- package/packages/@monomind/shared/dist/testing/test-model.d.ts +0 -29
- package/packages/@monomind/shared/dist/testing/test-model.js +0 -53
- package/packages/@monomind/shared/dist/types/agent-registry.d.ts +0 -62
- package/packages/@monomind/shared/dist/types/agent-registry.js +0 -8
- package/packages/@monomind/shared/dist/types/agent-version.d.ts +0 -49
- package/packages/@monomind/shared/dist/types/agent-version.js +0 -7
- package/packages/@monomind/shared/dist/types/agent.types.d.ts +0 -137
- package/packages/@monomind/shared/dist/types/agent.types.js +0 -6
- package/packages/@monomind/shared/dist/types/benchmark.d.ts +0 -39
- package/packages/@monomind/shared/dist/types/benchmark.js +0 -6
- package/packages/@monomind/shared/dist/types/communication-flow.d.ts +0 -25
- package/packages/@monomind/shared/dist/types/communication-flow.js +0 -7
- package/packages/@monomind/shared/dist/types/consensus-audit.d.ts +0 -40
- package/packages/@monomind/shared/dist/types/consensus-audit.js +0 -7
- package/packages/@monomind/shared/dist/types/dlq.d.ts +0 -40
- package/packages/@monomind/shared/dist/types/dlq.js +0 -7
- package/packages/@monomind/shared/dist/types/eval.d.ts +0 -59
- package/packages/@monomind/shared/dist/types/eval.js +0 -6
- package/packages/@monomind/shared/dist/types/index.d.ts +0 -19
- package/packages/@monomind/shared/dist/types/index.js +0 -33
- package/packages/@monomind/shared/dist/types/mcp.types.d.ts +0 -266
- package/packages/@monomind/shared/dist/types/mcp.types.js +0 -7
- package/packages/@monomind/shared/dist/types/memory.types.d.ts +0 -236
- package/packages/@monomind/shared/dist/types/memory.types.js +0 -7
- package/packages/@monomind/shared/dist/types/retry.d.ts +0 -72
- package/packages/@monomind/shared/dist/types/retry.js +0 -40
- package/packages/@monomind/shared/dist/types/specialization.d.ts +0 -27
- package/packages/@monomind/shared/dist/types/specialization.js +0 -8
- package/packages/@monomind/shared/dist/types/swarm.types.d.ts +0 -186
- package/packages/@monomind/shared/dist/types/swarm.types.js +0 -65
- package/packages/@monomind/shared/dist/types/task.types.d.ts +0 -178
- package/packages/@monomind/shared/dist/types/task.types.js +0 -32
- package/packages/@monomind/shared/dist/types/termination.d.ts +0 -29
- package/packages/@monomind/shared/dist/types/termination.js +0 -14
- package/packages/@monomind/shared/dist/types/tool-version.d.ts +0 -41
- package/packages/@monomind/shared/dist/types/tool-version.js +0 -8
- package/packages/@monomind/shared/dist/types/trigger.d.ts +0 -40
- package/packages/@monomind/shared/dist/types/trigger.js +0 -8
- package/packages/@monomind/shared/dist/types.d.ts +0 -197
- package/packages/@monomind/shared/dist/types.js +0 -21
- package/packages/@monomind/shared/dist/utils/secure-logger.d.ts +0 -69
- 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 -
|
|
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 -
|
|
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 -
|
|
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 -
|
|
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" \
|