agent-enderun 1.1.2 → 1.1.4
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/{.enderun/ENDERUN.md → ENDERUN.md} +25 -25
- package/README.md +10 -6
- package/bin/compile.js +13 -14
- package/bin/enderun-dashboard.js +866 -0
- package/bin/generate-cursor-rules.js +78 -0
- package/bin/test-init-run.js +37 -26
- package/bin/validate-agent-army.js +65 -67
- package/bin/watch-memory.js +54 -0
- package/dist/framework-mcp/src/index.js +1 -1
- package/dist/framework-mcp/src/tools/control_plane/locking.d.ts +15 -0
- package/dist/framework-mcp/src/tools/control_plane/locking.js +65 -0
- package/dist/framework-mcp/src/tools/control_plane/locking.js.map +1 -0
- package/dist/framework-mcp/src/tools/control_plane/registry.d.ts +12 -0
- package/dist/framework-mcp/src/tools/control_plane/registry.js +35 -0
- package/dist/framework-mcp/src/tools/control_plane/registry.js.map +1 -0
- package/dist/framework-mcp/src/tools/definitions.js +46 -7
- package/dist/framework-mcp/src/tools/definitions.js.map +1 -1
- package/dist/framework-mcp/src/tools/file_system/write_file.js +16 -2
- package/dist/framework-mcp/src/tools/file_system/write_file.js.map +1 -1
- package/dist/framework-mcp/src/tools/index.d.ts +1 -1
- package/dist/framework-mcp/src/tools/index.js +5 -0
- package/dist/framework-mcp/src/tools/index.js.map +1 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.d.ts +1 -1
- package/dist/framework-mcp/src/tools/messaging/send_message.js +2 -4
- package/dist/framework-mcp/src/tools/messaging/send_message.js.map +1 -1
- package/dist/framework-mcp/src/utils/metrics.d.ts +10 -0
- package/dist/framework-mcp/src/utils/metrics.js +39 -0
- package/dist/framework-mcp/src/utils/metrics.js.map +1 -0
- package/dist/framework-mcp/src/utils/security.js +7 -3
- package/dist/framework-mcp/src/utils/security.js.map +1 -1
- package/dist/src/cli/adapters/types.d.ts +14 -0
- package/dist/src/cli/adapters/types.js +2 -0
- package/dist/src/cli/adapters/types.js.map +1 -0
- package/dist/src/cli/adapters.d.ts +4 -22
- package/dist/src/cli/adapters.js +123 -141
- package/dist/src/cli/adapters.js.map +1 -1
- package/dist/src/cli/commands/check.d.ts +0 -5
- package/dist/src/cli/commands/check.js +64 -76
- package/dist/src/cli/commands/check.js.map +1 -1
- package/dist/src/cli/commands/init.d.ts +1 -1
- package/dist/src/cli/commands/init.js +154 -319
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/log.d.ts +1 -0
- package/dist/src/cli/commands/log.js.map +1 -1
- package/dist/src/cli/commands/memory.js +2 -69
- package/dist/src/cli/commands/memory.js.map +1 -1
- package/dist/src/cli/commands/orchestrate.d.ts +19 -9
- package/dist/src/cli/commands/orchestrate.js +56 -77
- package/dist/src/cli/commands/orchestrate.js.map +1 -1
- package/dist/src/cli/index.js +112 -30
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/utils/app.d.ts +1 -2
- package/dist/src/cli/utils/app.js +2 -2
- package/dist/src/cli/utils/app.js.map +1 -1
- package/dist/src/cli/utils/config-schema.d.ts +139 -0
- package/dist/src/cli/utils/config-schema.js +43 -0
- package/dist/src/cli/utils/config-schema.js.map +1 -0
- package/dist/src/cli/utils/fs.d.ts +2 -4
- package/dist/src/cli/utils/fs.js +9 -26
- package/dist/src/cli/utils/fs.js.map +1 -1
- package/dist/src/cli/utils/memory.d.ts +4 -3
- package/dist/src/cli/utils/memory.js +135 -116
- package/dist/src/cli/utils/memory.js.map +1 -1
- package/dist/src/cli/utils/pkg.js +4 -4
- package/dist/src/cli/utils/pkg.js.map +1 -1
- package/dist/src/cli/utils/ui.d.ts +30 -0
- package/dist/src/cli/utils/ui.js +56 -0
- package/dist/src/cli/utils/ui.js.map +1 -0
- package/dist/src/modules/adapters/antigravity-cli.d.ts +3 -0
- package/dist/src/modules/adapters/antigravity-cli.js +21 -0
- package/dist/src/modules/adapters/antigravity-cli.js.map +1 -0
- package/dist/src/modules/adapters/claude.d.ts +3 -0
- package/dist/src/modules/adapters/claude.js +36 -0
- package/dist/src/modules/adapters/claude.js.map +1 -0
- package/dist/src/modules/adapters/codex.d.ts +3 -0
- package/dist/src/modules/adapters/codex.js +20 -0
- package/dist/src/modules/adapters/codex.js.map +1 -0
- package/dist/src/modules/adapters/cursor.d.ts +3 -0
- package/dist/src/modules/adapters/cursor.js +20 -0
- package/dist/src/modules/adapters/cursor.js.map +1 -0
- package/dist/src/modules/adapters/gemini.d.ts +3 -0
- package/dist/src/modules/adapters/gemini.js +23 -0
- package/dist/src/modules/adapters/gemini.js.map +1 -0
- package/dist/src/modules/adapters/grok.d.ts +3 -0
- package/dist/src/modules/adapters/grok.js +18 -0
- package/dist/src/modules/adapters/grok.js.map +1 -0
- package/dist/src/modules/adapters/shared.d.ts +1 -0
- package/dist/src/modules/adapters/shared.js +79 -0
- package/dist/src/modules/adapters/shared.js.map +1 -0
- package/dist/src/modules/adapters/types.d.ts +14 -0
- package/dist/src/modules/adapters/types.js +2 -0
- package/dist/src/modules/adapters/types.js.map +1 -0
- package/dist/src/modules/agents/definitions.d.ts +13 -0
- package/dist/src/modules/agents/definitions.js +169 -0
- package/dist/src/modules/agents/definitions.js.map +1 -0
- package/dist/src/modules/skills/definitions.d.ts +31 -0
- package/dist/src/modules/skills/definitions.js +32 -0
- package/dist/src/modules/skills/definitions.js.map +1 -0
- package/dist/src/shared/fs.d.ts +3 -0
- package/dist/src/shared/fs.js +24 -0
- package/dist/src/shared/fs.js.map +1 -0
- package/eslint.config.js +1 -0
- package/framework-mcp/dist/index.js +1 -1
- package/framework-mcp/dist/tools/control_plane/locking.js +64 -0
- package/framework-mcp/dist/tools/control_plane/registry.js +34 -0
- package/framework-mcp/dist/tools/definitions.js +49 -8
- package/framework-mcp/dist/tools/file_system/read_file.js +20 -0
- package/framework-mcp/dist/tools/file_system/write_file.js +16 -2
- package/framework-mcp/dist/tools/index.js +5 -0
- package/framework-mcp/dist/tools/messaging/send_message.js +36 -15
- package/framework-mcp/dist/utils/metrics.js +38 -0
- package/framework-mcp/dist/utils/security.js +7 -3
- package/framework-mcp/package.json +1 -1
- package/framework-mcp/src/index.ts +1 -1
- package/framework-mcp/src/tools/control_plane/locking.ts +77 -0
- package/framework-mcp/src/tools/control_plane/registry.ts +44 -0
- package/framework-mcp/src/tools/definitions.ts +46 -7
- package/framework-mcp/src/tools/file_system/write_file.ts +19 -2
- package/framework-mcp/src/tools/index.ts +6 -1
- package/framework-mcp/src/tools/messaging/send_message.ts +2 -3
- package/framework-mcp/src/utils/metrics.ts +53 -0
- package/framework-mcp/src/utils/security.ts +8 -3
- package/framework-mcp/tests/tools/file_system/file_system_tools.test.ts +164 -0
- package/framework-mcp/tsconfig.json +4 -2
- package/package.json +12 -11
- package/src/cli/adapters/types.ts +16 -0
- package/src/cli/adapters.ts +130 -156
- package/src/cli/commands/check.ts +61 -77
- package/src/cli/commands/init.ts +163 -312
- package/src/cli/commands/log.ts +1 -1
- package/src/cli/commands/memory.ts +3 -80
- package/src/cli/commands/orchestrate.ts +76 -90
- package/src/cli/index.ts +121 -29
- package/src/cli/utils/app.ts +3 -3
- package/src/cli/utils/config-schema.ts +48 -0
- package/src/cli/utils/fs.ts +10 -27
- package/src/cli/utils/memory.ts +143 -112
- package/src/cli/utils/pkg.ts +4 -4
- package/src/cli/utils/ui.ts +63 -0
- package/src/modules/adapters/antigravity-cli.ts +25 -0
- package/src/modules/adapters/claude.ts +36 -0
- package/src/modules/adapters/codex.ts +22 -0
- package/src/modules/adapters/cursor.ts +22 -0
- package/src/modules/adapters/gemini.ts +27 -0
- package/src/modules/adapters/grok.ts +20 -0
- package/src/modules/adapters/shared.ts +90 -0
- package/src/modules/adapters/types.ts +16 -0
- package/src/modules/agents/definitions.ts +182 -0
- package/src/modules/skills/definitions.ts +32 -0
- package/src/shared/fs.ts +25 -0
- package/.enderun/BRAIN_DASHBOARD.md +0 -46
- package/.enderun/STATUS.md +0 -61
- package/.enderun/agents/agent_army_schema.json +0 -101
- package/.enderun/agents/analyst.json +0 -32
- package/.enderun/agents/backend.json +0 -32
- package/.enderun/agents/database.json +0 -32
- package/.enderun/agents/devops.json +0 -32
- package/.enderun/agents/explorer.json +0 -32
- package/.enderun/agents/frontend.json +0 -32
- package/.enderun/agents/git.json +0 -32
- package/.enderun/agents/manager.json +0 -32
- package/.enderun/agents/mobile.json +0 -32
- package/.enderun/agents/native.json +0 -32
- package/.enderun/agents/quality.json +0 -32
- package/.enderun/agents/schema/agent-lifecycle-schema.json +0 -41
- package/.enderun/agents/security.json +0 -32
- package/.enderun/benchmarks/.gitkeep +0 -0
- package/.enderun/cli-commands.json +0 -76
- package/.enderun/config.json +0 -13
- package/.enderun/knowledge/ARCHITECTURE.md +0 -1
- package/.enderun/knowledge/SECURITY.md +0 -1
- package/.enderun/knowledge/SHIM_TEMPLATE.md +0 -36
- package/.enderun/knowledge/analyst_reference_guide.md +0 -31
- package/.enderun/knowledge/async_error_handling.md +0 -27
- package/.enderun/knowledge/backend_reference_guide.md +0 -165
- package/.enderun/knowledge/blueprint_driven_construction.md +0 -22
- package/.enderun/knowledge/context_boundary_rules.md +0 -57
- package/.enderun/knowledge/corporate-governance/analyst-contract-integrity-guide.md +0 -92
- package/.enderun/knowledge/corporate-governance/audit-logging-standard.md +0 -59
- package/.enderun/knowledge/corporate-governance/backend-high-risk-endpoint-guide.md +0 -125
- package/.enderun/knowledge/corporate-governance/branded-types-law.md +0 -77
- package/.enderun/knowledge/corporate-governance/contract-drift-detection-simulation.md +0 -92
- package/.enderun/knowledge/corporate-governance/corporate-governance-playbook.md +0 -89
- package/.enderun/knowledge/corporate-governance/corporate-project-kickoff-checklist.md +0 -56
- package/.enderun/knowledge/corporate-governance/corporate-project-kickoff-simulation.md +0 -144
- package/.enderun/knowledge/corporate-governance/corporate-project-scaffolding-sop.md +0 -103
- package/.enderun/knowledge/corporate-governance/domain-error-handling-standard.md +0 -75
- package/.enderun/knowledge/corporate-governance/frontend-high-risk-modal-guide.md +0 -211
- package/.enderun/knowledge/corporate-governance/governance-baseline-briefing-template.md +0 -54
- package/.enderun/knowledge/corporate-governance/high-risk-action-approval-flow-simulation.md +0 -167
- package/.enderun/knowledge/corporate-governance/high-risk-action-approval-flow.md +0 -29
- package/.enderun/knowledge/corporate-governance/high-risk-actions-managerapproval.md +0 -76
- package/.enderun/knowledge/corporate-governance/high-risk-security-modal-hermes-flow.md +0 -49
- package/.enderun/knowledge/corporate-governance/manager-first-30-days-guide.md +0 -112
- package/.enderun/knowledge/corporate-governance/manager-first-three-briefings.md +0 -79
- package/.enderun/knowledge/database_reference_guide.md +0 -38
- package/.enderun/knowledge/devops_reference_guide.md +0 -43
- package/.enderun/knowledge/documentation_ownership.md +0 -53
- package/.enderun/knowledge/eslint-standards.md +0 -63
- package/.enderun/knowledge/evaluation_engine.md +0 -26
- package/.enderun/knowledge/explorer_reference_guide.md +0 -34
- package/.enderun/knowledge/framework_vs_user_project_boundary.md +0 -52
- package/.enderun/knowledge/frontend_professionalization_guidelines.md +0 -108
- package/.enderun/knowledge/frontend_reference_guide.md +0 -64
- package/.enderun/knowledge/git_reference_guide.md +0 -51
- package/.enderun/knowledge/hermes_live_test_guidelines.md +0 -90
- package/.enderun/knowledge/hermes_protocol.md +0 -59
- package/.enderun/knowledge/legacy_onboarding.md +0 -18
- package/.enderun/knowledge/lessons-learned.md +0 -14
- package/.enderun/knowledge/manager_authority_audit_enforcement.md +0 -104
- package/.enderun/knowledge/manager_reference_guide.md +0 -55
- package/.enderun/knowledge/mobile_reference_guide.md +0 -35
- package/.enderun/knowledge/native_reference_guide.md +0 -34
- package/.enderun/knowledge/project_scaffold_guidelines.md +0 -110
- package/.enderun/knowledge/quality_reference_guide.md +0 -42
- package/.enderun/knowledge/reference_application_guidelines.md +0 -101
- package/.enderun/knowledge/responsive_design_standards.md +0 -27
- package/.enderun/knowledge/router_logic.md +0 -29
- package/.enderun/knowledge/security_reference_guide.md +0 -35
- package/.enderun/knowledge/token_economy_and_memory.md +0 -129
- package/.enderun/knowledge/zero_ui_library_policy.md +0 -13
- package/.enderun/logs/manager.json +0 -52
- package/.enderun/mcp_config.json +0 -11
- package/.enderun/memory/BUSINESS_CONTEXT.md +0 -17
- package/.enderun/memory/DECISIONS.md +0 -24
- package/.enderun/memory/LESSONS_LEARNED.md +0 -12
- package/.enderun/memory/PATTERNS.md +0 -17
- package/.enderun/memory/PROJECT_MEMORY.md +0 -69
- package/.enderun/memory-graph/agent-contexts/analyst.json +0 -1
- package/.enderun/memory-graph/agent-contexts/backend.json +0 -1
- package/.enderun/memory-graph/agent-contexts/devops.json +0 -1
- package/.enderun/memory-graph/agent-contexts/explorer.json +0 -1
- package/.enderun/memory-graph/agent-contexts/frontend.json +0 -1
- package/.enderun/memory-graph/agent-contexts/git.json +0 -1
- package/.enderun/memory-graph/agent-contexts/manager.json +0 -1
- package/.enderun/memory-graph/agent-contexts/mobile.json +0 -1
- package/.enderun/memory-graph/agent-contexts/native.json +0 -1
- package/.enderun/memory-graph/agent-contexts/quality.json +0 -1
- package/.enderun/memory-graph/agent-contexts/security.json +0 -1
- package/.enderun/memory-graph/graph.json +0 -133
- package/.enderun/memory-graph/shared-facts.json +0 -46
- package/.enderun/monitoring/.gitkeep +0 -0
- package/.enderun/observability/AUDIT_LOG.md +0 -9
- package/.enderun/observability/METRICS.md +0 -10
- package/.enderun/observability/README.md +0 -19
- package/.enderun/observability/TRACE_LOG.md +0 -10
- package/.enderun/queue/README.md +0 -36
- package/.enderun/registry/agents.yaml +0 -69
- package/.enderun/skills/agent_handshake.md +0 -37
- package/.enderun/skills/multi_agent_coordination.md +0 -64
- package/.enderun/skills/subagent_lifecycle.md +0 -48
- package/CLAUDE.md +0 -21
- package/GEMINI.md +0 -24
- package/GROK.md +0 -20
- package/agent.md +0 -25
- package/dist/.keep +0 -1
- package/dist/tests/adapter.test.d.ts +0 -1
- package/dist/tests/adapter.test.js +0 -82
- package/dist/tests/adapter.test.js.map +0 -1
- package/dist/tests/gemini.test.d.ts +0 -1
- package/dist/tests/gemini.test.js +0 -39
- package/dist/tests/gemini.test.js.map +0 -1
- package/dist/tests/initial.test.d.ts +0 -1
- package/dist/tests/initial.test.js +0 -7
- package/dist/tests/initial.test.js.map +0 -1
- package/docs/project_analysis_report.md +0 -69
- package/framework-mcp/dist/src/index.js +0 -70
- package/framework-mcp/dist/src/tools/definitions.js +0 -112
- package/framework-mcp/dist/src/tools/file_system/patch_file.js +0 -18
- package/framework-mcp/dist/src/tools/file_system/read_file.js +0 -27
- package/framework-mcp/dist/src/tools/file_system/replace_text.js +0 -31
- package/framework-mcp/dist/src/tools/file_system/write_file.js +0 -9
- package/framework-mcp/dist/src/tools/framework/get_status.js +0 -5
- package/framework-mcp/dist/src/tools/framework/orchestrate.js +0 -5
- package/framework-mcp/dist/src/tools/framework/update_contract_hash.js +0 -5
- package/framework-mcp/dist/src/tools/framework/update_memory.js +0 -8
- package/framework-mcp/dist/src/tools/index.js +0 -25
- package/framework-mcp/dist/src/tools/messaging/log_action.js +0 -22
- package/framework-mcp/dist/src/tools/messaging/send_message.js +0 -46
- package/framework-mcp/dist/src/tools/types.js +0 -1
- package/framework-mcp/dist/src/utils/cli.js +0 -20
- package/framework-mcp/dist/src/utils/security.js +0 -53
- package/framework-mcp/dist/tests/tools/file_system/replace_text.test.js +0 -68
- package/framework-mcp/node_modules/@types/node/LICENSE +0 -21
- package/framework-mcp/node_modules/@types/node/README.md +0 -15
- package/framework-mcp/node_modules/@types/node/assert/strict.d.ts +0 -111
- package/framework-mcp/node_modules/@types/node/assert.d.ts +0 -1078
- package/framework-mcp/node_modules/@types/node/async_hooks.d.ts +0 -603
- package/framework-mcp/node_modules/@types/node/buffer.buffer.d.ts +0 -472
- package/framework-mcp/node_modules/@types/node/buffer.d.ts +0 -1934
- package/framework-mcp/node_modules/@types/node/child_process.d.ts +0 -1476
- package/framework-mcp/node_modules/@types/node/cluster.d.ts +0 -578
- package/framework-mcp/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
- package/framework-mcp/node_modules/@types/node/compatibility/index.d.ts +0 -9
- package/framework-mcp/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
- package/framework-mcp/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
- package/framework-mcp/node_modules/@types/node/console.d.ts +0 -452
- package/framework-mcp/node_modules/@types/node/constants.d.ts +0 -21
- package/framework-mcp/node_modules/@types/node/crypto.d.ts +0 -4545
- package/framework-mcp/node_modules/@types/node/dgram.d.ts +0 -600
- package/framework-mcp/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
- package/framework-mcp/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/framework-mcp/node_modules/@types/node/dns.d.ts +0 -923
- package/framework-mcp/node_modules/@types/node/domain.d.ts +0 -170
- package/framework-mcp/node_modules/@types/node/events.d.ts +0 -976
- package/framework-mcp/node_modules/@types/node/fs/promises.d.ts +0 -1295
- package/framework-mcp/node_modules/@types/node/fs.d.ts +0 -4461
- package/framework-mcp/node_modules/@types/node/globals.d.ts +0 -172
- package/framework-mcp/node_modules/@types/node/globals.typedarray.d.ts +0 -38
- package/framework-mcp/node_modules/@types/node/http.d.ts +0 -2089
- package/framework-mcp/node_modules/@types/node/http2.d.ts +0 -2721
- package/framework-mcp/node_modules/@types/node/https.d.ts +0 -579
- package/framework-mcp/node_modules/@types/node/index.d.ts +0 -97
- package/framework-mcp/node_modules/@types/node/inspector.d.ts +0 -253
- package/framework-mcp/node_modules/@types/node/inspector.generated.d.ts +0 -4052
- package/framework-mcp/node_modules/@types/node/module.d.ts +0 -891
- package/framework-mcp/node_modules/@types/node/net.d.ts +0 -1076
- package/framework-mcp/node_modules/@types/node/os.d.ts +0 -506
- package/framework-mcp/node_modules/@types/node/package.json +0 -145
- package/framework-mcp/node_modules/@types/node/path.d.ts +0 -200
- package/framework-mcp/node_modules/@types/node/perf_hooks.d.ts +0 -968
- package/framework-mcp/node_modules/@types/node/process.d.ts +0 -2084
- package/framework-mcp/node_modules/@types/node/punycode.d.ts +0 -117
- package/framework-mcp/node_modules/@types/node/querystring.d.ts +0 -152
- package/framework-mcp/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/framework-mcp/node_modules/@types/node/readline.d.ts +0 -594
- package/framework-mcp/node_modules/@types/node/repl.d.ts +0 -428
- package/framework-mcp/node_modules/@types/node/sea.d.ts +0 -153
- package/framework-mcp/node_modules/@types/node/sqlite.d.ts +0 -721
- package/framework-mcp/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/framework-mcp/node_modules/@types/node/stream/promises.d.ts +0 -90
- package/framework-mcp/node_modules/@types/node/stream/web.d.ts +0 -622
- package/framework-mcp/node_modules/@types/node/stream.d.ts +0 -1687
- package/framework-mcp/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/framework-mcp/node_modules/@types/node/test.d.ts +0 -2163
- package/framework-mcp/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/framework-mcp/node_modules/@types/node/timers.d.ts +0 -287
- package/framework-mcp/node_modules/@types/node/tls.d.ts +0 -1319
- package/framework-mcp/node_modules/@types/node/trace_events.d.ts +0 -197
- package/framework-mcp/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
- package/framework-mcp/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
- package/framework-mcp/node_modules/@types/node/ts5.6/index.d.ts +0 -97
- package/framework-mcp/node_modules/@types/node/tty.d.ts +0 -208
- package/framework-mcp/node_modules/@types/node/url.d.ts +0 -984
- package/framework-mcp/node_modules/@types/node/util.d.ts +0 -2606
- package/framework-mcp/node_modules/@types/node/v8.d.ts +0 -920
- package/framework-mcp/node_modules/@types/node/vm.d.ts +0 -1000
- package/framework-mcp/node_modules/@types/node/wasi.d.ts +0 -181
- package/framework-mcp/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
- package/framework-mcp/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/framework-mcp/node_modules/@types/node/web-globals/events.d.ts +0 -97
- package/framework-mcp/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
- package/framework-mcp/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
- package/framework-mcp/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/framework-mcp/node_modules/@types/node/worker_threads.d.ts +0 -784
- package/framework-mcp/node_modules/@types/node/zlib.d.ts +0 -747
- package/framework-mcp/node_modules/typescript/LICENSE.txt +0 -55
- package/framework-mcp/node_modules/typescript/README.md +0 -50
- package/framework-mcp/node_modules/typescript/SECURITY.md +0 -41
- package/framework-mcp/node_modules/typescript/ThirdPartyNoticeText.txt +0 -193
- package/framework-mcp/node_modules/typescript/bin/tsc +0 -2
- package/framework-mcp/node_modules/typescript/bin/tsserver +0 -2
- package/framework-mcp/node_modules/typescript/lib/_tsc.js +0 -133818
- package/framework-mcp/node_modules/typescript/lib/_tsserver.js +0 -659
- package/framework-mcp/node_modules/typescript/lib/_typingsInstaller.js +0 -222
- package/framework-mcp/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/lib.d.ts +0 -22
- package/framework-mcp/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
- package/framework-mcp/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
- package/framework-mcp/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
- package/framework-mcp/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
- package/framework-mcp/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
- package/framework-mcp/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
- package/framework-mcp/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
- package/framework-mcp/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
- package/framework-mcp/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
- package/framework-mcp/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
- package/framework-mcp/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
- package/framework-mcp/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
- package/framework-mcp/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
- package/framework-mcp/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
- package/framework-mcp/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
- package/framework-mcp/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
- package/framework-mcp/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
- package/framework-mcp/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
- package/framework-mcp/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
- package/framework-mcp/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
- package/framework-mcp/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
- package/framework-mcp/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
- package/framework-mcp/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
- package/framework-mcp/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
- package/framework-mcp/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
- package/framework-mcp/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
- package/framework-mcp/node_modules/typescript/lib/lib.es6.d.ts +0 -23
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
- package/framework-mcp/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
- package/framework-mcp/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
- package/framework-mcp/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
- package/framework-mcp/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
- package/framework-mcp/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
- package/framework-mcp/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
- package/framework-mcp/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/tsc.js +0 -8
- package/framework-mcp/node_modules/typescript/lib/tsserver.js +0 -8
- package/framework-mcp/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
- package/framework-mcp/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/framework-mcp/node_modules/typescript/lib/typesMap.json +0 -497
- package/framework-mcp/node_modules/typescript/lib/typescript.d.ts +0 -11437
- package/framework-mcp/node_modules/typescript/lib/typescript.js +0 -200276
- package/framework-mcp/node_modules/typescript/lib/typingsInstaller.js +0 -8
- package/framework-mcp/node_modules/typescript/lib/watchGuard.js +0 -53
- package/framework-mcp/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
- package/framework-mcp/node_modules/typescript/package.json +0 -120
- package/framework-mcp/node_modules/undici-types/LICENSE +0 -21
- package/framework-mcp/node_modules/undici-types/README.md +0 -6
- package/framework-mcp/node_modules/undici-types/agent.d.ts +0 -31
- package/framework-mcp/node_modules/undici-types/api.d.ts +0 -43
- package/framework-mcp/node_modules/undici-types/balanced-pool.d.ts +0 -29
- package/framework-mcp/node_modules/undici-types/cache.d.ts +0 -36
- package/framework-mcp/node_modules/undici-types/client.d.ts +0 -108
- package/framework-mcp/node_modules/undici-types/connector.d.ts +0 -34
- package/framework-mcp/node_modules/undici-types/content-type.d.ts +0 -21
- package/framework-mcp/node_modules/undici-types/cookies.d.ts +0 -28
- package/framework-mcp/node_modules/undici-types/diagnostics-channel.d.ts +0 -66
- package/framework-mcp/node_modules/undici-types/dispatcher.d.ts +0 -256
- package/framework-mcp/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -21
- package/framework-mcp/node_modules/undici-types/errors.d.ts +0 -149
- package/framework-mcp/node_modules/undici-types/eventsource.d.ts +0 -61
- package/framework-mcp/node_modules/undici-types/fetch.d.ts +0 -209
- package/framework-mcp/node_modules/undici-types/file.d.ts +0 -39
- package/framework-mcp/node_modules/undici-types/filereader.d.ts +0 -54
- package/framework-mcp/node_modules/undici-types/formdata.d.ts +0 -108
- package/framework-mcp/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/framework-mcp/node_modules/undici-types/global-origin.d.ts +0 -7
- package/framework-mcp/node_modules/undici-types/handlers.d.ts +0 -15
- package/framework-mcp/node_modules/undici-types/header.d.ts +0 -4
- package/framework-mcp/node_modules/undici-types/index.d.ts +0 -71
- package/framework-mcp/node_modules/undici-types/interceptors.d.ts +0 -17
- package/framework-mcp/node_modules/undici-types/mock-agent.d.ts +0 -50
- package/framework-mcp/node_modules/undici-types/mock-client.d.ts +0 -25
- package/framework-mcp/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/framework-mcp/node_modules/undici-types/mock-interceptor.d.ts +0 -93
- package/framework-mcp/node_modules/undici-types/mock-pool.d.ts +0 -25
- package/framework-mcp/node_modules/undici-types/package.json +0 -55
- package/framework-mcp/node_modules/undici-types/patch.d.ts +0 -33
- package/framework-mcp/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/framework-mcp/node_modules/undici-types/pool.d.ts +0 -39
- package/framework-mcp/node_modules/undici-types/proxy-agent.d.ts +0 -28
- package/framework-mcp/node_modules/undici-types/readable.d.ts +0 -65
- package/framework-mcp/node_modules/undici-types/retry-agent.d.ts +0 -8
- package/framework-mcp/node_modules/undici-types/retry-handler.d.ts +0 -116
- package/framework-mcp/node_modules/undici-types/util.d.ts +0 -18
- package/framework-mcp/node_modules/undici-types/webidl.d.ts +0 -228
- package/framework-mcp/node_modules/undici-types/websocket.d.ts +0 -150
- package/framework-mcp/tests/tools/file_system/replace_text.test.js +0 -68
- package/framework-mcp/tests/tools/file_system/replace_text.test.ts +0 -77
- package/mcp.json +0 -11
- package/panda.config.ts +0 -100
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
+
import chalk from "chalk";
|
|
3
4
|
import { getFrameworkDir } from "../utils/memory.js";
|
|
5
|
+
import { UI } from "../utils/ui.js";
|
|
4
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Hermes Protocol Message for Multi-Agent Collaboration.
|
|
9
|
+
*/
|
|
5
10
|
interface HermesMessage {
|
|
6
11
|
timestamp: string;
|
|
7
12
|
from: string;
|
|
8
13
|
to: string;
|
|
9
|
-
category:
|
|
14
|
+
category: "ACTION" | "DELEGATION" | "SUBTASK" | "REPLY" | "ALERT";
|
|
10
15
|
content: string;
|
|
11
16
|
traceId: string;
|
|
12
|
-
|
|
17
|
+
parentId?: string; // Links sub-tasks to parent tasks
|
|
18
|
+
status: "PENDING" | "PROCESSED" | "WAITING";
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
export async function orchestrateCommand() {
|
|
@@ -17,166 +23,146 @@ export async function orchestrateCommand() {
|
|
|
17
23
|
const messagesDir = path.join(process.cwd(), frameworkDir, "messages");
|
|
18
24
|
|
|
19
25
|
if (!fs.existsSync(messagesDir)) {
|
|
20
|
-
|
|
26
|
+
UI.success("Henüz işlenecek bir mesaj yok.");
|
|
21
27
|
return;
|
|
22
28
|
}
|
|
23
29
|
|
|
24
30
|
const messageFiles = fs.readdirSync(messagesDir).filter((f) => f.endsWith(".json"));
|
|
25
31
|
const pendingMessages: HermesMessage[] = [];
|
|
32
|
+
const fileMessagesMap: Record<string, HermesMessage[]> = {};
|
|
26
33
|
|
|
27
34
|
for (const file of messageFiles) {
|
|
28
35
|
const filePath = path.join(messagesDir, file);
|
|
29
36
|
try {
|
|
30
37
|
const content = fs.readFileSync(filePath, "utf8").trim();
|
|
31
38
|
if (!content) continue;
|
|
32
|
-
// Messages are stored as newline-delimited JSON
|
|
33
39
|
const lines = content.split("\n");
|
|
40
|
+
const allMsgs: HermesMessage[] = [];
|
|
34
41
|
lines.forEach((line) => {
|
|
35
42
|
if (!line.trim()) return;
|
|
36
43
|
const msg = JSON.parse(line) as HermesMessage;
|
|
37
44
|
if (msg.status === "PENDING") {
|
|
38
45
|
pendingMessages.push(msg);
|
|
39
46
|
}
|
|
47
|
+
allMsgs.push(msg);
|
|
40
48
|
});
|
|
49
|
+
fileMessagesMap[file] = allMsgs;
|
|
41
50
|
} catch {
|
|
42
|
-
|
|
51
|
+
UI.error(`${file} mesajı okunurken hata oluştu.`);
|
|
43
52
|
}
|
|
44
53
|
}
|
|
45
54
|
|
|
46
55
|
if (pendingMessages.length === 0) {
|
|
47
|
-
|
|
56
|
+
UI.success("Tüm mesajlar işlenmiş, bekleyen görev yok.");
|
|
48
57
|
return;
|
|
49
58
|
}
|
|
50
59
|
|
|
51
|
-
|
|
60
|
+
UI.intent("Multi-Agent Orkestrasyonu", `${pendingMessages.length} adet bekleyen görev ve işbirliği mesajı bulundu.`);
|
|
52
61
|
|
|
53
62
|
for (const msg of pendingMessages) {
|
|
54
|
-
const { to, content, traceId, category } = msg;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// Determine agent folder based on adapter (detection or default)
|
|
63
|
-
let agentFolder = "agents";
|
|
64
|
-
if (frameworkDir === ".agents") {
|
|
65
|
-
agentFolder = "skills";
|
|
66
|
-
} else if (frameworkDir === ".grok") {
|
|
67
|
-
agentFolder = "plugins";
|
|
68
|
-
}
|
|
63
|
+
const { from, to, content, traceId, category, parentId } = msg;
|
|
64
|
+
|
|
65
|
+
// Visual distinction for Sub-tasks
|
|
66
|
+
const isSubtask = category === "SUBTASK" || !!parentId;
|
|
67
|
+
const agentLabel = isSubtask ? `${to} (Sub-Agent)` : to;
|
|
68
|
+
|
|
69
|
+
UI.agentBox(agentLabel, content, `Trace: ${traceId} | From: ${from} | Category: ${category}`);
|
|
69
70
|
|
|
70
|
-
// Determine target state based on category
|
|
71
71
|
let targetState = "EXECUTING";
|
|
72
|
-
if (category === "DELEGATION") targetState = "BRIEFED";
|
|
73
|
-
if (category === "ALERT" || category === "FAILED") targetState = "BLOCKED";
|
|
72
|
+
if (category === "DELEGATION" || category === "SUBTASK") targetState = "BRIEFED";
|
|
74
73
|
|
|
75
|
-
// 1. Transition the target agent state in STATUS.md
|
|
76
74
|
transitionAgentState(to, targetState, content);
|
|
77
75
|
|
|
78
76
|
if (targetState === "BRIEFED") {
|
|
79
|
-
|
|
80
|
-
// Auto-transition to EXECUTING for CLI flow if no blockers
|
|
77
|
+
UI.success(`${to} bilgilendirildi ve görevi devraldı.`);
|
|
81
78
|
transitionAgentState(to, "EXECUTING", content);
|
|
82
79
|
}
|
|
83
80
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
if (isSubtask) {
|
|
82
|
+
UI.success(`Alt görev bağlantısı kuruldu (Parent: ${parentId || "Unknown"}).`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
UI.success(`İşbirliği başlatıldı: ${from} -> ${to}`);
|
|
86
|
+
console.warn(chalk.gray(` 👉 Talimatlar: ${frameworkDir}/agents/${to.replace("@", "")}.md`));
|
|
87
|
+
|
|
88
|
+
// Mark message as processed
|
|
89
|
+
msg.status = "PROCESSED";
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Write back updated message statuses to files
|
|
93
|
+
for (const file of Object.keys(fileMessagesMap)) {
|
|
94
|
+
const filePath = path.join(messagesDir, file);
|
|
95
|
+
const msgs = fileMessagesMap[file];
|
|
96
|
+
try {
|
|
97
|
+
const updatedContent = msgs.map(m => JSON.stringify(m)).join("\n") + "\n";
|
|
98
|
+
fs.writeFileSync(filePath, updatedContent, "utf8");
|
|
99
|
+
} catch {
|
|
100
|
+
UI.error(`${file} mesaj dosyası güncellenirken hata oluştu.`);
|
|
101
|
+
}
|
|
88
102
|
}
|
|
89
103
|
}
|
|
90
104
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Standard tool for agents to delegate tasks to other agents.
|
|
107
|
+
*/
|
|
108
|
+
export function sendMessage(args: {
|
|
109
|
+
from: string;
|
|
110
|
+
to: string;
|
|
111
|
+
category: "ACTION" | "DELEGATION" | "SUBTASK" | "REPLY" | "ALERT";
|
|
112
|
+
content: string;
|
|
113
|
+
traceId: string;
|
|
114
|
+
parentId?: string;
|
|
97
115
|
}) {
|
|
98
116
|
const frameworkDir = getFrameworkDir();
|
|
99
117
|
const messagesDir = path.join(process.cwd(), frameworkDir, "messages");
|
|
100
118
|
const agentName = args.to.replace("@", "");
|
|
101
119
|
const messagePath = path.join(messagesDir, `${agentName}.json`);
|
|
102
|
-
const lockPath = path.join(messagesDir, ".lock");
|
|
103
|
-
|
|
104
|
-
// Hermes Lock Protocol: Retry 3 times with 500ms delay
|
|
105
|
-
let retries = 3;
|
|
106
|
-
while (retries > 0 && fs.existsSync(lockPath)) {
|
|
107
|
-
const stats = fs.statSync(lockPath);
|
|
108
|
-
// Stale lock check (older than 5 seconds)
|
|
109
|
-
if (Date.now() - stats.mtimeMs > 5000) {
|
|
110
|
-
fs.unlinkSync(lockPath);
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
retries--;
|
|
114
|
-
if (retries > 0) {
|
|
115
|
-
// Synchronous sleep for CLI simplicity
|
|
116
|
-
const g = global as unknown as { Atomics: { wait: (ia: Int32Array, index: number, value: number, timeout: number) => string }; SharedArrayBuffer: { new (size: number): ArrayBufferLike } };
|
|
117
|
-
if (g.Atomics && g.SharedArrayBuffer) {
|
|
118
|
-
g.Atomics.wait(new Int32Array(new g.SharedArrayBuffer(4)), 0, 0, 500);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
120
|
|
|
123
121
|
try {
|
|
124
|
-
fs.mkdirSync(messagesDir, { recursive: true });
|
|
125
|
-
fs.writeFileSync(lockPath, `Locked by ${args.from} at ${new Date().toISOString()}`);
|
|
122
|
+
if (!fs.existsSync(messagesDir)) fs.mkdirSync(messagesDir, { recursive: true });
|
|
126
123
|
|
|
127
|
-
const message = {
|
|
124
|
+
const message: HermesMessage = {
|
|
128
125
|
timestamp: new Date().toISOString(),
|
|
129
|
-
|
|
130
|
-
to: args.to,
|
|
131
|
-
category: args.category,
|
|
132
|
-
traceId: args.traceId,
|
|
133
|
-
content: args.content,
|
|
126
|
+
...args,
|
|
134
127
|
status: "PENDING"
|
|
135
128
|
};
|
|
136
|
-
|
|
129
|
+
|
|
137
130
|
fs.appendFileSync(messagePath, JSON.stringify(message) + "\n");
|
|
131
|
+
|
|
132
|
+
// Log collaboration to audit log
|
|
133
|
+
const auditPath = path.join(process.cwd(), frameworkDir, "observability/audit_log.md");
|
|
134
|
+
if (fs.existsSync(auditPath)) {
|
|
135
|
+
const logEntry = `\n- **[${message.timestamp}]** ${args.from} -> ${args.to} | ${args.category} | Trace: ${args.traceId}`;
|
|
136
|
+
fs.appendFileSync(auditPath, logEntry);
|
|
137
|
+
}
|
|
138
|
+
|
|
138
139
|
return message;
|
|
139
|
-
}
|
|
140
|
-
|
|
140
|
+
} catch {
|
|
141
|
+
UI.error(`Mesaj iletilemedi: ${args.from} -> ${args.to}`);
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
|
|
144
145
|
function transitionAgentState(agent: string, state: string, task: string) {
|
|
145
146
|
const frameworkDir = getFrameworkDir();
|
|
146
147
|
const statusPath = path.join(process.cwd(), frameworkDir, "STATUS.md");
|
|
147
|
-
|
|
148
148
|
if (!fs.existsSync(statusPath)) return;
|
|
149
|
-
|
|
150
149
|
try {
|
|
151
150
|
const content = fs.readFileSync(statusPath, "utf8");
|
|
152
151
|
const lines = content.split("\n");
|
|
153
152
|
const targetName = agent.startsWith("@") ? agent : `@${agent}`;
|
|
154
|
-
|
|
155
|
-
const newLines: string[] = [];
|
|
156
|
-
let found = false;
|
|
157
|
-
|
|
158
|
-
lines.forEach((line) => {
|
|
153
|
+
const newLines = lines.map(line => {
|
|
159
154
|
if (line.includes(`| ${targetName} |`)) {
|
|
160
|
-
found = true;
|
|
161
|
-
// Example: | @backend | IDLE | — | — | 9.2/10 | — |
|
|
162
155
|
const parts = line.split("|");
|
|
163
156
|
if (parts.length >= 7) {
|
|
164
157
|
parts[2] = ` ${state} `;
|
|
165
|
-
parts[3] = ` ${task.slice(0,
|
|
166
|
-
|
|
167
|
-
} else {
|
|
168
|
-
newLines.push(line);
|
|
158
|
+
parts[3] = ` ${task.slice(0, 25)}... `;
|
|
159
|
+
return parts.join("|");
|
|
169
160
|
}
|
|
170
|
-
} else {
|
|
171
|
-
newLines.push(line);
|
|
172
161
|
}
|
|
162
|
+
return line;
|
|
173
163
|
});
|
|
174
|
-
|
|
175
|
-
if (found) {
|
|
176
|
-
fs.writeFileSync(statusPath, newLines.join("\n"));
|
|
177
|
-
console.log(`✅ STATUS.md üzerinde ${agent} durumu başarıyla '${state}' yapıldı.`);
|
|
178
|
-
}
|
|
164
|
+
fs.writeFileSync(statusPath, newLines.join("\n"));
|
|
179
165
|
} catch {
|
|
180
|
-
|
|
166
|
+
UI.error("STATUS.md güncellenemedi.");
|
|
181
167
|
}
|
|
182
168
|
}
|
package/src/cli/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import fs from "fs";
|
|
3
3
|
import { getPackageVersion, getValidatorPath } from "./utils/pkg.js";
|
|
4
|
+
import { getMemoryPath, readActiveTraceId } from "./utils/memory.js";
|
|
4
5
|
import { initCommand } from "./commands/init.js";
|
|
5
6
|
import { checkCommand } from "./commands/check.js";
|
|
6
7
|
import { statusCommand } from "./commands/status.js";
|
|
@@ -19,8 +20,10 @@ async function main() {
|
|
|
19
20
|
|
|
20
21
|
const KNOWN_COMMANDS = [
|
|
21
22
|
"init", "check", "status", "trace:new", "update_project_memory",
|
|
22
|
-
"create-app", "orchestrate", "verify-contract", "update-contract",
|
|
23
|
-
"validate", "validate-army", "check:al", "version", "-v", "--version", "help", "-h", "--help"
|
|
23
|
+
"create-app", "orchestrate", "loop", "verify-contract", "update-contract",
|
|
24
|
+
"validate", "validate-army", "check:al", "version", "-v", "--version", "help", "-h", "--help",
|
|
25
|
+
"git:commit", "git:sync", "check:compliance", "explorer:graph", "explorer:audit",
|
|
26
|
+
"knowledge:update", "knowledge:search", "log:action", "run-script", "security:audit", "check:lint"
|
|
24
27
|
];
|
|
25
28
|
|
|
26
29
|
// Handle @agent delegation syntax
|
|
@@ -29,21 +32,17 @@ async function main() {
|
|
|
29
32
|
const content = args.slice(1).join(" ");
|
|
30
33
|
if (!content) {
|
|
31
34
|
console.error(`❌ Error: Missing task content for ${to}.`);
|
|
32
|
-
console.
|
|
35
|
+
console.warn(`Usage: agent-enderun ${to} "Your task description"`);
|
|
33
36
|
process.exit(64);
|
|
34
37
|
}
|
|
35
38
|
|
|
36
|
-
const { getMemoryPath } = await import("./utils/memory.js");
|
|
37
|
-
const fs = await import("fs");
|
|
38
39
|
const memoryPath = getMemoryPath();
|
|
39
40
|
|
|
40
41
|
let traceId = "T-000";
|
|
41
|
-
if (fs.
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
content.match(/Active Trace ID[:\s|]+([A-Z0-9]+)/i);
|
|
46
|
-
if (match) traceId = match[1].trim();
|
|
42
|
+
if (fs.existsSync(memoryPath)) {
|
|
43
|
+
const memoryContent = fs.readFileSync(memoryPath, "utf8");
|
|
44
|
+
const tid = readActiveTraceId(memoryContent);
|
|
45
|
+
if (tid) traceId = tid.trim();
|
|
47
46
|
}
|
|
48
47
|
|
|
49
48
|
sendMessage({
|
|
@@ -54,16 +53,17 @@ async function main() {
|
|
|
54
53
|
traceId
|
|
55
54
|
});
|
|
56
55
|
|
|
57
|
-
console.
|
|
58
|
-
console.
|
|
56
|
+
console.warn(`✅ Task delegated to ${to} (Trace: ${traceId})`);
|
|
57
|
+
console.warn("👉 Run \"agent-enderun orchestrate\" to process.");
|
|
59
58
|
return;
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
switch (command) {
|
|
63
62
|
case "init": {
|
|
64
63
|
const dryRun = args.includes("--dry-run");
|
|
64
|
+
const isInteractive = args.includes("--interactive");
|
|
65
65
|
const adapter = args.find(a => !a.startsWith("-") && a !== "init");
|
|
66
|
-
await initCommand(adapter, dryRun);
|
|
66
|
+
await initCommand(adapter, dryRun, isInteractive);
|
|
67
67
|
break;
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -99,6 +99,7 @@ async function main() {
|
|
|
99
99
|
break;
|
|
100
100
|
|
|
101
101
|
case "orchestrate":
|
|
102
|
+
case "loop":
|
|
102
103
|
orchestrateCommand();
|
|
103
104
|
break;
|
|
104
105
|
|
|
@@ -123,10 +124,93 @@ async function main() {
|
|
|
123
124
|
break;
|
|
124
125
|
}
|
|
125
126
|
|
|
127
|
+
case "git:commit": {
|
|
128
|
+
const memoryContent = fs.existsSync(getMemoryPath()) ? fs.readFileSync(getMemoryPath(), "utf8") : "";
|
|
129
|
+
const traceId = readActiveTraceId(memoryContent) || "T-000";
|
|
130
|
+
const { gitCommitCommand } = await import("./commands/git.js");
|
|
131
|
+
gitCommitCommand(traceId);
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
case "git:sync": {
|
|
136
|
+
const { gitSyncCommand } = await import("./commands/git.js");
|
|
137
|
+
gitSyncCommand();
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
case "check:compliance": {
|
|
142
|
+
const targetPath = args[1] || "src";
|
|
143
|
+
const { complianceCheckCommand } = await import("./commands/compliance.js");
|
|
144
|
+
complianceCheckCommand(targetPath);
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
case "explorer:graph": {
|
|
149
|
+
const targetPath = args[1] || "src";
|
|
150
|
+
const { explorerGraphCommand } = await import("./commands/explorer.js");
|
|
151
|
+
explorerGraphCommand(targetPath);
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
case "explorer:audit": {
|
|
156
|
+
const targetPath = args[1] || "src";
|
|
157
|
+
const { explorerAuditCommand } = await import("./commands/explorer.js");
|
|
158
|
+
explorerAuditCommand(targetPath);
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
case "knowledge:update": {
|
|
163
|
+
const topic = args[1];
|
|
164
|
+
const content = args[2];
|
|
165
|
+
const { updateKnowledgeBaseCommand } = await import("./commands/knowledge.js");
|
|
166
|
+
updateKnowledgeBaseCommand(topic, content);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
case "knowledge:search": {
|
|
171
|
+
const query = args[1];
|
|
172
|
+
const { searchKnowledgeBaseCommand } = await import("./commands/knowledge.js");
|
|
173
|
+
searchKnowledgeBaseCommand(query);
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
case "log:action": {
|
|
178
|
+
const agent = args[1];
|
|
179
|
+
const action = args[2];
|
|
180
|
+
const status = args[3] || "SUCCESS";
|
|
181
|
+
const summary = args[4] || "";
|
|
182
|
+
const memoryContent = fs.existsSync(getMemoryPath()) ? fs.readFileSync(getMemoryPath(), "utf8") : "";
|
|
183
|
+
const traceId = readActiveTraceId(memoryContent) || "T-000";
|
|
184
|
+
const { logAgentActionCommand } = await import("./commands/log.js");
|
|
185
|
+
logAgentActionCommand({ agent, action, status, summary, traceId });
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
case "run-script": {
|
|
190
|
+
const script = args[1];
|
|
191
|
+
const projectPath = args[2] || ".";
|
|
192
|
+
const { runScriptCommand } = await import("./commands/script.js");
|
|
193
|
+
runScriptCommand(script, projectPath);
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
case "security:audit": {
|
|
198
|
+
const targetPath = args[1] || "src";
|
|
199
|
+
const { securityAuditCommand } = await import("./commands/security.js");
|
|
200
|
+
securityAuditCommand(targetPath);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
case "check:lint": {
|
|
205
|
+
const { lintCommand } = await import("./commands/lint.js");
|
|
206
|
+
lintCommand();
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
|
|
126
210
|
case "version":
|
|
127
211
|
case "-v":
|
|
128
212
|
case "--version":
|
|
129
|
-
console.
|
|
213
|
+
console.warn(`v${getPackageVersion()}`);
|
|
130
214
|
break;
|
|
131
215
|
|
|
132
216
|
case "help":
|
|
@@ -139,17 +223,13 @@ async function main() {
|
|
|
139
223
|
if (command && !KNOWN_COMMANDS.includes(command)) {
|
|
140
224
|
// Natural language request fallback to @manager
|
|
141
225
|
const content = args.join(" ");
|
|
142
|
-
const { getMemoryPath } = await import("./utils/memory.js");
|
|
143
|
-
const fs = await import("fs");
|
|
144
226
|
const memoryPath = getMemoryPath();
|
|
145
227
|
|
|
146
228
|
let traceId = "T-000";
|
|
147
|
-
if (fs.
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
content.match(/Active Trace ID[:\s|]+([A-Z0-9]+)/i);
|
|
152
|
-
if (match) traceId = match[1].trim();
|
|
229
|
+
if (fs.existsSync(memoryPath)) {
|
|
230
|
+
const memoryContent = fs.readFileSync(memoryPath, "utf8");
|
|
231
|
+
const tid = readActiveTraceId(memoryContent);
|
|
232
|
+
if (tid) traceId = tid.trim();
|
|
153
233
|
}
|
|
154
234
|
|
|
155
235
|
sendMessage({
|
|
@@ -160,8 +240,8 @@ async function main() {
|
|
|
160
240
|
traceId
|
|
161
241
|
});
|
|
162
242
|
|
|
163
|
-
console.
|
|
164
|
-
console.
|
|
243
|
+
console.warn(`📡 Request sent to @manager: "${content}" (Trace: ${traceId})`);
|
|
244
|
+
console.warn("👉 Run 'agent-enderun orchestrate' to process.");
|
|
165
245
|
} else {
|
|
166
246
|
showHelp();
|
|
167
247
|
}
|
|
@@ -170,8 +250,8 @@ async function main() {
|
|
|
170
250
|
}
|
|
171
251
|
|
|
172
252
|
function showHelp() {
|
|
173
|
-
console.
|
|
174
|
-
|
|
253
|
+
console.warn(`
|
|
254
|
+
🎖️ Enderun Core CLI (v${getPackageVersion()}) — The Supreme AI Orchestrator
|
|
175
255
|
|
|
176
256
|
Usage:
|
|
177
257
|
agent-enderun <command> [options]
|
|
@@ -180,7 +260,8 @@ Usage:
|
|
|
180
260
|
|
|
181
261
|
Commands:
|
|
182
262
|
@<agent> <task> Delegate a task to a specialist agent (e.g. @backend, @frontend)
|
|
183
|
-
init [adapter] Initialize Agent Enderun framework
|
|
263
|
+
init [adapter] Initialize Agent Enderun framework.
|
|
264
|
+
Options: --interactive, --dry-run
|
|
184
265
|
check Perform an enterprise-grade system health check
|
|
185
266
|
status Show active phase, trace ID, and agent statuses
|
|
186
267
|
trace:new <desc> Start a new task chain with a unique Trace ID
|
|
@@ -188,6 +269,17 @@ Commands:
|
|
|
188
269
|
orchestrate Start the dynamic Hermes agent orchestration loop
|
|
189
270
|
verify-contract Validate type alignment between backend and frontend
|
|
190
271
|
update-contract Generate and synchronize a new contract hash
|
|
272
|
+
git:commit Suggest git commit messages matching the Trace ID
|
|
273
|
+
git:sync Sync and rebase the project with remote repository
|
|
274
|
+
check:compliance Verify file compliance with ENDERUN.md rules
|
|
275
|
+
explorer:graph Generate import dependency charts in Mermaid format
|
|
276
|
+
explorer:audit Scan source files for lines-of-code complexity
|
|
277
|
+
knowledge:update Add or update a topic in the local knowledge base
|
|
278
|
+
knowledge:search Search the local knowledge base for a topic query
|
|
279
|
+
log:action Record structured logs for agent executions
|
|
280
|
+
run-script Execute package scripts in the project directory
|
|
281
|
+
security:audit Audit source files for secrets and unsafe coding
|
|
282
|
+
check:lint Run ESLint checks on the project files
|
|
191
283
|
version Show version information
|
|
192
284
|
|
|
193
285
|
Natural Language:
|
package/src/cli/utils/app.ts
CHANGED
|
@@ -2,7 +2,7 @@ import fs from "fs";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import crypto from "crypto";
|
|
4
4
|
import { ensureDir, writeTextFile, writeJsonFile } from "../utils/fs.js";
|
|
5
|
-
import {
|
|
5
|
+
import { updateProjectMemory } from "./memory.js";
|
|
6
6
|
import { slugifyName, titleCase } from "../utils/string.js";
|
|
7
7
|
import { getConfiguredPaths, getMemoryPath } from "./memory.js";
|
|
8
8
|
import { getDependencyVersions } from "./pkg.js";
|
|
@@ -278,7 +278,7 @@ export interface Task {
|
|
|
278
278
|
console.warn(`✅ Base types created in ${path.relative(targetDir, typesDir)}`);
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
-
interface AppSpec {
|
|
281
|
+
export interface AppSpec {
|
|
282
282
|
rawDescription: string;
|
|
283
283
|
appName: string;
|
|
284
284
|
title: string;
|
|
@@ -735,7 +735,7 @@ export function updateMemoryForGeneratedApp(spec: AppSpec, traceId: string) {
|
|
|
735
735
|
`- **Files:** ${pathsMap.backend}, ${pathsMap.frontend}, project docs`,
|
|
736
736
|
].join("\n");
|
|
737
737
|
|
|
738
|
-
|
|
738
|
+
updateProjectMemory("HISTORY", history);
|
|
739
739
|
}
|
|
740
740
|
|
|
741
741
|
export async function collectCreateAppDescription(args: string[]) {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Standard Color Palette Schema
|
|
5
|
+
*/
|
|
6
|
+
export const ColorPaletteSchema = z.object({
|
|
7
|
+
primary: z.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/),
|
|
8
|
+
secondary: z.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/),
|
|
9
|
+
accent: z.string().regex(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Enderun Core config.json Schema
|
|
14
|
+
*/
|
|
15
|
+
export const EnderunConfigSchema = z.object({
|
|
16
|
+
name: z.string().default("Enderun Core"),
|
|
17
|
+
version: z.string(),
|
|
18
|
+
frameworkDir: z.string().optional(),
|
|
19
|
+
theme: z.object({
|
|
20
|
+
palette: z.string(),
|
|
21
|
+
colors: ColorPaletteSchema
|
|
22
|
+
}).optional(),
|
|
23
|
+
paths: z.object({
|
|
24
|
+
backend: z.string(),
|
|
25
|
+
frontend: z.string(),
|
|
26
|
+
docs: z.string(),
|
|
27
|
+
tests: z.string(),
|
|
28
|
+
}).default({
|
|
29
|
+
backend: "apps/backend",
|
|
30
|
+
frontend: "apps/web",
|
|
31
|
+
docs: "docs",
|
|
32
|
+
tests: "tests"
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* MCP mcp.json Schema
|
|
38
|
+
*/
|
|
39
|
+
export const McpConfigSchema = z.object({
|
|
40
|
+
mcpServers: z.record(z.object({
|
|
41
|
+
command: z.string(),
|
|
42
|
+
args: z.array(z.string()),
|
|
43
|
+
env: z.record(z.string()).optional()
|
|
44
|
+
}))
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export type EnderunConfig = z.infer<typeof EnderunConfigSchema>;
|
|
48
|
+
export type McpConfig = z.infer<typeof McpConfigSchema>;
|
package/src/cli/utils/fs.ts
CHANGED
|
@@ -3,6 +3,9 @@ import path from "path";
|
|
|
3
3
|
|
|
4
4
|
import { remapFrameworkContent } from "../adapters.js"; // Import from the new adapters.js
|
|
5
5
|
import type { AdapterId } from "../adapters.js";
|
|
6
|
+
import { ensureDir, writeTextFile, writeJsonFile } from "../../shared/fs.js";
|
|
7
|
+
|
|
8
|
+
export { ensureDir, writeTextFile, writeJsonFile };
|
|
6
9
|
|
|
7
10
|
export function updateGitIgnore(targetPath: string, frameworkDir = ".gemini", dryRun = false): void {
|
|
8
11
|
const IGNORE_LINES = [
|
|
@@ -39,29 +42,6 @@ export function updateGitIgnore(targetPath: string, frameworkDir = ".gemini", dr
|
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
|
|
42
|
-
export function ensureDir(dirPath: string, dryRun = false): void {
|
|
43
|
-
if (!fs.existsSync(dirPath)) {
|
|
44
|
-
if (dryRun) {
|
|
45
|
-
console.warn(`[DRY RUN] Would create directory: ${dirPath}`);
|
|
46
|
-
} else {
|
|
47
|
-
fs.mkdirSync(dirPath, { recursive: true });
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export function writeTextFile(filePath: string, content: string, dryRun = false): void {
|
|
53
|
-
if (dryRun) {
|
|
54
|
-
console.warn(`[DRY RUN] Would write file: ${filePath}`);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
ensureDir(path.dirname(filePath));
|
|
58
|
-
// Use template literal for content handling to avoid issues with raw newlines
|
|
59
|
-
fs.writeFileSync(filePath, content.endsWith("\n") ? content : `${content}\n`);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export function writeJsonFile(filePath: string, value: unknown, dryRun = false): void {
|
|
63
|
-
writeTextFile(filePath, JSON.stringify(value, null, 2), dryRun);
|
|
64
|
-
}
|
|
65
45
|
|
|
66
46
|
interface SanitizeJsonFunction {
|
|
67
47
|
(obj: unknown, targetScope?: string): unknown;
|
|
@@ -90,14 +70,17 @@ export function copyDir(
|
|
|
90
70
|
|
|
91
71
|
const srcPath = path.join(src, entry.name);
|
|
92
72
|
|
|
93
|
-
// Physical folder remapping during copy
|
|
73
|
+
// Physical folder remapping during copy.
|
|
74
|
+
// In unified mode (frameworkDir === ".enderun") folder names are always standard —
|
|
75
|
+
// agents/ stays agents/, knowledge/ stays knowledge/.
|
|
76
|
+
// Only remap when using a legacy non-unified adapter directory.
|
|
94
77
|
let effectiveEntryName = entry.name;
|
|
95
|
-
if (entry.isDirectory()) {
|
|
78
|
+
if (entry.isDirectory() && frameworkDir !== ".enderun") {
|
|
96
79
|
if (entry.name === "agents") {
|
|
97
|
-
if (adapterId === "antigravity") effectiveEntryName = "skills";
|
|
80
|
+
if (adapterId === "antigravity-cli") effectiveEntryName = "skills";
|
|
98
81
|
else if (adapterId === "grok") effectiveEntryName = "plugins";
|
|
99
82
|
} else if (entry.name === "knowledge") {
|
|
100
|
-
if (adapterId === "antigravity") effectiveEntryName = "rules";
|
|
83
|
+
if (adapterId === "antigravity-cli") effectiveEntryName = "rules";
|
|
101
84
|
}
|
|
102
85
|
}
|
|
103
86
|
|