@moreih29/nexus-core 0.16.2 → 0.18.2
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/README.md +101 -67
- package/dist/cli/sync.d.ts +3 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +59 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/generate/index.d.ts +3 -0
- package/dist/generate/index.d.ts.map +1 -0
- package/dist/generate/index.js +2 -0
- package/dist/generate/index.js.map +1 -0
- package/dist/generate/load-data.d.ts +8 -0
- package/dist/generate/load-data.d.ts.map +1 -0
- package/dist/generate/load-data.js +45 -0
- package/dist/generate/load-data.js.map +1 -0
- package/dist/generate/load-spec.d.ts +3 -0
- package/dist/generate/load-spec.d.ts.map +1 -0
- package/dist/generate/load-spec.js +48 -0
- package/dist/generate/load-spec.js.map +1 -0
- package/dist/generate/macros/expand.d.ts +3 -0
- package/dist/generate/macros/expand.d.ts.map +1 -0
- package/dist/generate/macros/expand.js +48 -0
- package/dist/generate/macros/expand.js.map +1 -0
- package/dist/generate/macros/parse.d.ts +4 -0
- package/dist/generate/macros/parse.d.ts.map +1 -0
- package/dist/generate/macros/parse.js +142 -0
- package/dist/generate/macros/parse.js.map +1 -0
- package/dist/generate/macros/validate.d.ts +3 -0
- package/dist/generate/macros/validate.d.ts.map +1 -0
- package/dist/generate/macros/validate.js +23 -0
- package/dist/generate/macros/validate.js.map +1 -0
- package/dist/generate/renderers/claude.d.ts +3 -0
- package/dist/generate/renderers/claude.d.ts.map +1 -0
- package/dist/generate/renderers/claude.js +48 -0
- package/dist/generate/renderers/claude.js.map +1 -0
- package/dist/generate/renderers/codex.d.ts +3 -0
- package/dist/generate/renderers/codex.d.ts.map +1 -0
- package/dist/generate/renderers/codex.js +79 -0
- package/dist/generate/renderers/codex.js.map +1 -0
- package/dist/generate/renderers/markdown.d.ts +2 -0
- package/dist/generate/renderers/markdown.d.ts.map +1 -0
- package/dist/generate/renderers/markdown.js +6 -0
- package/dist/generate/renderers/markdown.js.map +1 -0
- package/dist/generate/renderers/opencode.d.ts +3 -0
- package/dist/generate/renderers/opencode.d.ts.map +1 -0
- package/dist/generate/renderers/opencode.js +69 -0
- package/dist/generate/renderers/opencode.js.map +1 -0
- package/dist/generate/sync.d.ts +4 -0
- package/dist/generate/sync.d.ts.map +1 -0
- package/dist/generate/sync.js +60 -0
- package/dist/generate/sync.js.map +1 -0
- package/dist/generate/types.d.ts +74 -0
- package/dist/generate/types.d.ts.map +1 -0
- package/dist/generate/types.js +2 -0
- package/dist/generate/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/definitions/artifact.d.ts +20 -0
- package/dist/mcp/definitions/artifact.d.ts.map +1 -0
- package/dist/mcp/definitions/artifact.js +14 -0
- package/dist/mcp/definitions/artifact.js.map +1 -0
- package/dist/mcp/definitions/history.d.ts +20 -0
- package/dist/mcp/definitions/history.d.ts.map +1 -0
- package/dist/mcp/definitions/history.js +18 -0
- package/dist/mcp/definitions/history.js.map +1 -0
- package/dist/mcp/definitions/index.d.ts +276 -0
- package/dist/mcp/definitions/index.d.ts.map +1 -0
- package/dist/mcp/definitions/index.js +16 -0
- package/dist/mcp/definitions/index.js.map +1 -0
- package/dist/mcp/definitions/plan.d.ts +111 -0
- package/dist/mcp/definitions/plan.d.ts.map +1 -0
- package/dist/mcp/definitions/plan.js +89 -0
- package/dist/mcp/definitions/plan.js.map +1 -0
- package/dist/mcp/definitions/task.d.ts +138 -0
- package/dist/mcp/definitions/task.d.ts.map +1 -0
- package/dist/mcp/definitions/task.js +78 -0
- package/dist/mcp/definitions/task.js.map +1 -0
- package/dist/mcp/handlers/artifact.d.ts.map +1 -0
- package/dist/mcp/handlers/artifact.js +42 -0
- package/dist/mcp/handlers/artifact.js.map +1 -0
- package/dist/mcp/handlers/history.d.ts.map +1 -0
- package/dist/mcp/handlers/history.js +35 -0
- package/dist/mcp/handlers/history.js.map +1 -0
- package/dist/mcp/handlers/plan.d.ts.map +1 -0
- package/dist/mcp/handlers/plan.js +324 -0
- package/dist/mcp/handlers/plan.js.map +1 -0
- package/dist/mcp/handlers/task.d.ts.map +1 -0
- package/dist/mcp/handlers/task.js +216 -0
- package/dist/mcp/handlers/task.js.map +1 -0
- package/dist/{src/mcp → mcp}/server.d.ts +1 -1
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +58 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/shared/json-store.d.ts.map +1 -0
- package/dist/{src/shared → shared}/json-store.js +5 -4
- package/dist/shared/json-store.js.map +1 -0
- package/dist/shared/mcp-utils.d.ts.map +1 -0
- package/dist/shared/mcp-utils.js.map +1 -0
- package/dist/{src/shared → shared}/paths.d.ts +0 -4
- package/dist/shared/paths.d.ts.map +1 -0
- package/dist/shared/paths.js +62 -0
- package/dist/shared/paths.js.map +1 -0
- package/dist/shared/register-tool.d.ts +20 -0
- package/dist/shared/register-tool.d.ts.map +1 -0
- package/dist/shared/register-tool.js +15 -0
- package/dist/shared/register-tool.js.map +1 -0
- package/dist/{src/types → types}/state.d.ts +65 -65
- package/dist/types/state.d.ts.map +1 -0
- package/dist/{src/types → types}/state.js +1 -1
- package/dist/types/state.js.map +1 -0
- package/harness/claude/agent-rules.yml +21 -0
- package/harness/claude/invocations.yml +11 -0
- package/harness/claude/layout.yml +3 -0
- package/harness/codex/agent-rules.yml +28 -0
- package/harness/codex/invocations.yml +13 -0
- package/harness/codex/layout.yml +3 -0
- package/harness/opencode/agent-rules.yml +18 -0
- package/harness/opencode/invocations.yml +12 -0
- package/harness/opencode/layout.yml +3 -0
- package/package.json +38 -43
- package/{assets → spec}/agents/architect/body.ko.md +92 -84
- package/spec/agents/architect/body.md +185 -0
- package/spec/agents/designer/body.ko.md +330 -0
- package/spec/agents/designer/body.md +330 -0
- package/spec/agents/engineer/body.ko.md +166 -0
- package/spec/agents/engineer/body.md +166 -0
- package/spec/agents/lead/body.ko.md +276 -0
- package/spec/agents/lead/body.md +276 -0
- package/{assets → spec}/agents/postdoc/body.ko.md +116 -46
- package/spec/agents/postdoc/body.md +192 -0
- package/{assets → spec}/agents/researcher/body.ko.md +131 -45
- package/spec/agents/researcher/body.md +223 -0
- package/spec/agents/reviewer/body.ko.md +219 -0
- package/spec/agents/reviewer/body.md +219 -0
- package/{assets → spec}/agents/strategist/body.ko.md +108 -35
- package/spec/agents/strategist/body.md +187 -0
- package/spec/agents/tester/body.ko.md +272 -0
- package/spec/agents/tester/body.md +272 -0
- package/{assets → spec}/agents/writer/body.ko.md +109 -33
- package/spec/agents/writer/body.md +198 -0
- package/spec/skills/nx-auto-plan/body.ko.md +150 -0
- package/spec/skills/nx-auto-plan/body.md +150 -0
- package/spec/skills/nx-plan/body.ko.md +159 -0
- package/spec/skills/nx-plan/body.md +159 -0
- package/spec/skills/nx-run/body.ko.md +132 -0
- package/spec/skills/nx-run/body.md +132 -0
- package/vocabulary/enums/task-register-state.yml +4 -0
- package/vocabulary/invocations.yml +43 -0
- package/assets/agents/architect/body.md +0 -177
- package/assets/agents/designer/body.ko.md +0 -125
- package/assets/agents/designer/body.md +0 -125
- package/assets/agents/engineer/body.ko.md +0 -106
- package/assets/agents/engineer/body.md +0 -106
- package/assets/agents/lead/body.ko.md +0 -70
- package/assets/agents/lead/body.md +0 -70
- package/assets/agents/postdoc/body.md +0 -122
- package/assets/agents/researcher/body.md +0 -137
- package/assets/agents/reviewer/body.ko.md +0 -138
- package/assets/agents/reviewer/body.md +0 -138
- package/assets/agents/strategist/body.md +0 -116
- package/assets/agents/tester/body.ko.md +0 -195
- package/assets/agents/tester/body.md +0 -195
- package/assets/agents/writer/body.md +0 -122
- package/assets/capability-matrix.yml +0 -198
- package/assets/hooks/agent-bootstrap/handler.test.ts +0 -368
- package/assets/hooks/agent-bootstrap/handler.ts +0 -119
- package/assets/hooks/agent-bootstrap/meta.yml +0 -10
- package/assets/hooks/agent-finalize/handler.test.ts +0 -368
- package/assets/hooks/agent-finalize/handler.ts +0 -76
- package/assets/hooks/agent-finalize/meta.yml +0 -10
- package/assets/hooks/capability-matrix.yml +0 -313
- package/assets/hooks/post-tool-telemetry/handler.test.ts +0 -302
- package/assets/hooks/post-tool-telemetry/handler.ts +0 -49
- package/assets/hooks/post-tool-telemetry/meta.yml +0 -11
- package/assets/hooks/prompt-router/handler.test.ts +0 -801
- package/assets/hooks/prompt-router/handler.ts +0 -272
- package/assets/hooks/prompt-router/meta.yml +0 -11
- package/assets/hooks/session-init/handler.test.ts +0 -274
- package/assets/hooks/session-init/handler.ts +0 -30
- package/assets/hooks/session-init/meta.yml +0 -9
- package/assets/lsp-servers.json +0 -55
- package/assets/schema/lsp-servers.schema.json +0 -67
- package/assets/skills/nx-init/body.ko.md +0 -197
- package/assets/skills/nx-init/body.md +0 -197
- package/assets/skills/nx-plan/body.ko.md +0 -361
- package/assets/skills/nx-plan/body.md +0 -361
- package/assets/skills/nx-run/body.ko.md +0 -161
- package/assets/skills/nx-run/body.md +0 -160
- package/assets/skills/nx-sync/body.ko.md +0 -92
- package/assets/skills/nx-sync/body.md +0 -92
- package/assets/tools/tool-name-map.yml +0 -353
- package/dist/assets/hooks/agent-bootstrap/handler.d.ts +0 -4
- package/dist/assets/hooks/agent-bootstrap/handler.d.ts.map +0 -1
- package/dist/assets/hooks/agent-bootstrap/handler.js +0 -100
- package/dist/assets/hooks/agent-bootstrap/handler.js.map +0 -1
- package/dist/assets/hooks/agent-finalize/handler.d.ts +0 -4
- package/dist/assets/hooks/agent-finalize/handler.d.ts.map +0 -1
- package/dist/assets/hooks/agent-finalize/handler.js +0 -63
- package/dist/assets/hooks/agent-finalize/handler.js.map +0 -1
- package/dist/assets/hooks/post-tool-telemetry/handler.d.ts +0 -4
- package/dist/assets/hooks/post-tool-telemetry/handler.d.ts.map +0 -1
- package/dist/assets/hooks/post-tool-telemetry/handler.js +0 -40
- package/dist/assets/hooks/post-tool-telemetry/handler.js.map +0 -1
- package/dist/assets/hooks/prompt-router/handler.d.ts +0 -4
- package/dist/assets/hooks/prompt-router/handler.d.ts.map +0 -1
- package/dist/assets/hooks/prompt-router/handler.js +0 -214
- package/dist/assets/hooks/prompt-router/handler.js.map +0 -1
- package/dist/assets/hooks/session-init/handler.d.ts +0 -4
- package/dist/assets/hooks/session-init/handler.d.ts.map +0 -1
- package/dist/assets/hooks/session-init/handler.js +0 -23
- package/dist/assets/hooks/session-init/handler.js.map +0 -1
- package/dist/claude/.claude-plugin/marketplace.json +0 -75
- package/dist/claude/.claude-plugin/plugin.json +0 -67
- package/dist/claude/agents/architect.md +0 -172
- package/dist/claude/agents/designer.md +0 -120
- package/dist/claude/agents/engineer.md +0 -98
- package/dist/claude/agents/lead.md +0 -59
- package/dist/claude/agents/postdoc.md +0 -117
- package/dist/claude/agents/researcher.md +0 -132
- package/dist/claude/agents/reviewer.md +0 -133
- package/dist/claude/agents/strategist.md +0 -111
- package/dist/claude/agents/tester.md +0 -190
- package/dist/claude/agents/writer.md +0 -114
- package/dist/claude/dist/hooks/agent-bootstrap.js +0 -121
- package/dist/claude/dist/hooks/agent-finalize.js +0 -180
- package/dist/claude/dist/hooks/prompt-router.js +0 -7336
- package/dist/claude/dist/hooks/session-init.js +0 -37
- package/dist/claude/hooks/hooks.json +0 -52
- package/dist/claude/settings.json +0 -3
- package/dist/claude/skills/nx-init/SKILL.md +0 -189
- package/dist/claude/skills/nx-plan/SKILL.md +0 -353
- package/dist/claude/skills/nx-run/SKILL.md +0 -154
- package/dist/claude/skills/nx-sync/SKILL.md +0 -87
- package/dist/codex/agents/architect.toml +0 -175
- package/dist/codex/agents/designer.toml +0 -123
- package/dist/codex/agents/engineer.toml +0 -105
- package/dist/codex/agents/lead.toml +0 -64
- package/dist/codex/agents/postdoc.toml +0 -120
- package/dist/codex/agents/researcher.toml +0 -136
- package/dist/codex/agents/reviewer.toml +0 -137
- package/dist/codex/agents/strategist.toml +0 -114
- package/dist/codex/agents/tester.toml +0 -194
- package/dist/codex/agents/writer.toml +0 -121
- package/dist/codex/dist/hooks/agent-bootstrap.js +0 -121
- package/dist/codex/dist/hooks/agent-finalize.js +0 -180
- package/dist/codex/dist/hooks/prompt-router.js +0 -7336
- package/dist/codex/dist/hooks/session-init.js +0 -37
- package/dist/codex/hooks/hooks.json +0 -28
- package/dist/codex/install/AGENTS.fragment.md +0 -60
- package/dist/codex/install/config.fragment.toml +0 -5
- package/dist/codex/install/install.sh +0 -60
- package/dist/codex/package.json +0 -20
- package/dist/codex/plugin/.codex-plugin/plugin.json +0 -57
- package/dist/codex/plugin/skills/nx-init/SKILL.md +0 -189
- package/dist/codex/plugin/skills/nx-plan/SKILL.md +0 -353
- package/dist/codex/plugin/skills/nx-run/SKILL.md +0 -154
- package/dist/codex/plugin/skills/nx-sync/SKILL.md +0 -87
- package/dist/codex/prompts/architect.md +0 -166
- package/dist/codex/prompts/designer.md +0 -114
- package/dist/codex/prompts/engineer.md +0 -97
- package/dist/codex/prompts/lead.md +0 -60
- package/dist/codex/prompts/postdoc.md +0 -111
- package/dist/codex/prompts/researcher.md +0 -127
- package/dist/codex/prompts/reviewer.md +0 -128
- package/dist/codex/prompts/strategist.md +0 -105
- package/dist/codex/prompts/tester.md +0 -185
- package/dist/codex/prompts/writer.md +0 -113
- package/dist/hooks/agent-bootstrap.js +0 -121
- package/dist/hooks/agent-finalize.js +0 -180
- package/dist/hooks/prompt-router.js +0 -7336
- package/dist/hooks/session-init.js +0 -37
- package/dist/manifests/claude-hooks.json +0 -52
- package/dist/manifests/codex-hooks.json +0 -28
- package/dist/manifests/opencode-manifest.json +0 -44
- package/dist/manifests/portability-report.json +0 -87
- package/dist/opencode/.opencode/skills/nx-init/SKILL.md +0 -189
- package/dist/opencode/.opencode/skills/nx-plan/SKILL.md +0 -353
- package/dist/opencode/.opencode/skills/nx-run/SKILL.md +0 -154
- package/dist/opencode/.opencode/skills/nx-sync/SKILL.md +0 -87
- package/dist/opencode/package.json +0 -23
- package/dist/opencode/src/agents/architect.ts +0 -176
- package/dist/opencode/src/agents/designer.ts +0 -124
- package/dist/opencode/src/agents/engineer.ts +0 -105
- package/dist/opencode/src/agents/lead.ts +0 -66
- package/dist/opencode/src/agents/postdoc.ts +0 -121
- package/dist/opencode/src/agents/researcher.ts +0 -136
- package/dist/opencode/src/agents/reviewer.ts +0 -137
- package/dist/opencode/src/agents/strategist.ts +0 -115
- package/dist/opencode/src/agents/tester.ts +0 -194
- package/dist/opencode/src/agents/writer.ts +0 -121
- package/dist/opencode/src/index.ts +0 -25
- package/dist/opencode/src/plugin.ts +0 -6
- package/dist/scripts/build-agents.d.ts +0 -164
- package/dist/scripts/build-agents.d.ts.map +0 -1
- package/dist/scripts/build-agents.js +0 -890
- package/dist/scripts/build-agents.js.map +0 -1
- package/dist/scripts/build-hooks.d.ts +0 -57
- package/dist/scripts/build-hooks.d.ts.map +0 -1
- package/dist/scripts/build-hooks.js +0 -555
- package/dist/scripts/build-hooks.js.map +0 -1
- package/dist/scripts/cli.d.ts +0 -54
- package/dist/scripts/cli.d.ts.map +0 -1
- package/dist/scripts/cli.js +0 -504
- package/dist/scripts/cli.js.map +0 -1
- package/dist/scripts/smoke/smoke-claude.d.ts +0 -2
- package/dist/scripts/smoke/smoke-claude.d.ts.map +0 -1
- package/dist/scripts/smoke/smoke-claude.js +0 -58
- package/dist/scripts/smoke/smoke-claude.js.map +0 -1
- package/dist/scripts/smoke/smoke-codex.d.ts +0 -2
- package/dist/scripts/smoke/smoke-codex.d.ts.map +0 -1
- package/dist/scripts/smoke/smoke-codex.js +0 -50
- package/dist/scripts/smoke/smoke-codex.js.map +0 -1
- package/dist/scripts/smoke/smoke-consumer.d.ts +0 -2
- package/dist/scripts/smoke/smoke-consumer.d.ts.map +0 -1
- package/dist/scripts/smoke/smoke-consumer.js +0 -80
- package/dist/scripts/smoke/smoke-consumer.js.map +0 -1
- package/dist/scripts/smoke/smoke-opencode.d.ts +0 -2
- package/dist/scripts/smoke/smoke-opencode.d.ts.map +0 -1
- package/dist/scripts/smoke/smoke-opencode.js +0 -99
- package/dist/scripts/smoke/smoke-opencode.js.map +0 -1
- package/dist/src/hooks/opencode-mount.d.ts +0 -35
- package/dist/src/hooks/opencode-mount.d.ts.map +0 -1
- package/dist/src/hooks/opencode-mount.js +0 -352
- package/dist/src/hooks/opencode-mount.js.map +0 -1
- package/dist/src/hooks/runtime.d.ts +0 -37
- package/dist/src/hooks/runtime.d.ts.map +0 -1
- package/dist/src/hooks/runtime.js +0 -274
- package/dist/src/hooks/runtime.js.map +0 -1
- package/dist/src/hooks/types.d.ts +0 -196
- package/dist/src/hooks/types.d.ts.map +0 -1
- package/dist/src/hooks/types.js +0 -85
- package/dist/src/hooks/types.js.map +0 -1
- package/dist/src/lsp/cache.d.ts +0 -9
- package/dist/src/lsp/cache.d.ts.map +0 -1
- package/dist/src/lsp/cache.js +0 -216
- package/dist/src/lsp/cache.js.map +0 -1
- package/dist/src/lsp/client.d.ts +0 -24
- package/dist/src/lsp/client.d.ts.map +0 -1
- package/dist/src/lsp/client.js +0 -166
- package/dist/src/lsp/client.js.map +0 -1
- package/dist/src/lsp/detect.d.ts +0 -77
- package/dist/src/lsp/detect.d.ts.map +0 -1
- package/dist/src/lsp/detect.js +0 -116
- package/dist/src/lsp/detect.js.map +0 -1
- package/dist/src/mcp/server.d.ts.map +0 -1
- package/dist/src/mcp/server.js +0 -34
- package/dist/src/mcp/server.js.map +0 -1
- package/dist/src/mcp/tools/artifact.d.ts.map +0 -1
- package/dist/src/mcp/tools/artifact.js +0 -36
- package/dist/src/mcp/tools/artifact.js.map +0 -1
- package/dist/src/mcp/tools/history.d.ts.map +0 -1
- package/dist/src/mcp/tools/history.js +0 -29
- package/dist/src/mcp/tools/history.js.map +0 -1
- package/dist/src/mcp/tools/lsp.d.ts +0 -13
- package/dist/src/mcp/tools/lsp.d.ts.map +0 -1
- package/dist/src/mcp/tools/lsp.js +0 -225
- package/dist/src/mcp/tools/lsp.js.map +0 -1
- package/dist/src/mcp/tools/plan.d.ts.map +0 -1
- package/dist/src/mcp/tools/plan.js +0 -317
- package/dist/src/mcp/tools/plan.js.map +0 -1
- package/dist/src/mcp/tools/task.d.ts.map +0 -1
- package/dist/src/mcp/tools/task.js +0 -252
- package/dist/src/mcp/tools/task.js.map +0 -1
- package/dist/src/shared/invocations.d.ts +0 -74
- package/dist/src/shared/invocations.d.ts.map +0 -1
- package/dist/src/shared/invocations.js +0 -247
- package/dist/src/shared/invocations.js.map +0 -1
- package/dist/src/shared/json-store.d.ts.map +0 -1
- package/dist/src/shared/json-store.js.map +0 -1
- package/dist/src/shared/mcp-utils.d.ts.map +0 -1
- package/dist/src/shared/mcp-utils.js.map +0 -1
- package/dist/src/shared/package-root.d.ts +0 -6
- package/dist/src/shared/package-root.d.ts.map +0 -1
- package/dist/src/shared/package-root.js +0 -19
- package/dist/src/shared/package-root.js.map +0 -1
- package/dist/src/shared/paths.d.ts.map +0 -1
- package/dist/src/shared/paths.js +0 -81
- package/dist/src/shared/paths.js.map +0 -1
- package/dist/src/shared/tool-log.d.ts +0 -8
- package/dist/src/shared/tool-log.d.ts.map +0 -1
- package/dist/src/shared/tool-log.js +0 -22
- package/dist/src/shared/tool-log.js.map +0 -1
- package/dist/src/types/agent-config.d.ts +0 -22
- package/dist/src/types/agent-config.d.ts.map +0 -1
- package/dist/src/types/agent-config.js +0 -2
- package/dist/src/types/agent-config.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -2
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -2
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/state.d.ts.map +0 -1
- package/dist/src/types/state.js.map +0 -1
- package/docs/consuming/codex-lead-merge.md +0 -106
- package/docs/contract/harness-io.md +0 -333
- package/docs/plugin-guide.md +0 -355
- package/docs/plugin-template/claude/.github/workflows/build.yml +0 -60
- package/docs/plugin-template/claude/README.md +0 -110
- package/docs/plugin-template/claude/package.json +0 -16
- package/docs/plugin-template/codex/.github/workflows/build.yml +0 -51
- package/docs/plugin-template/codex/README.md +0 -147
- package/docs/plugin-template/codex/install/install.sh +0 -60
- package/docs/plugin-template/codex/package.json +0 -17
- package/docs/plugin-template/opencode/.github/workflows/build.yml +0 -61
- package/docs/plugin-template/opencode/README.md +0 -121
- package/docs/plugin-template/opencode/package.json +0 -25
- package/docs/plugin-template/opencode/src/plugin.ts +0 -6
- /package/dist/{src/mcp/tools → mcp/handlers}/artifact.d.ts +0 -0
- /package/dist/{src/mcp/tools → mcp/handlers}/history.d.ts +0 -0
- /package/dist/{src/mcp/tools → mcp/handlers}/plan.d.ts +0 -0
- /package/dist/{src/mcp/tools → mcp/handlers}/task.d.ts +0 -0
- /package/dist/{src/shared → shared}/json-store.d.ts +0 -0
- /package/dist/{src/shared → shared}/mcp-utils.d.ts +0 -0
- /package/dist/{src/shared → shared}/mcp-utils.js +0 -0
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
# tool-name-map.yml
|
|
2
|
-
# nexus standard tool names (PascalCase) -> 3 harness native mapping
|
|
3
|
-
# Used by wrapper (runtime.ts) for alias transformation and Bash command parsing
|
|
4
|
-
#
|
|
5
|
-
# Sources:
|
|
6
|
-
# - plan.json Issue #3 decision (tool name standard + Bash parsing)
|
|
7
|
-
# - plan.json Issue #4 decision (Codex limit workarounds, extended Bash parse patterns)
|
|
8
|
-
# - plan.json Issue #5 decision §6 (PascalCase standard for matcher)
|
|
9
|
-
# - .nexus/memory/external-codex-hooks-tools.md §8 (3-harness tool mapping table)
|
|
10
|
-
#
|
|
11
|
-
# null = tool not natively supported by that harness
|
|
12
|
-
# Codex shell tools: primary is "shell" (most general); aliases listed for alias transformation
|
|
13
|
-
|
|
14
|
-
tools:
|
|
15
|
-
|
|
16
|
-
# ── General tools ────────────────────────────────────────────────────────────
|
|
17
|
-
|
|
18
|
-
Bash:
|
|
19
|
-
claude: Bash
|
|
20
|
-
codex:
|
|
21
|
-
primary: shell
|
|
22
|
-
aliases: [shell_command, exec_command, exec]
|
|
23
|
-
opencode: bash
|
|
24
|
-
|
|
25
|
-
Read:
|
|
26
|
-
claude: Read
|
|
27
|
-
codex: null # No standalone Read; uses shell cat/head/tail (see bash_parse_patterns)
|
|
28
|
-
opencode: read
|
|
29
|
-
|
|
30
|
-
Edit:
|
|
31
|
-
claude: Edit
|
|
32
|
-
codex: apply_patch # Codex uses apply_patch for all file edits
|
|
33
|
-
opencode: edit
|
|
34
|
-
|
|
35
|
-
Write:
|
|
36
|
-
claude: Write
|
|
37
|
-
codex: apply_patch
|
|
38
|
-
opencode: write
|
|
39
|
-
|
|
40
|
-
MultiEdit:
|
|
41
|
-
claude: MultiEdit
|
|
42
|
-
codex: apply_patch
|
|
43
|
-
opencode: edit
|
|
44
|
-
|
|
45
|
-
# ApplyPatch: Codex-native concept; Claude decomposes into Edit/MultiEdit
|
|
46
|
-
ApplyPatch:
|
|
47
|
-
claude: [Edit, MultiEdit] # Claude has no single ApplyPatch; uses per-file tools
|
|
48
|
-
codex: apply_patch
|
|
49
|
-
opencode: [apply_patch, edit] # OpenCode supports both forms
|
|
50
|
-
|
|
51
|
-
Grep:
|
|
52
|
-
claude: Grep
|
|
53
|
-
codex: null # Uses shell + rg (see bash_parse_patterns)
|
|
54
|
-
opencode: grep
|
|
55
|
-
|
|
56
|
-
Glob:
|
|
57
|
-
claude: Glob
|
|
58
|
-
codex: null # Uses shell + find (see bash_parse_patterns)
|
|
59
|
-
opencode: glob
|
|
60
|
-
|
|
61
|
-
LS:
|
|
62
|
-
claude: LS
|
|
63
|
-
codex: list_dir
|
|
64
|
-
opencode: list
|
|
65
|
-
|
|
66
|
-
WebFetch:
|
|
67
|
-
claude: WebFetch
|
|
68
|
-
codex: null # No equivalent; web_search only
|
|
69
|
-
opencode: webfetch
|
|
70
|
-
|
|
71
|
-
WebSearch:
|
|
72
|
-
claude: WebSearch
|
|
73
|
-
codex: web_search
|
|
74
|
-
opencode: websearch
|
|
75
|
-
|
|
76
|
-
ViewImage:
|
|
77
|
-
claude: Read # Claude handles images via Read (branch on mime type)
|
|
78
|
-
codex: view_image
|
|
79
|
-
opencode: null # Confirmed unavailable per memory §8
|
|
80
|
-
|
|
81
|
-
REPL:
|
|
82
|
-
claude: REPL
|
|
83
|
-
codex: [js_repl, js_repl_reset]
|
|
84
|
-
opencode: null # Confirmed unavailable per memory §8
|
|
85
|
-
|
|
86
|
-
ToolSearch:
|
|
87
|
-
claude: ToolSearch
|
|
88
|
-
codex: [tool_search, tool_suggest]
|
|
89
|
-
opencode: null # Confirmed unavailable per memory §8
|
|
90
|
-
|
|
91
|
-
# ── Meta tools — invocation guidance only; wrapper mapping not required (#3 decision) ──
|
|
92
|
-
|
|
93
|
-
Task: # Subagent spawn
|
|
94
|
-
claude: Agent # Claude exposes this as the Agent tool (also called Task in docs)
|
|
95
|
-
codex: spawn_agent
|
|
96
|
-
opencode: task
|
|
97
|
-
|
|
98
|
-
Skill:
|
|
99
|
-
claude: Skill
|
|
100
|
-
codex: null # Codex uses $skill-name syntax directly in composer (no tool call)
|
|
101
|
-
opencode: skill
|
|
102
|
-
|
|
103
|
-
TodoWrite:
|
|
104
|
-
claude: TodoWrite
|
|
105
|
-
codex: update_plan
|
|
106
|
-
opencode: todowrite
|
|
107
|
-
|
|
108
|
-
TodoRead:
|
|
109
|
-
claude: TodoRead
|
|
110
|
-
codex: update_plan # update_plan subsumes read via plan/step/status fields
|
|
111
|
-
opencode: todoread
|
|
112
|
-
|
|
113
|
-
AskUserQuestion:
|
|
114
|
-
claude: AskUserQuestion
|
|
115
|
-
codex: request_user_input
|
|
116
|
-
opencode: question
|
|
117
|
-
|
|
118
|
-
RequestPermissions:
|
|
119
|
-
claude: null # Claude uses PermissionRequest hook event, not a tool
|
|
120
|
-
codex: request_permissions
|
|
121
|
-
opencode: null # permission.ask (#7006) confirmed non-firing; out of portable scope
|
|
122
|
-
|
|
123
|
-
# ── MCP tool prefix convention ────────────────────────────────────────────────
|
|
124
|
-
# MCP tools are exposed under a namespaced prefix in all three harnesses.
|
|
125
|
-
# wrapper normalizes any mcp__<server>__<tool> name to this canonical form.
|
|
126
|
-
mcp_tool_prefix: "mcp__<server>__<tool>"
|
|
127
|
-
|
|
128
|
-
# ── Bash parse patterns ───────────────────────────────────────────────────────
|
|
129
|
-
# Used by wrapper to normalize Codex Bash (shell) commands into nexus standard tool_name.
|
|
130
|
-
# Applies to: PreToolUse / PostToolUse tool_input.command (Codex), post-tool-telemetry matcher.
|
|
131
|
-
# Strategy: best-effort single-entrypoint match on command string prefix.
|
|
132
|
-
# Compound commands, pipes, and sudo are NOT matched and remain tool_name=Bash.
|
|
133
|
-
#
|
|
134
|
-
# Source: plan.json Issue #3 section "Bash parsing" + Issue #4 section 2 "Bash parsing extension"
|
|
135
|
-
|
|
136
|
-
bash_parse_patterns:
|
|
137
|
-
|
|
138
|
-
Read:
|
|
139
|
-
- "^(cat|head|tail|less|more) "
|
|
140
|
-
|
|
141
|
-
LS:
|
|
142
|
-
- "^ls( |$)"
|
|
143
|
-
|
|
144
|
-
Glob:
|
|
145
|
-
- "^find "
|
|
146
|
-
|
|
147
|
-
Grep:
|
|
148
|
-
- "^(rg|grep) "
|
|
149
|
-
|
|
150
|
-
Write:
|
|
151
|
-
- "^echo .+ > " # stdout redirect (overwrite)
|
|
152
|
-
- "^touch "
|
|
153
|
-
- "^tee "
|
|
154
|
-
- "^cp "
|
|
155
|
-
- "^cat > .+ <<" # heredoc write
|
|
156
|
-
|
|
157
|
-
Edit:
|
|
158
|
-
- "^echo .+ >> " # stdout redirect (append)
|
|
159
|
-
- "^sed -i "
|
|
160
|
-
- "^mv "
|
|
161
|
-
|
|
162
|
-
# ── Capability notes (non-normative) ─────────────────────────────────────────
|
|
163
|
-
# Authoritative capability data lives in assets/hooks/capability-matrix.yml.
|
|
164
|
-
# These notes summarize key harness gaps relevant to alias mapping.
|
|
165
|
-
#
|
|
166
|
-
# Codex:
|
|
167
|
-
# - No standalone Read/Edit/Write tools; file operations go through apply_patch or shell
|
|
168
|
-
# - apply_patch does not emit PreToolUse/PostToolUse as of 2026-04-18
|
|
169
|
-
# (PR #18391 pending merge; capability matrix entry: event.pre_tool_use.edit.codex=false)
|
|
170
|
-
# - MCP tools do not emit PreToolUse/PostToolUse (Codex #16732, Claude-only)
|
|
171
|
-
# - Skill invocation is $skill-name syntax, not a tool call
|
|
172
|
-
#
|
|
173
|
-
# OpenCode:
|
|
174
|
-
# - permission.ask (#7006) confirmed non-firing; RequestPermissions out of portable scope
|
|
175
|
-
# - PostToolUse additional_context injection not adopted as standard (YAGNI, plan.json #6)
|
|
176
|
-
|
|
177
|
-
# ── invocations ───────────────────────────────────────────────────────────────
|
|
178
|
-
# Canonical invocation patterns for cross-harness agent/skill coordination.
|
|
179
|
-
# These are NOT wrapper-normalized tool names — they are prose/template references
|
|
180
|
-
# for skill authors and build scripts that emit harness-specific call syntax.
|
|
181
|
-
#
|
|
182
|
-
# Each template uses {placeholder} for substituted values.
|
|
183
|
-
# Optional arguments are shown as {arg?} — omit the surrounding delimiters when absent.
|
|
184
|
-
# Build scripts must strip optional segments when the corresponding arg is absent.
|
|
185
|
-
#
|
|
186
|
-
# Sources (per template):
|
|
187
|
-
# Claude Agent tool: https://code.claude.com/docs/en/sub-agents
|
|
188
|
-
# Verified: .nexus/memory/external-claude-code-hooks-tools.md §6 (Agent/Task tool)
|
|
189
|
-
# Claude Skill tool: https://code.claude.com/docs/en/skills
|
|
190
|
-
# Verified: .nexus/memory/external-claude-code-hooks-tools.md — Skill §
|
|
191
|
-
# OpenCode task tool: https://opencode.ai/docs/tools/ (task tool Zod schema)
|
|
192
|
-
# Verified: .nexus/memory/external-opencode-hooks-tools.md §15 (official params)
|
|
193
|
-
# OpenCode skill tool: https://opencode.ai/docs/skills/
|
|
194
|
-
# Verified: .nexus/memory/external-opencode-hooks-tools.md — Skill § (name param only)
|
|
195
|
-
# Codex spawn_agent: https://developers.openai.com/codex/config-reference
|
|
196
|
-
# Verified: .nexus/memory/external-codex-hooks-tools.md §7-5
|
|
197
|
-
# Codex skill ($prefix): https://developers.openai.com/codex/skills
|
|
198
|
-
# Verified: .nexus/memory/external-codex-hooks-tools.md — Skill §
|
|
199
|
-
# Codex update_plan: .nexus/memory/external-codex-hooks-tools.md §7-4
|
|
200
|
-
# Codex request_user_input: .nexus/memory/external-codex-hooks-tools.md §7-4
|
|
201
|
-
|
|
202
|
-
invocations:
|
|
203
|
-
|
|
204
|
-
# subagent_spawn — spawn a new subagent from within a skill or agent body.
|
|
205
|
-
#
|
|
206
|
-
# args:
|
|
207
|
-
# target_role : string — role/type ID of the agent to spawn (e.g. "engineer")
|
|
208
|
-
# prompt : string — instruction text delivered to the subagent
|
|
209
|
-
# name : string? — optional human-readable label / description
|
|
210
|
-
#
|
|
211
|
-
# Claude — Agent tool (also referred to as "Task" in docs).
|
|
212
|
-
# subagent_type selects the agent role. description is the optional display label.
|
|
213
|
-
# Source: https://code.claude.com/docs/en/sub-agents (Agent tool: subagent_type, prompt, description)
|
|
214
|
-
# Verified: .nexus/memory/external-claude-code-hooks-tools.md §6
|
|
215
|
-
#
|
|
216
|
-
# OpenCode — task tool. Official Zod schema: { subagent_type, prompt, description, task_id? }
|
|
217
|
-
# description is required in OpenCode (unlike Claude where it is optional).
|
|
218
|
-
# task_id is used to resume a prior session; omitted on initial spawn.
|
|
219
|
-
# Source: https://opencode.ai/docs/tools/
|
|
220
|
-
# Verified: .nexus/memory/external-opencode-hooks-tools.md §15 (source-confirmed schema)
|
|
221
|
-
#
|
|
222
|
-
# Codex — spawn_agent tool. Second arg is the instruction prompt.
|
|
223
|
-
# Codex agent roles are resolved from native agent config (config.toml [agents.*]).
|
|
224
|
-
# Source: https://developers.openai.com/codex/config-reference
|
|
225
|
-
# Verified: .nexus/memory/external-codex-hooks-tools.md §7-5
|
|
226
|
-
subagent_spawn:
|
|
227
|
-
args: [target_role, prompt, name] # name is optional
|
|
228
|
-
templates:
|
|
229
|
-
claude: 'Agent({ subagent_type: "{target_role}", prompt: "{prompt}", description: "{name}" })'
|
|
230
|
-
opencode: 'task({ subagent_type: "{target_role}", prompt: "{prompt}", description: "{name}" })'
|
|
231
|
-
codex: 'spawn_agent("{target_role}", "{prompt}")'
|
|
232
|
-
notes:
|
|
233
|
-
claude: >
|
|
234
|
-
description field is optional; omit when name arg is absent.
|
|
235
|
-
model field may be added to override the spawned agent's model.
|
|
236
|
-
opencode: >
|
|
237
|
-
description is required by OpenCode's Zod schema — use target_role as
|
|
238
|
-
fallback when name is absent. task_id param enables session resume (§15).
|
|
239
|
-
codex: >
|
|
240
|
-
Agent role must be pre-registered in config.toml [agents.<target_role>].
|
|
241
|
-
No description equivalent in spawn_agent call signature.
|
|
242
|
-
|
|
243
|
-
# skill_activation — invoke a skill from within an agent or skill body.
|
|
244
|
-
#
|
|
245
|
-
# args:
|
|
246
|
-
# skill : string — canonical skill name (e.g. "nx-plan")
|
|
247
|
-
# mode : string? — optional argument / mode string passed to the skill
|
|
248
|
-
#
|
|
249
|
-
# Claude — Skill tool. Single `command` string parameter only; no `args` field.
|
|
250
|
-
# Plugin-namespaced skills use "plugin:skill" form (e.g. "claude-nexus:nx-plan").
|
|
251
|
-
# Source: https://code.claude.com/docs/en/skills
|
|
252
|
-
# Verified: .nexus/memory/external-claude-code-hooks-tools.md — Skill § (command param schema)
|
|
253
|
-
#
|
|
254
|
-
# OpenCode — skill tool. Single `name` string parameter; no `args` parameter.
|
|
255
|
-
# $ARGUMENTS placeholder substitution in SKILL.md body is unconfirmed.
|
|
256
|
-
# Source: https://opencode.ai/docs/skills/
|
|
257
|
-
# Verified: .nexus/memory/external-opencode-hooks-tools.md — Skill § (name param only)
|
|
258
|
-
#
|
|
259
|
-
# Codex — $skill-name composer prefix, not a tool call. Positional and KEY=value
|
|
260
|
-
# args are theoretically supported but confirmed only for Custom Prompts, not Skills.
|
|
261
|
-
# Source: https://developers.openai.com/codex/skills
|
|
262
|
-
# Verified: .nexus/memory/external-codex-hooks-tools.md — Skill § ($ prefix syntax)
|
|
263
|
-
skill_activation:
|
|
264
|
-
args: [skill, mode] # mode is optional
|
|
265
|
-
templates:
|
|
266
|
-
claude: 'Skill({ command: "{skill}" })'
|
|
267
|
-
opencode: 'skill({ name: "{skill}" })'
|
|
268
|
-
codex: '${skill}'
|
|
269
|
-
notes:
|
|
270
|
-
claude: >
|
|
271
|
-
The Skill tool accepts only the `command` string; mode/args cannot be
|
|
272
|
-
passed as a separate parameter. Mode must be embedded in the SKILL.md body
|
|
273
|
-
via $ARGUMENTS placeholder substitution.
|
|
274
|
-
opencode: >
|
|
275
|
-
The skill tool accepts only `name`; args passing is unconfirmed per source
|
|
276
|
-
review. Design skills to be args-free or embed defaults in SKILL.md body.
|
|
277
|
-
codex: >
|
|
278
|
-
Positional args: "$skill-name {mode}". Named args: "$skill-name MODE={mode}".
|
|
279
|
-
Confirmed only for Custom Prompts; treat as best-effort for Skills.
|
|
280
|
-
$ prefix is literal in composer input, not a tool call.
|
|
281
|
-
|
|
282
|
-
# task_register — register or update a task in the plan tracker.
|
|
283
|
-
#
|
|
284
|
-
# args:
|
|
285
|
-
# label : string — task subject / display label
|
|
286
|
-
# state : string — task status (e.g. "in_progress", "completed", "blocked")
|
|
287
|
-
#
|
|
288
|
-
# Claude — TaskCreate tool for new tasks; TaskUpdate (nx_task_update MCP tool) for state.
|
|
289
|
-
# TaskCreate is a Claude Code native meta tool.
|
|
290
|
-
# Source: https://code.claude.com/docs/en/sub-agents
|
|
291
|
-
# Verified: .nexus/memory/external-claude-code-hooks-tools.md §6 (TaskCreate tool entry)
|
|
292
|
-
# Note: nx_task_update refers to the MCP tool exposed by nexus-core server.
|
|
293
|
-
#
|
|
294
|
-
# OpenCode — nx_task_add MCP tool to create; nx_task_update MCP tool to update state.
|
|
295
|
-
# MCP tool names are identical across harnesses (server exposes same tool names).
|
|
296
|
-
# Source: nexus-core MCP server implementation (src/mcp/tools/)
|
|
297
|
-
#
|
|
298
|
-
# Codex — update_plan native tool manages plan steps including state.
|
|
299
|
-
# plan/step/status sub-fields subsume both create and update operations.
|
|
300
|
-
# Source: https://developers.openai.com/codex/config-reference
|
|
301
|
-
# Verified: .nexus/memory/external-codex-hooks-tools.md §7-4
|
|
302
|
-
task_register:
|
|
303
|
-
args: [label, state]
|
|
304
|
-
templates:
|
|
305
|
-
claude: 'TaskCreate({ subject: "{label}" }) then nx_task_update({ taskId, status: "{state}" })'
|
|
306
|
-
opencode: 'nx_task_add({ subject: "{label}" }) then nx_task_update({ taskId, status: "{state}" })'
|
|
307
|
-
codex: 'update_plan([{ name: "{label}", state: "{state}" }])'
|
|
308
|
-
notes:
|
|
309
|
-
claude: >
|
|
310
|
-
TaskCreate is a Claude Code native tool (not MCP). nx_task_update is the
|
|
311
|
-
nexus-core MCP tool — full name mcp__plugin_claude-nexus_nx__nx_task_update.
|
|
312
|
-
taskId is returned by TaskCreate and must be threaded to the update call.
|
|
313
|
-
opencode: >
|
|
314
|
-
Both nx_task_add and nx_task_update are nexus-core MCP tools exposed via
|
|
315
|
-
the nexus MCP server. task_id returned by nx_task_add must be threaded to update.
|
|
316
|
-
codex: >
|
|
317
|
-
update_plan subsumes creation and update in a single call via plan/step/status
|
|
318
|
-
fields. No separate create/update step is needed.
|
|
319
|
-
|
|
320
|
-
# user_question — request structured input from the user.
|
|
321
|
-
#
|
|
322
|
-
# args:
|
|
323
|
-
# question : string — the question text to present
|
|
324
|
-
# options : string[] — list of choices (may be empty for free-text responses)
|
|
325
|
-
#
|
|
326
|
-
# Claude — AskUserQuestion tool. questions[] array supports multiple simultaneous
|
|
327
|
-
# questions; single-question usage is the standard nexus pattern.
|
|
328
|
-
# Source: https://code.claude.com/docs/en/sub-agents (AskUserQuestion tool)
|
|
329
|
-
# Verified: .nexus/memory/external-claude-code-hooks-tools.md §6
|
|
330
|
-
#
|
|
331
|
-
# OpenCode — question tool. Single question with choices array.
|
|
332
|
-
# Source: https://opencode.ai/docs/tools/
|
|
333
|
-
# Verified: .nexus/memory/external-opencode-hooks-tools.md §7 (question tool entry)
|
|
334
|
-
#
|
|
335
|
-
# Codex — request_user_input native tool.
|
|
336
|
-
# Source: https://developers.openai.com/codex/config-reference
|
|
337
|
-
# Verified: .nexus/memory/external-codex-hooks-tools.md §7-4
|
|
338
|
-
user_question:
|
|
339
|
-
args: [question, options]
|
|
340
|
-
templates:
|
|
341
|
-
claude: 'AskUserQuestion({ questions: [{ question: "{question}", options: {options} }] })'
|
|
342
|
-
opencode: 'question({ question: "{question}", choices: {options} })'
|
|
343
|
-
codex: 'request_user_input({ prompt: "{question}", options: {options} })'
|
|
344
|
-
notes:
|
|
345
|
-
claude: >
|
|
346
|
-
options is a JSON array of strings. Omit the options field (not an empty array)
|
|
347
|
-
for free-text responses. Multiple questions can be batched in the questions[] array.
|
|
348
|
-
opencode: >
|
|
349
|
-
choices field name (not options). Omit choices for free-text input.
|
|
350
|
-
codex: >
|
|
351
|
-
Exact request_user_input schema (options field name, types) is not fully
|
|
352
|
-
documented — treat as best-effort. Verified as a native Codex tool in
|
|
353
|
-
external-codex-hooks-tools.md §7-4.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../assets/hooks/agent-bootstrap/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAoF/D,QAAA,MAAM,OAAO,EAAE,WAgCd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
const CORE_INDEX_SIZE_LIMIT = 2 * 1024; // 2KB
|
|
4
|
-
function loadValidRoles(cwd) {
|
|
5
|
-
const agentsDir = join(cwd, "assets/agents");
|
|
6
|
-
const roles = [];
|
|
7
|
-
if (existsSync(agentsDir)) {
|
|
8
|
-
for (const entry of readdirSync(agentsDir, { withFileTypes: true })) {
|
|
9
|
-
if (entry.isDirectory())
|
|
10
|
-
roles.push(entry.name);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return roles;
|
|
14
|
-
}
|
|
15
|
-
function readFirstLine(path) {
|
|
16
|
-
try {
|
|
17
|
-
const content = readFileSync(path, "utf-8");
|
|
18
|
-
const firstNonEmpty = content.split("\n").find((l) => l.trim().length > 0) ?? "";
|
|
19
|
-
return firstNonEmpty.replace(/^#+\s*/, "").slice(0, 80);
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return "";
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
function buildCoreIndex(cwd) {
|
|
26
|
-
const entries = [];
|
|
27
|
-
for (const sub of [".nexus/memory", ".nexus/context"]) {
|
|
28
|
-
const absDir = join(cwd, sub);
|
|
29
|
-
if (!existsSync(absDir))
|
|
30
|
-
continue;
|
|
31
|
-
for (const f of readdirSync(absDir, { withFileTypes: true })) {
|
|
32
|
-
if (!f.isFile() || !f.name.endsWith(".md"))
|
|
33
|
-
continue;
|
|
34
|
-
const full = join(absDir, f.name);
|
|
35
|
-
entries.push({
|
|
36
|
-
path: `${sub}/${f.name}`,
|
|
37
|
-
mtime: statSync(full).mtimeMs,
|
|
38
|
-
line: readFirstLine(full),
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
entries.sort((a, b) => b.mtime - a.mtime);
|
|
43
|
-
const lines = [];
|
|
44
|
-
let bytes = 0;
|
|
45
|
-
for (const e of entries) {
|
|
46
|
-
const formatted = `- ${e.path}: ${e.line}`;
|
|
47
|
-
if (bytes + formatted.length + 1 > CORE_INDEX_SIZE_LIMIT)
|
|
48
|
-
break;
|
|
49
|
-
lines.push(formatted);
|
|
50
|
-
bytes += formatted.length + 1;
|
|
51
|
-
}
|
|
52
|
-
return lines.length > 0
|
|
53
|
-
? "Available memory/context:\n" + lines.join("\n")
|
|
54
|
-
: "";
|
|
55
|
-
}
|
|
56
|
-
function getResumeCount(cwd, sessionId, agentId) {
|
|
57
|
-
const trackerPath = join(cwd, ".nexus/state", sessionId, "agent-tracker.json");
|
|
58
|
-
if (!existsSync(trackerPath))
|
|
59
|
-
return 0;
|
|
60
|
-
try {
|
|
61
|
-
const tracker = JSON.parse(readFileSync(trackerPath, "utf-8"));
|
|
62
|
-
const entry = Array.isArray(tracker)
|
|
63
|
-
? tracker.find((e) => e.agent_id === agentId)
|
|
64
|
-
: null;
|
|
65
|
-
return entry?.resume_count ?? 0;
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
return 0;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
const handler = async (input) => {
|
|
72
|
-
if (input.hook_event_name !== "SubagentStart")
|
|
73
|
-
return;
|
|
74
|
-
const { cwd, session_id, agent_type, agent_id } = input;
|
|
75
|
-
// fresh only — skip on resume
|
|
76
|
-
const resumeCount = getResumeCount(cwd, session_id, agent_id);
|
|
77
|
-
if (resumeCount > 0)
|
|
78
|
-
return;
|
|
79
|
-
// unregistered role: silent skip
|
|
80
|
-
const validRoles = loadValidRoles(cwd);
|
|
81
|
-
if (!validRoles.includes(agent_type))
|
|
82
|
-
return;
|
|
83
|
-
const parts = [];
|
|
84
|
-
const coreIndex = buildCoreIndex(cwd);
|
|
85
|
-
if (coreIndex) {
|
|
86
|
-
parts.push(`<system-notice>\n${coreIndex}\n</system-notice>`);
|
|
87
|
-
}
|
|
88
|
-
const rulePath = join(cwd, ".nexus/rules", `${agent_type}.md`);
|
|
89
|
-
if (existsSync(rulePath)) {
|
|
90
|
-
const ruleContent = readFileSync(rulePath, "utf-8").trim();
|
|
91
|
-
if (ruleContent) {
|
|
92
|
-
parts.push(`<system-notice>\nCustom rule for ${agent_type}:\n${ruleContent}\n</system-notice>`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (parts.length === 0)
|
|
96
|
-
return;
|
|
97
|
-
return { additional_context: parts.join("\n\n") };
|
|
98
|
-
};
|
|
99
|
-
export default handler;
|
|
100
|
-
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../assets/hooks/agent-bootstrap/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../assets/hooks/agent-finalize/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAK/D,QAAA,MAAM,OAAO,EAAE,WAoEd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { updateJsonFileLocked } from "../../../src/shared/json-store.js";
|
|
2
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
const handler = async (input) => {
|
|
5
|
-
if (input.hook_event_name !== "SubagentStop")
|
|
6
|
-
return;
|
|
7
|
-
const { cwd, session_id, agent_type, agent_id } = input;
|
|
8
|
-
const lastMessage = (input.last_assistant_message ?? "").slice(0, 500);
|
|
9
|
-
const sessionDir = join(cwd, ".nexus/state", session_id);
|
|
10
|
-
const trackerPath = join(sessionDir, "agent-tracker.json");
|
|
11
|
-
const toolLogPath = join(sessionDir, "tool-log.jsonl");
|
|
12
|
-
const tasksPath = join(sessionDir, "tasks.json");
|
|
13
|
-
// 1. tracker update + files_touched aggregation (locked)
|
|
14
|
-
await updateJsonFileLocked(trackerPath, [], (tracker) => {
|
|
15
|
-
const entry = tracker.find((e) => e["agent_id"] === agent_id);
|
|
16
|
-
if (!entry)
|
|
17
|
-
return tracker;
|
|
18
|
-
entry["status"] = "completed";
|
|
19
|
-
entry["stopped_at"] = new Date().toISOString();
|
|
20
|
-
entry["last_message"] = lastMessage;
|
|
21
|
-
if (existsSync(toolLogPath)) {
|
|
22
|
-
const files = new Set();
|
|
23
|
-
const raw = readFileSync(toolLogPath, "utf-8");
|
|
24
|
-
for (const line of raw.split("\n")) {
|
|
25
|
-
if (!line.trim())
|
|
26
|
-
continue;
|
|
27
|
-
try {
|
|
28
|
-
const log = JSON.parse(line);
|
|
29
|
-
if (log["agent_id"] === agent_id && typeof log["file"] === "string") {
|
|
30
|
-
files.add(log["file"]);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
// skip malformed lines
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
entry["files_touched"] = [...files];
|
|
38
|
-
}
|
|
39
|
-
return tracker;
|
|
40
|
-
});
|
|
41
|
-
// 2. pending tasks alert (owner.role === agent_type)
|
|
42
|
-
if (!existsSync(tasksPath))
|
|
43
|
-
return;
|
|
44
|
-
try {
|
|
45
|
-
const tasksData = JSON.parse(readFileSync(tasksPath, "utf-8"));
|
|
46
|
-
const tasks = Array.isArray(tasksData?.["tasks"])
|
|
47
|
-
? tasksData["tasks"]
|
|
48
|
-
: [];
|
|
49
|
-
const incomplete = tasks.filter((t) => t["owner"]?.["role"] === agent_type &&
|
|
50
|
-
t["status"] !== "completed");
|
|
51
|
-
if (incomplete.length === 0)
|
|
52
|
-
return;
|
|
53
|
-
const ids = incomplete.map((t) => t["id"]).join(", ");
|
|
54
|
-
return {
|
|
55
|
-
additional_context: `<system-notice>\nSubagent "${agent_type}" finished. Tasks still pending with this role: ${ids}. Review status and coordinate remaining subagent delegation.\n</system-notice>`,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
export default handler;
|
|
63
|
-
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../assets/hooks/agent-finalize/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../assets/hooks/post-tool-telemetry/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAY/D,QAAA,MAAM,OAAO,EAAE,WAkCd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { appendJsonLine } from "../../../src/shared/json-store.js";
|
|
2
|
-
import { join, resolve, relative } from "node:path";
|
|
3
|
-
const EDIT_TOOLS = new Set(["Edit", "Write", "MultiEdit", "ApplyPatch", "NotebookEdit"]);
|
|
4
|
-
function isWithinMemory(filePath, projectRoot) {
|
|
5
|
-
const memRoot = resolve(projectRoot, ".nexus/memory");
|
|
6
|
-
const abs = resolve(filePath);
|
|
7
|
-
return abs.startsWith(memRoot + "/") || abs === memRoot;
|
|
8
|
-
}
|
|
9
|
-
const handler = async (input) => {
|
|
10
|
-
if (input.hook_event_name !== "PostToolUse")
|
|
11
|
-
return;
|
|
12
|
-
const { cwd, session_id, tool_name, agent_id } = input;
|
|
13
|
-
const toolInput = (input.tool_input ?? {});
|
|
14
|
-
// 1. Memory access tracking (Read)
|
|
15
|
-
if (tool_name === "Read") {
|
|
16
|
-
const filePath = toolInput.file_path;
|
|
17
|
-
if (filePath && isWithinMemory(filePath, cwd)) {
|
|
18
|
-
appendJsonLine(join(cwd, ".nexus/memory-access.jsonl"), {
|
|
19
|
-
path: relative(cwd, resolve(filePath)),
|
|
20
|
-
accessed_at: new Date().toISOString(),
|
|
21
|
-
agent: agent_id ?? null,
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
// 2. Tool-log append (edit tools + agent_id present)
|
|
26
|
-
if (EDIT_TOOLS.has(tool_name) && agent_id) {
|
|
27
|
-
const filePath = (toolInput.file_path ?? toolInput.notebook_path);
|
|
28
|
-
if (filePath) {
|
|
29
|
-
appendJsonLine(join(cwd, ".nexus/state", session_id, "tool-log.jsonl"), {
|
|
30
|
-
ts: new Date().toISOString(),
|
|
31
|
-
agent_id,
|
|
32
|
-
tool: tool_name,
|
|
33
|
-
file: relative(cwd, resolve(filePath)),
|
|
34
|
-
status: "ok",
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
export default handler;
|
|
40
|
-
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../assets/hooks/post-tool-telemetry/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;AAEzF,SAAS,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC;AAC1D,CAAC;AAED,MAAM,OAAO,GAAgB,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3C,IAAI,KAAK,CAAC,eAAe,KAAK,aAAa;QAAE,OAAO;IAEpD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACvD,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAC;IAEtE,mCAAmC;IACnC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,SAA+B,CAAC;QAC3D,IAAI,QAAQ,IAAI,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,4BAA4B,CAAC,EAAE;gBACtD,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,KAAK,EAAE,QAAQ,IAAI,IAAI;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,aAAa,CAAuB,CAAC;QACxF,IAAI,QAAQ,EAAE,CAAC;YACb,cAAc,CACZ,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,CAAC,EACvD;gBACE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,QAAQ;gBACR,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,EAAE,IAAI;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../assets/hooks/prompt-router/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,6BAA6B,CAAC;AA8GhF,QAAA,MAAM,OAAO,EAAE,WA+Jd,CAAC;AAEF,eAAe,OAAO,CAAC"}
|