@oxagen/cli 0.5.0 → 0.6.1
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 +66 -3
- package/dist/agent/__tests__/code-graph.test.d.ts +2 -0
- package/dist/agent/__tests__/code-graph.test.d.ts.map +1 -0
- package/dist/agent/__tests__/code-graph.test.js +83 -0
- package/dist/agent/__tests__/code-graph.test.js.map +1 -0
- package/dist/agent/__tests__/evaluator.test.d.ts +2 -0
- package/dist/agent/__tests__/evaluator.test.d.ts.map +1 -0
- package/dist/agent/__tests__/evaluator.test.js +96 -0
- package/dist/agent/__tests__/evaluator.test.js.map +1 -0
- package/dist/agent/__tests__/fleet-memory.test.d.ts +2 -0
- package/dist/agent/__tests__/fleet-memory.test.d.ts.map +1 -0
- package/dist/agent/__tests__/fleet-memory.test.js +107 -0
- package/dist/agent/__tests__/fleet-memory.test.js.map +1 -0
- package/dist/agent/__tests__/fleet-store.test.d.ts +2 -0
- package/dist/agent/__tests__/fleet-store.test.d.ts.map +1 -0
- package/dist/agent/__tests__/fleet-store.test.js +93 -0
- package/dist/agent/__tests__/fleet-store.test.js.map +1 -0
- package/dist/agent/__tests__/git-isolation.test.d.ts +2 -0
- package/dist/agent/__tests__/git-isolation.test.d.ts.map +1 -0
- package/dist/agent/__tests__/git-isolation.test.js +119 -0
- package/dist/agent/__tests__/git-isolation.test.js.map +1 -0
- package/dist/agent/__tests__/judge.test.d.ts +2 -0
- package/dist/agent/__tests__/judge.test.d.ts.map +1 -0
- package/dist/agent/__tests__/judge.test.js +140 -0
- package/dist/agent/__tests__/judge.test.js.map +1 -0
- package/dist/agent/__tests__/loop-errors.test.d.ts +2 -0
- package/dist/agent/__tests__/loop-errors.test.d.ts.map +1 -0
- package/dist/agent/__tests__/loop-errors.test.js +75 -0
- package/dist/agent/__tests__/loop-errors.test.js.map +1 -0
- package/dist/agent/__tests__/loop-gating.test.d.ts +2 -0
- package/dist/agent/__tests__/loop-gating.test.d.ts.map +1 -0
- package/dist/agent/__tests__/loop-gating.test.js +94 -0
- package/dist/agent/__tests__/loop-gating.test.js.map +1 -0
- package/dist/agent/__tests__/model-router.test.d.ts +2 -0
- package/dist/agent/__tests__/model-router.test.d.ts.map +1 -0
- package/dist/agent/__tests__/model-router.test.js +138 -0
- package/dist/agent/__tests__/model-router.test.js.map +1 -0
- package/dist/agent/__tests__/orchestrator-isolation.test.d.ts +2 -0
- package/dist/agent/__tests__/orchestrator-isolation.test.d.ts.map +1 -0
- package/dist/agent/__tests__/orchestrator-isolation.test.js +134 -0
- package/dist/agent/__tests__/orchestrator-isolation.test.js.map +1 -0
- package/dist/agent/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/agent/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/agent/__tests__/orchestrator.test.js +201 -0
- package/dist/agent/__tests__/orchestrator.test.js.map +1 -0
- package/dist/agent/__tests__/permissions.test.d.ts +2 -0
- package/dist/agent/__tests__/permissions.test.d.ts.map +1 -0
- package/dist/agent/__tests__/permissions.test.js +206 -0
- package/dist/agent/__tests__/permissions.test.js.map +1 -0
- package/dist/agent/__tests__/pipeline-telemetry.test.d.ts +2 -0
- package/dist/agent/__tests__/pipeline-telemetry.test.d.ts.map +1 -0
- package/dist/agent/__tests__/pipeline-telemetry.test.js +158 -0
- package/dist/agent/__tests__/pipeline-telemetry.test.js.map +1 -0
- package/dist/agent/__tests__/pipeline.test.d.ts +2 -0
- package/dist/agent/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/agent/__tests__/pipeline.test.js +235 -0
- package/dist/agent/__tests__/pipeline.test.js.map +1 -0
- package/dist/agent/__tests__/planner.test.d.ts +2 -0
- package/dist/agent/__tests__/planner.test.d.ts.map +1 -0
- package/dist/agent/__tests__/planner.test.js +98 -0
- package/dist/agent/__tests__/planner.test.js.map +1 -0
- package/dist/agent/__tests__/prompt-enhancer.test.d.ts +2 -0
- package/dist/agent/__tests__/prompt-enhancer.test.d.ts.map +1 -0
- package/dist/agent/__tests__/prompt-enhancer.test.js +107 -0
- package/dist/agent/__tests__/prompt-enhancer.test.js.map +1 -0
- package/dist/agent/__tests__/rate-card.test.d.ts +2 -0
- package/dist/agent/__tests__/rate-card.test.d.ts.map +1 -0
- package/dist/agent/__tests__/rate-card.test.js +69 -0
- package/dist/agent/__tests__/rate-card.test.js.map +1 -0
- package/dist/agent/__tests__/system-prompt.test.d.ts +2 -0
- package/dist/agent/__tests__/system-prompt.test.d.ts.map +1 -0
- package/dist/agent/__tests__/system-prompt.test.js +29 -0
- package/dist/agent/__tests__/system-prompt.test.js.map +1 -0
- package/dist/agent/__tests__/trace-format-verbose.test.d.ts +2 -0
- package/dist/agent/__tests__/trace-format-verbose.test.d.ts.map +1 -0
- package/dist/agent/__tests__/trace-format-verbose.test.js +93 -0
- package/dist/agent/__tests__/trace-format-verbose.test.js.map +1 -0
- package/dist/agent/__tests__/trace-format.test.d.ts +2 -0
- package/dist/agent/__tests__/trace-format.test.d.ts.map +1 -0
- package/dist/agent/__tests__/trace-format.test.js +104 -0
- package/dist/agent/__tests__/trace-format.test.js.map +1 -0
- package/dist/agent/__tests__/trace-store.test.d.ts +2 -0
- package/dist/agent/__tests__/trace-store.test.d.ts.map +1 -0
- package/dist/agent/__tests__/trace-store.test.js +113 -0
- package/dist/agent/__tests__/trace-store.test.js.map +1 -0
- package/dist/agent/__tests__/verbose-log.test.d.ts +2 -0
- package/dist/agent/__tests__/verbose-log.test.d.ts.map +1 -0
- package/dist/agent/__tests__/verbose-log.test.js +69 -0
- package/dist/agent/__tests__/verbose-log.test.js.map +1 -0
- package/dist/agent/code-graph.d.ts +18 -0
- package/dist/agent/code-graph.d.ts.map +1 -0
- package/dist/agent/code-graph.js +119 -0
- package/dist/agent/code-graph.js.map +1 -0
- package/dist/agent/env.d.ts +11 -0
- package/dist/agent/env.d.ts.map +1 -0
- package/dist/agent/env.js +82 -0
- package/dist/agent/env.js.map +1 -0
- package/dist/agent/evaluator.d.ts +13 -0
- package/dist/agent/evaluator.d.ts.map +1 -0
- package/dist/agent/evaluator.js +150 -0
- package/dist/agent/evaluator.js.map +1 -0
- package/dist/agent/fleet/git-isolation.d.ts +142 -0
- package/dist/agent/fleet/git-isolation.d.ts.map +1 -0
- package/dist/agent/fleet/git-isolation.js +290 -0
- package/dist/agent/fleet/git-isolation.js.map +1 -0
- package/dist/agent/fleet/memory.d.ts +21 -0
- package/dist/agent/fleet/memory.d.ts.map +1 -0
- package/dist/agent/fleet/memory.js +129 -0
- package/dist/agent/fleet/memory.js.map +1 -0
- package/dist/agent/fleet/orchestrator.d.ts +108 -0
- package/dist/agent/fleet/orchestrator.d.ts.map +1 -0
- package/dist/agent/fleet/orchestrator.js +358 -0
- package/dist/agent/fleet/orchestrator.js.map +1 -0
- package/dist/agent/fleet/store.d.ts +13 -0
- package/dist/agent/fleet/store.d.ts.map +1 -0
- package/dist/agent/fleet/store.js +79 -0
- package/dist/agent/fleet/store.js.map +1 -0
- package/dist/agent/fleet/types.d.ts +107 -0
- package/dist/agent/fleet/types.d.ts.map +1 -0
- package/dist/agent/fleet/types.js +17 -0
- package/dist/agent/fleet/types.js.map +1 -0
- package/dist/agent/judge.d.ts +46 -0
- package/dist/agent/judge.d.ts.map +1 -0
- package/dist/agent/judge.js +182 -0
- package/dist/agent/judge.js.map +1 -0
- package/dist/agent/loop.d.ts +96 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +233 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/memory.d.ts +14 -0
- package/dist/agent/memory.d.ts.map +1 -0
- package/dist/agent/memory.js +118 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/model-router.d.ts +65 -0
- package/dist/agent/model-router.d.ts.map +1 -0
- package/dist/agent/model-router.js +118 -0
- package/dist/agent/model-router.js.map +1 -0
- package/dist/agent/model.d.ts +9 -0
- package/dist/agent/model.d.ts.map +1 -0
- package/dist/agent/model.js +24 -0
- package/dist/agent/model.js.map +1 -0
- package/dist/agent/permissions.d.ts +103 -0
- package/dist/agent/permissions.d.ts.map +1 -0
- package/dist/agent/permissions.js +245 -0
- package/dist/agent/permissions.js.map +1 -0
- package/dist/agent/pipeline.d.ts +92 -0
- package/dist/agent/pipeline.d.ts.map +1 -0
- package/dist/agent/pipeline.js +371 -0
- package/dist/agent/pipeline.js.map +1 -0
- package/dist/agent/planner.d.ts +19 -0
- package/dist/agent/planner.d.ts.map +1 -0
- package/dist/agent/planner.js +139 -0
- package/dist/agent/planner.js.map +1 -0
- package/dist/agent/project-context.d.ts +13 -0
- package/dist/agent/project-context.d.ts.map +1 -0
- package/dist/agent/project-context.js +66 -0
- package/dist/agent/project-context.js.map +1 -0
- package/dist/agent/prompt-enhancer.d.ts +46 -0
- package/dist/agent/prompt-enhancer.d.ts.map +1 -0
- package/dist/agent/prompt-enhancer.js +137 -0
- package/dist/agent/prompt-enhancer.js.map +1 -0
- package/dist/agent/rate-card.d.ts +77 -0
- package/dist/agent/rate-card.d.ts.map +1 -0
- package/dist/agent/rate-card.js +99 -0
- package/dist/agent/rate-card.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +14 -0
- package/dist/agent/system-prompt.d.ts.map +1 -0
- package/dist/agent/system-prompt.js +47 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/tools.d.ts +23 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +354 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agent/trace-format.d.ts +13 -0
- package/dist/agent/trace-format.d.ts.map +1 -0
- package/dist/agent/trace-format.js +188 -0
- package/dist/agent/trace-format.js.map +1 -0
- package/dist/agent/trace-store.d.ts +19 -0
- package/dist/agent/trace-store.d.ts.map +1 -0
- package/dist/agent/trace-store.js +82 -0
- package/dist/agent/trace-store.js.map +1 -0
- package/dist/agent/trace.d.ts +180 -0
- package/dist/agent/trace.d.ts.map +1 -0
- package/dist/agent/trace.js +2 -0
- package/dist/agent/trace.js.map +1 -0
- package/dist/agent/verbose-log.d.ts +8 -0
- package/dist/agent/verbose-log.d.ts.map +1 -0
- package/dist/agent/verbose-log.js +53 -0
- package/dist/agent/verbose-log.js.map +1 -0
- package/dist/agents/__tests__/loader.test.d.ts +2 -0
- package/dist/agents/__tests__/loader.test.d.ts.map +1 -0
- package/dist/agents/__tests__/loader.test.js +88 -0
- package/dist/agents/__tests__/loader.test.js.map +1 -0
- package/dist/agents/__tests__/tools.test.d.ts +2 -0
- package/dist/agents/__tests__/tools.test.d.ts.map +1 -0
- package/dist/agents/__tests__/tools.test.js +40 -0
- package/dist/agents/__tests__/tools.test.js.map +1 -0
- package/dist/agents/index.d.ts +12 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +4 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/loader.d.ts +25 -0
- package/dist/agents/loader.d.ts.map +1 -0
- package/dist/agents/loader.js +133 -0
- package/dist/agents/loader.js.map +1 -0
- package/dist/agents/tools.d.ts +14 -0
- package/dist/agents/tools.d.ts.map +1 -0
- package/dist/agents/tools.js +21 -0
- package/dist/agents/tools.js.map +1 -0
- package/dist/agents/types.d.ts +27 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +11 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/agents/write.d.ts +10 -0
- package/dist/agents/write.d.ts.map +1 -0
- package/dist/agents/write.js +28 -0
- package/dist/agents/write.js.map +1 -0
- package/dist/commands/__tests__/agent.test.d.ts +2 -0
- package/dist/commands/__tests__/agent.test.d.ts.map +1 -0
- package/dist/commands/__tests__/agent.test.js +82 -0
- package/dist/commands/__tests__/agent.test.js.map +1 -0
- package/dist/commands/__tests__/command.test.d.ts +2 -0
- package/dist/commands/__tests__/command.test.d.ts.map +1 -0
- package/dist/commands/__tests__/command.test.js +73 -0
- package/dist/commands/__tests__/command.test.js.map +1 -0
- package/dist/commands/__tests__/cost.test.d.ts +2 -0
- package/dist/commands/__tests__/cost.test.d.ts.map +1 -0
- package/dist/commands/__tests__/cost.test.js +139 -0
- package/dist/commands/__tests__/cost.test.js.map +1 -0
- package/dist/commands/__tests__/graph.pull.test.d.ts +2 -0
- package/dist/commands/__tests__/graph.pull.test.d.ts.map +1 -0
- package/dist/commands/__tests__/graph.pull.test.js +259 -0
- package/dist/commands/__tests__/graph.pull.test.js.map +1 -0
- package/dist/commands/__tests__/mcp.test.d.ts +2 -0
- package/dist/commands/__tests__/mcp.test.d.ts.map +1 -0
- package/dist/commands/__tests__/mcp.test.js +88 -0
- package/dist/commands/__tests__/mcp.test.js.map +1 -0
- package/dist/commands/__tests__/replay.test.d.ts +2 -0
- package/dist/commands/__tests__/replay.test.d.ts.map +1 -0
- package/dist/commands/__tests__/replay.test.js +76 -0
- package/dist/commands/__tests__/replay.test.js.map +1 -0
- package/dist/commands/__tests__/rules.test.d.ts +2 -0
- package/dist/commands/__tests__/rules.test.d.ts.map +1 -0
- package/dist/commands/__tests__/rules.test.js +95 -0
- package/dist/commands/__tests__/rules.test.js.map +1 -0
- package/dist/commands/__tests__/settings.test.d.ts +2 -0
- package/dist/commands/__tests__/settings.test.d.ts.map +1 -0
- package/dist/commands/__tests__/settings.test.js +83 -0
- package/dist/commands/__tests__/settings.test.js.map +1 -0
- package/dist/commands/agent.d.ts +15 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +58 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/agent.skill.load.d.ts +3 -0
- package/dist/commands/agent.skill.load.d.ts.map +1 -0
- package/dist/commands/agent.skill.load.js +57 -0
- package/dist/commands/agent.skill.load.js.map +1 -0
- package/dist/commands/code.d.ts +14 -0
- package/dist/commands/code.d.ts.map +1 -0
- package/dist/commands/code.js +100 -0
- package/dist/commands/code.js.map +1 -0
- package/dist/commands/command.d.ts +17 -0
- package/dist/commands/command.d.ts.map +1 -0
- package/dist/commands/command.js +74 -0
- package/dist/commands/command.js.map +1 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +66 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/cost.d.ts +10 -0
- package/dist/commands/cost.d.ts.map +1 -0
- package/dist/commands/cost.js +140 -0
- package/dist/commands/cost.js.map +1 -0
- package/dist/commands/env.d.ts +19 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +64 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/graph.pull.d.ts +15 -0
- package/dist/commands/graph.pull.d.ts.map +1 -0
- package/dist/commands/graph.pull.js +137 -0
- package/dist/commands/graph.pull.js.map +1 -0
- package/dist/commands/graph.search.d.ts +10 -0
- package/dist/commands/graph.search.d.ts.map +1 -0
- package/dist/commands/graph.search.js +25 -0
- package/dist/commands/graph.search.js.map +1 -0
- package/dist/commands/graph.status.d.ts +10 -0
- package/dist/commands/graph.status.d.ts.map +1 -0
- package/dist/commands/graph.status.js +75 -0
- package/dist/commands/graph.status.js.map +1 -0
- package/dist/commands/mcp.add.d.ts +13 -0
- package/dist/commands/mcp.add.d.ts.map +1 -0
- package/dist/commands/mcp.add.js +110 -0
- package/dist/commands/mcp.add.js.map +1 -0
- package/dist/commands/mcp.auth.d.ts +10 -0
- package/dist/commands/mcp.auth.d.ts.map +1 -0
- package/dist/commands/mcp.auth.js +132 -0
- package/dist/commands/mcp.auth.js.map +1 -0
- package/dist/commands/mcp.check.d.ts +10 -0
- package/dist/commands/mcp.check.d.ts.map +1 -0
- package/dist/commands/mcp.check.js +114 -0
- package/dist/commands/mcp.check.js.map +1 -0
- package/dist/commands/mcp.d.ts +18 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +183 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/mcp.list.d.ts +9 -0
- package/dist/commands/mcp.list.d.ts.map +1 -0
- package/dist/commands/mcp.list.js +93 -0
- package/dist/commands/mcp.list.js.map +1 -0
- package/dist/commands/mcp.permit.d.ts +12 -0
- package/dist/commands/mcp.permit.d.ts.map +1 -0
- package/dist/commands/mcp.permit.js +117 -0
- package/dist/commands/mcp.permit.js.map +1 -0
- package/dist/commands/mcp.remove.d.ts +9 -0
- package/dist/commands/mcp.remove.d.ts.map +1 -0
- package/dist/commands/mcp.remove.js +65 -0
- package/dist/commands/mcp.remove.js.map +1 -0
- package/dist/commands/plugin.org.install_bulk.js +1 -1
- package/dist/commands/plugin.org.install_bulk.js.map +1 -1
- package/dist/commands/privacy.erase.test.js +7 -0
- package/dist/commands/privacy.erase.test.js.map +1 -1
- package/dist/commands/replay.d.ts +5 -0
- package/dist/commands/replay.d.ts.map +1 -0
- package/dist/commands/replay.js +28 -0
- package/dist/commands/replay.js.map +1 -0
- package/dist/commands/rules.d.ts +19 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +96 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/schema/schema.config.d.ts +3 -0
- package/dist/commands/schema/schema.config.d.ts.map +1 -0
- package/dist/commands/schema/schema.config.js +34 -0
- package/dist/commands/schema/schema.config.js.map +1 -0
- package/dist/commands/schema/schema.disable.d.ts +3 -0
- package/dist/commands/schema/schema.disable.d.ts.map +1 -0
- package/dist/commands/schema/schema.disable.js +22 -0
- package/dist/commands/schema/schema.disable.js.map +1 -0
- package/dist/commands/schema/schema.enable.d.ts +3 -0
- package/dist/commands/schema/schema.enable.d.ts.map +1 -0
- package/dist/commands/schema/schema.enable.js +22 -0
- package/dist/commands/schema/schema.enable.js.map +1 -0
- package/dist/commands/schema/schema.export.d.ts +3 -0
- package/dist/commands/schema/schema.export.d.ts.map +1 -0
- package/dist/commands/schema/schema.export.js +31 -0
- package/dist/commands/schema/schema.export.js.map +1 -0
- package/dist/commands/schema/schema.get.d.ts +3 -0
- package/dist/commands/schema/schema.get.d.ts.map +1 -0
- package/dist/commands/schema/schema.get.js +23 -0
- package/dist/commands/schema/schema.get.js.map +1 -0
- package/dist/commands/schema/schema.label.d.ts +5 -0
- package/dist/commands/schema/schema.label.d.ts.map +1 -0
- package/dist/commands/schema/schema.label.js +60 -0
- package/dist/commands/schema/schema.label.js.map +1 -0
- package/dist/commands/schema/schema.list.d.ts +3 -0
- package/dist/commands/schema/schema.list.d.ts.map +1 -0
- package/dist/commands/schema/schema.list.js +30 -0
- package/dist/commands/schema/schema.list.js.map +1 -0
- package/dist/commands/schema/schema.prop.d.ts +5 -0
- package/dist/commands/schema/schema.prop.d.ts.map +1 -0
- package/dist/commands/schema/schema.prop.js +72 -0
- package/dist/commands/schema/schema.prop.js.map +1 -0
- package/dist/commands/schema/schema.reconcile.d.ts +10 -0
- package/dist/commands/schema/schema.reconcile.d.ts.map +1 -0
- package/dist/commands/schema/schema.reconcile.js +65 -0
- package/dist/commands/schema/schema.reconcile.js.map +1 -0
- package/dist/commands/schema/schema.rel.d.ts +5 -0
- package/dist/commands/schema/schema.rel.d.ts.map +1 -0
- package/dist/commands/schema/schema.rel.js +65 -0
- package/dist/commands/schema/schema.rel.js.map +1 -0
- package/dist/commands/schema/schema.version.d.ts +7 -0
- package/dist/commands/schema/schema.version.d.ts.map +1 -0
- package/dist/commands/schema/schema.version.js +96 -0
- package/dist/commands/schema/schema.version.js.map +1 -0
- package/dist/commands/secret.d.ts +23 -0
- package/dist/commands/secret.d.ts.map +1 -0
- package/dist/commands/secret.js +90 -0
- package/dist/commands/secret.js.map +1 -0
- package/dist/commands/settings.d.ts +10 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +117 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/skill.create.d.ts +3 -0
- package/dist/commands/skill.create.d.ts.map +1 -0
- package/dist/commands/skill.create.js +52 -0
- package/dist/commands/skill.create.js.map +1 -0
- package/dist/commands/skill.enable.d.ts +3 -0
- package/dist/commands/skill.enable.d.ts.map +1 -0
- package/dist/commands/skill.enable.js +31 -0
- package/dist/commands/skill.enable.js.map +1 -0
- package/dist/commands.test.js +1291 -281
- package/dist/commands.test.js.map +1 -1
- package/dist/components/DevStatus.d.ts.map +1 -1
- package/dist/components/DevStatus.js +3 -2
- package/dist/components/DevStatus.js.map +1 -1
- package/dist/daemon/client.d.ts +30 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +97 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/code-graph/builder.d.ts +6 -0
- package/dist/daemon/code-graph/builder.d.ts.map +1 -0
- package/dist/daemon/code-graph/builder.js +215 -0
- package/dist/daemon/code-graph/builder.js.map +1 -0
- package/dist/daemon/code-graph/query.d.ts +29 -0
- package/dist/daemon/code-graph/query.d.ts.map +1 -0
- package/dist/daemon/code-graph/query.js +98 -0
- package/dist/daemon/code-graph/query.js.map +1 -0
- package/dist/daemon/code-graph/types.d.ts +37 -0
- package/dist/daemon/code-graph/types.d.ts.map +1 -0
- package/dist/daemon/code-graph/types.js +5 -0
- package/dist/daemon/code-graph/types.js.map +1 -0
- package/dist/daemon/code-graph/watcher.d.ts +37 -0
- package/dist/daemon/code-graph/watcher.d.ts.map +1 -0
- package/dist/daemon/code-graph/watcher.js +79 -0
- package/dist/daemon/code-graph/watcher.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +6 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +132 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/protocol.d.ts +113 -0
- package/dist/daemon/protocol.d.ts.map +1 -0
- package/dist/daemon/protocol.js +16 -0
- package/dist/daemon/protocol.js.map +1 -0
- package/dist/daemon/server.d.ts +26 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +168 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +559 -357
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +5 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +52 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +8 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/differential-context.d.ts +46 -0
- package/dist/lib/differential-context.d.ts.map +1 -0
- package/dist/lib/differential-context.js +89 -0
- package/dist/lib/differential-context.js.map +1 -0
- package/dist/lib/resolve.d.ts +3 -0
- package/dist/lib/resolve.d.ts.map +1 -0
- package/dist/lib/resolve.js +29 -0
- package/dist/lib/resolve.js.map +1 -0
- package/dist/lib/structured-tool-io.d.ts +31 -0
- package/dist/lib/structured-tool-io.d.ts.map +1 -0
- package/dist/lib/structured-tool-io.js +56 -0
- package/dist/lib/structured-tool-io.js.map +1 -0
- package/dist/mcp/__tests__/client.test.d.ts +2 -0
- package/dist/mcp/__tests__/client.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/client.test.js +101 -0
- package/dist/mcp/__tests__/client.test.js.map +1 -0
- package/dist/mcp/client.d.ts +89 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +201 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/repl/__tests__/_queue_demo.test.d.ts +2 -0
- package/dist/repl/__tests__/_queue_demo.test.d.ts.map +1 -0
- package/dist/repl/__tests__/_queue_demo.test.js +40 -0
- package/dist/repl/__tests__/_queue_demo.test.js.map +1 -0
- package/dist/repl/__tests__/components.test.d.ts +2 -0
- package/dist/repl/__tests__/components.test.d.ts.map +1 -0
- package/dist/repl/__tests__/components.test.js +87 -0
- package/dist/repl/__tests__/components.test.js.map +1 -0
- package/dist/repl/__tests__/interactive.queue.test.d.ts +2 -0
- package/dist/repl/__tests__/interactive.queue.test.d.ts.map +1 -0
- package/dist/repl/__tests__/interactive.queue.test.js +124 -0
- package/dist/repl/__tests__/interactive.queue.test.js.map +1 -0
- package/dist/repl/components.d.ts +76 -0
- package/dist/repl/components.d.ts.map +1 -0
- package/dist/repl/components.js +182 -0
- package/dist/repl/components.js.map +1 -0
- package/dist/repl/interactive.d.ts +17 -0
- package/dist/repl/interactive.d.ts.map +1 -0
- package/dist/repl/interactive.js +439 -0
- package/dist/repl/interactive.js.map +1 -0
- package/dist/repl/one-shot.d.ts +25 -0
- package/dist/repl/one-shot.d.ts.map +1 -0
- package/dist/repl/one-shot.js +153 -0
- package/dist/repl/one-shot.js.map +1 -0
- package/dist/rules/__tests__/enforce.test.d.ts +2 -0
- package/dist/rules/__tests__/enforce.test.d.ts.map +1 -0
- package/dist/rules/__tests__/enforce.test.js +58 -0
- package/dist/rules/__tests__/enforce.test.js.map +1 -0
- package/dist/rules/__tests__/loader.test.d.ts +2 -0
- package/dist/rules/__tests__/loader.test.d.ts.map +1 -0
- package/dist/rules/__tests__/loader.test.js +54 -0
- package/dist/rules/__tests__/loader.test.js.map +1 -0
- package/dist/rules/enforce.d.ts +23 -0
- package/dist/rules/enforce.d.ts.map +1 -0
- package/dist/rules/enforce.js +36 -0
- package/dist/rules/enforce.js.map +1 -0
- package/dist/rules/index.d.ts +10 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +4 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/loader.d.ts +10 -0
- package/dist/rules/loader.d.ts.map +1 -0
- package/dist/rules/loader.js +77 -0
- package/dist/rules/loader.js.map +1 -0
- package/dist/rules/types.d.ts +39 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +16 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/rules/write.d.ts +10 -0
- package/dist/rules/write.d.ts.map +1 -0
- package/dist/rules/write.js +28 -0
- package/dist/rules/write.js.map +1 -0
- package/dist/settings/__tests__/gate.test.d.ts +2 -0
- package/dist/settings/__tests__/gate.test.d.ts.map +1 -0
- package/dist/settings/__tests__/gate.test.js +137 -0
- package/dist/settings/__tests__/gate.test.js.map +1 -0
- package/dist/settings/__tests__/hooks.test.d.ts +2 -0
- package/dist/settings/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/settings/__tests__/hooks.test.js +103 -0
- package/dist/settings/__tests__/hooks.test.js.map +1 -0
- package/dist/settings/__tests__/mcp-write.test.d.ts +2 -0
- package/dist/settings/__tests__/mcp-write.test.d.ts.map +1 -0
- package/dist/settings/__tests__/mcp-write.test.js +77 -0
- package/dist/settings/__tests__/mcp-write.test.js.map +1 -0
- package/dist/settings/__tests__/permissions-gate.test.d.ts +2 -0
- package/dist/settings/__tests__/permissions-gate.test.d.ts.map +1 -0
- package/dist/settings/__tests__/permissions-gate.test.js +75 -0
- package/dist/settings/__tests__/permissions-gate.test.js.map +1 -0
- package/dist/settings/__tests__/resolve.test.d.ts +2 -0
- package/dist/settings/__tests__/resolve.test.d.ts.map +1 -0
- package/dist/settings/__tests__/resolve.test.js +109 -0
- package/dist/settings/__tests__/resolve.test.js.map +1 -0
- package/dist/settings/__tests__/runtime.test.d.ts +2 -0
- package/dist/settings/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/settings/__tests__/runtime.test.js +72 -0
- package/dist/settings/__tests__/runtime.test.js.map +1 -0
- package/dist/settings/__tests__/schema.test.d.ts +2 -0
- package/dist/settings/__tests__/schema.test.d.ts.map +1 -0
- package/dist/settings/__tests__/schema.test.js +55 -0
- package/dist/settings/__tests__/schema.test.js.map +1 -0
- package/dist/settings/__tests__/write.test.d.ts +2 -0
- package/dist/settings/__tests__/write.test.d.ts.map +1 -0
- package/dist/settings/__tests__/write.test.js +61 -0
- package/dist/settings/__tests__/write.test.js.map +1 -0
- package/dist/settings/gate.d.ts +34 -0
- package/dist/settings/gate.d.ts.map +1 -0
- package/dist/settings/gate.js +50 -0
- package/dist/settings/gate.js.map +1 -0
- package/dist/settings/hooks.d.ts +26 -0
- package/dist/settings/hooks.d.ts.map +1 -0
- package/dist/settings/hooks.js +115 -0
- package/dist/settings/hooks.js.map +1 -0
- package/dist/settings/index.d.ts +23 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +23 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/mcp-write.d.ts +41 -0
- package/dist/settings/mcp-write.d.ts.map +1 -0
- package/dist/settings/mcp-write.js +61 -0
- package/dist/settings/mcp-write.js.map +1 -0
- package/dist/settings/permissions-gate.d.ts +19 -0
- package/dist/settings/permissions-gate.d.ts.map +1 -0
- package/dist/settings/permissions-gate.js +103 -0
- package/dist/settings/permissions-gate.js.map +1 -0
- package/dist/settings/resolve.d.ts +37 -0
- package/dist/settings/resolve.d.ts.map +1 -0
- package/dist/settings/resolve.js +169 -0
- package/dist/settings/resolve.js.map +1 -0
- package/dist/settings/runtime.d.ts +28 -0
- package/dist/settings/runtime.d.ts.map +1 -0
- package/dist/settings/runtime.js +45 -0
- package/dist/settings/runtime.js.map +1 -0
- package/dist/settings/schema.d.ts +1387 -0
- package/dist/settings/schema.d.ts.map +1 -0
- package/dist/settings/schema.js +146 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/settings/write.d.ts +37 -0
- package/dist/settings/write.d.ts.map +1 -0
- package/dist/settings/write.js +85 -0
- package/dist/settings/write.js.map +1 -0
- package/dist/slash/__tests__/expand.test.d.ts +2 -0
- package/dist/slash/__tests__/expand.test.d.ts.map +1 -0
- package/dist/slash/__tests__/expand.test.js +44 -0
- package/dist/slash/__tests__/expand.test.js.map +1 -0
- package/dist/slash/__tests__/loader.test.d.ts +2 -0
- package/dist/slash/__tests__/loader.test.d.ts.map +1 -0
- package/dist/slash/__tests__/loader.test.js +48 -0
- package/dist/slash/__tests__/loader.test.js.map +1 -0
- package/dist/slash/expand.d.ts +32 -0
- package/dist/slash/expand.d.ts.map +1 -0
- package/dist/slash/expand.js +48 -0
- package/dist/slash/expand.js.map +1 -0
- package/dist/slash/index.d.ts +11 -0
- package/dist/slash/index.d.ts.map +1 -0
- package/dist/slash/index.js +4 -0
- package/dist/slash/index.js.map +1 -0
- package/dist/slash/loader.d.ts +10 -0
- package/dist/slash/loader.d.ts.map +1 -0
- package/dist/slash/loader.js +64 -0
- package/dist/slash/loader.js.map +1 -0
- package/dist/slash/types.d.ts +24 -0
- package/dist/slash/types.d.ts.map +1 -0
- package/dist/slash/types.js +11 -0
- package/dist/slash/types.js.map +1 -0
- package/dist/slash/write.d.ts +10 -0
- package/dist/slash/write.d.ts.map +1 -0
- package/dist/slash/write.js +26 -0
- package/dist/slash/write.js.map +1 -0
- package/dist/tui/__tests__/app.test.d.ts +2 -0
- package/dist/tui/__tests__/app.test.d.ts.map +1 -0
- package/dist/tui/__tests__/app.test.js +136 -0
- package/dist/tui/__tests__/app.test.js.map +1 -0
- package/dist/tui/__tests__/banner.test.d.ts +2 -0
- package/dist/tui/__tests__/banner.test.d.ts.map +1 -0
- package/dist/tui/__tests__/banner.test.js +15 -0
- package/dist/tui/__tests__/banner.test.js.map +1 -0
- package/dist/tui/__tests__/command-form.test.d.ts +2 -0
- package/dist/tui/__tests__/command-form.test.d.ts.map +1 -0
- package/dist/tui/__tests__/command-form.test.js +96 -0
- package/dist/tui/__tests__/command-form.test.js.map +1 -0
- package/dist/tui/__tests__/command-tree.test.d.ts +2 -0
- package/dist/tui/__tests__/command-tree.test.d.ts.map +1 -0
- package/dist/tui/__tests__/command-tree.test.js +55 -0
- package/dist/tui/__tests__/command-tree.test.js.map +1 -0
- package/dist/tui/__tests__/runner.test.d.ts +2 -0
- package/dist/tui/__tests__/runner.test.d.ts.map +1 -0
- package/dist/tui/__tests__/runner.test.js +38 -0
- package/dist/tui/__tests__/runner.test.js.map +1 -0
- package/dist/tui/__tests__/theme.test.d.ts +2 -0
- package/dist/tui/__tests__/theme.test.d.ts.map +1 -0
- package/dist/tui/__tests__/theme.test.js +11 -0
- package/dist/tui/__tests__/theme.test.js.map +1 -0
- package/dist/tui/agent-view/activity-feed.d.ts +3 -0
- package/dist/tui/agent-view/activity-feed.d.ts.map +1 -0
- package/dist/tui/agent-view/activity-feed.js +34 -0
- package/dist/tui/agent-view/activity-feed.js.map +1 -0
- package/dist/tui/agent-view/budget-bar.d.ts +3 -0
- package/dist/tui/agent-view/budget-bar.d.ts.map +1 -0
- package/dist/tui/agent-view/budget-bar.js +53 -0
- package/dist/tui/agent-view/budget-bar.js.map +1 -0
- package/dist/tui/agent-view/compile-panel.d.ts +3 -0
- package/dist/tui/agent-view/compile-panel.d.ts.map +1 -0
- package/dist/tui/agent-view/compile-panel.js +34 -0
- package/dist/tui/agent-view/compile-panel.js.map +1 -0
- package/dist/tui/agent-view/index.d.ts +4 -0
- package/dist/tui/agent-view/index.d.ts.map +1 -0
- package/dist/tui/agent-view/index.js +31 -0
- package/dist/tui/agent-view/index.js.map +1 -0
- package/dist/tui/agent-view/memory-panel.d.ts +3 -0
- package/dist/tui/agent-view/memory-panel.d.ts.map +1 -0
- package/dist/tui/agent-view/memory-panel.js +80 -0
- package/dist/tui/agent-view/memory-panel.js.map +1 -0
- package/dist/tui/agent-view/session-panel.d.ts +3 -0
- package/dist/tui/agent-view/session-panel.d.ts.map +1 -0
- package/dist/tui/agent-view/session-panel.js +44 -0
- package/dist/tui/agent-view/session-panel.js.map +1 -0
- package/dist/tui/agent-view/status-bar.d.ts +7 -0
- package/dist/tui/agent-view/status-bar.d.ts.map +1 -0
- package/dist/tui/agent-view/status-bar.js +22 -0
- package/dist/tui/agent-view/status-bar.js.map +1 -0
- package/dist/tui/app.d.ts +9 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +115 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/banner.d.ts +5 -0
- package/dist/tui/banner.d.ts.map +1 -0
- package/dist/tui/banner.js +17 -0
- package/dist/tui/banner.js.map +1 -0
- package/dist/tui/command-form.d.ts +9 -0
- package/dist/tui/command-form.d.ts.map +1 -0
- package/dist/tui/command-form.js +76 -0
- package/dist/tui/command-form.js.map +1 -0
- package/dist/tui/command-tree.d.ts +30 -0
- package/dist/tui/command-tree.d.ts.map +1 -0
- package/dist/tui/command-tree.js +43 -0
- package/dist/tui/command-tree.js.map +1 -0
- package/dist/tui/fleet-view/agent-row.d.ts +10 -0
- package/dist/tui/fleet-view/agent-row.d.ts.map +1 -0
- package/dist/tui/fleet-view/agent-row.js +80 -0
- package/dist/tui/fleet-view/agent-row.js.map +1 -0
- package/dist/tui/fleet-view/dispatch-input.d.ts +5 -0
- package/dist/tui/fleet-view/dispatch-input.d.ts.map +1 -0
- package/dist/tui/fleet-view/dispatch-input.js +36 -0
- package/dist/tui/fleet-view/dispatch-input.js.map +1 -0
- package/dist/tui/fleet-view/fleet-app.d.ts +11 -0
- package/dist/tui/fleet-view/fleet-app.d.ts.map +1 -0
- package/dist/tui/fleet-view/fleet-app.js +95 -0
- package/dist/tui/fleet-view/fleet-app.js.map +1 -0
- package/dist/tui/fleet-view/fleet-summary.d.ts +6 -0
- package/dist/tui/fleet-view/fleet-summary.d.ts.map +1 -0
- package/dist/tui/fleet-view/fleet-summary.js +19 -0
- package/dist/tui/fleet-view/fleet-summary.js.map +1 -0
- package/dist/tui/fleet-view/index.d.ts +16 -0
- package/dist/tui/fleet-view/index.d.ts.map +1 -0
- package/dist/tui/fleet-view/index.js +65 -0
- package/dist/tui/fleet-view/index.js.map +1 -0
- package/dist/tui/runner.d.ts +7 -0
- package/dist/tui/runner.d.ts.map +1 -0
- package/dist/tui/runner.js +36 -0
- package/dist/tui/runner.js.map +1 -0
- package/dist/tui/theme.d.ts +8 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +10 -0
- package/dist/tui/theme.js.map +1 -0
- package/package.json +16 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* schema.ts — The unified `settings.json` schema that drives the Oxagen CLI.
|
|
3
|
+
*
|
|
4
|
+
* This is the CLI harness spine: a single file format, resolved across three
|
|
5
|
+
* scopes (see resolve.ts), that configures the CLI's behavior the way Claude
|
|
6
|
+
* Code's `settings.json` does. Sections:
|
|
7
|
+
*
|
|
8
|
+
* - model default gateway model slug for the agent loop
|
|
9
|
+
* - apiUrl Oxagen platform API base URL
|
|
10
|
+
* - env environment variables made available to the session
|
|
11
|
+
* - permissions allow/deny rules + default mode for the agent's local tools
|
|
12
|
+
* - hooks shell commands fired on lifecycle events (SessionStart /
|
|
13
|
+
* PreToolUse / PostToolUse) — PreToolUse can block a tool
|
|
14
|
+
* - mcpServers external MCP server definitions (reused from @oxagen/mcp-config)
|
|
15
|
+
* - toolVisibility per-MCP-server tool include/exclude (reused from @oxagen/mcp-config)
|
|
16
|
+
*
|
|
17
|
+
* Credentials (token / org / workspace / gatewayKey) intentionally do NOT live
|
|
18
|
+
* here — they stay in the user-only `config.json` credential store so a project
|
|
19
|
+
* `settings.json` is safe to commit. This mirrors Claude Code, which keeps
|
|
20
|
+
* `.credentials.json` separate from `settings.json`.
|
|
21
|
+
*
|
|
22
|
+
* The MCP sections deliberately reuse the schemas from `@oxagen/mcp-config` so a
|
|
23
|
+
* single `settings.json` validates identically here and in the platform agent
|
|
24
|
+
* runtime that already reads MCP servers from the same file — no second source
|
|
25
|
+
* of truth, no drift.
|
|
26
|
+
*/
|
|
27
|
+
import { z } from "zod";
|
|
28
|
+
import { mcpServerSchema, serverPermissionSchema, toolVisibilitySchema, } from "@oxagen/mcp-config/schema";
|
|
29
|
+
// ── Permissions ───────────────────────────────────────────────────────────────
|
|
30
|
+
/**
|
|
31
|
+
* Permission mode when no explicit allow/deny rule matches a tool call.
|
|
32
|
+
*
|
|
33
|
+
* - "default" / "acceptEdits" → allow unless a deny rule matches
|
|
34
|
+
* - "deny" → block unless an allow rule matches (deny-by-default)
|
|
35
|
+
* - "bypassPermissions" → allow everything (deny rules still take priority)
|
|
36
|
+
*
|
|
37
|
+
* Enforced for the agent's local tools in gate.ts. (Interactive "ask"/"plan"
|
|
38
|
+
* prompting lands with the MCP-client PR; only the modes enforced today are
|
|
39
|
+
* accepted here so the schema never advertises behavior that does not exist.)
|
|
40
|
+
*/
|
|
41
|
+
export const permissionModeSchema = z.enum([
|
|
42
|
+
"default",
|
|
43
|
+
"acceptEdits",
|
|
44
|
+
"deny",
|
|
45
|
+
"bypassPermissions",
|
|
46
|
+
]);
|
|
47
|
+
/**
|
|
48
|
+
* Permission rules for the agent's local tools, in Claude Code's rule syntax:
|
|
49
|
+
*
|
|
50
|
+
* "Bash" → the whole bash tool
|
|
51
|
+
* "Bash(git*)" → bash commands matching the glob `git*`
|
|
52
|
+
* "Write" → any file write
|
|
53
|
+
* "Write(src/**)" → writes whose path matches `src/**`
|
|
54
|
+
* "Read(.env*)" → reads whose path matches `.env*`
|
|
55
|
+
* "mcp__github__*" → (reserved for the MCP gate) any tool on the `github` server
|
|
56
|
+
*
|
|
57
|
+
* `deny` always wins over `allow` at the same scope. The MCP-specific
|
|
58
|
+
* `defaultMcpPolicy` / `mcpServers` fields are carried through unchanged so the
|
|
59
|
+
* same `permissions` object also feeds @oxagen/mcp-config's per-server gate when
|
|
60
|
+
* the MCP client lands.
|
|
61
|
+
*/
|
|
62
|
+
export const permissionsSchema = z.object({
|
|
63
|
+
/** Mode applied when no allow/deny rule matches. Default: "default". */
|
|
64
|
+
defaultMode: permissionModeSchema.optional(),
|
|
65
|
+
/** Rules that explicitly permit a tool call (escape hatch from deny mode). */
|
|
66
|
+
allow: z.array(z.string()).optional(),
|
|
67
|
+
/** Rules that explicitly block a tool call. Highest priority. */
|
|
68
|
+
deny: z.array(z.string()).optional(),
|
|
69
|
+
// ── MCP compatibility (consumed by @oxagen/mcp-config, not by gate.ts) ──
|
|
70
|
+
/** Global default policy for MCP tool invocations. */
|
|
71
|
+
defaultMcpPolicy: z.enum(["allow", "deny", "ask"]).optional(),
|
|
72
|
+
/** Per-MCP-server permission overrides, keyed by server name. */
|
|
73
|
+
mcpServers: z.record(serverPermissionSchema).optional(),
|
|
74
|
+
});
|
|
75
|
+
// ── Hooks ─────────────────────────────────────────────────────────────────────
|
|
76
|
+
/** Lifecycle events a hook can fire on. */
|
|
77
|
+
export const HOOK_EVENTS = [
|
|
78
|
+
"SessionStart",
|
|
79
|
+
"PreToolUse",
|
|
80
|
+
"PostToolUse",
|
|
81
|
+
];
|
|
82
|
+
/** A single shell command a hook runs. */
|
|
83
|
+
export const hookActionSchema = z.object({
|
|
84
|
+
/** Only "command" hooks are supported. */
|
|
85
|
+
type: z.literal("command").default("command"),
|
|
86
|
+
/** Shell command. Receives the event payload as JSON on stdin. */
|
|
87
|
+
command: z.string().min(1),
|
|
88
|
+
/** Per-hook timeout in milliseconds (default 60000, max 600000). */
|
|
89
|
+
timeoutMs: z.number().int().positive().max(600_000).optional(),
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* A matcher groups hook actions under a tool-name pattern. For PreToolUse /
|
|
93
|
+
* PostToolUse, `matcher` is a glob over the tool name (e.g. "bash",
|
|
94
|
+
* "write_file", "*"). For SessionStart it is ignored (all actions run).
|
|
95
|
+
*/
|
|
96
|
+
export const hookMatcherSchema = z.object({
|
|
97
|
+
/** Glob over the tool name. Omit (or "*") to match every tool. */
|
|
98
|
+
matcher: z.string().optional(),
|
|
99
|
+
/** Actions to run when this matcher matches. */
|
|
100
|
+
hooks: z.array(hookActionSchema).min(1),
|
|
101
|
+
});
|
|
102
|
+
/** Hooks keyed by lifecycle event. */
|
|
103
|
+
export const hooksSchema = z.object({
|
|
104
|
+
SessionStart: z.array(hookMatcherSchema).optional(),
|
|
105
|
+
PreToolUse: z.array(hookMatcherSchema).optional(),
|
|
106
|
+
PostToolUse: z.array(hookMatcherSchema).optional(),
|
|
107
|
+
});
|
|
108
|
+
// ── Inline agent definitions ──────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* A named agent declared inline in settings.json (an alternative to a markdown
|
|
111
|
+
* file under `.oxagen/agents/`). `prompt` is the system prompt; `tools` is the
|
|
112
|
+
* permission-syntax allowlist (omit to inherit every tool).
|
|
113
|
+
*/
|
|
114
|
+
export const inlineAgentSchema = z.object({
|
|
115
|
+
description: z.string().optional(),
|
|
116
|
+
prompt: z.string().min(1),
|
|
117
|
+
tools: z.array(z.string()).optional(),
|
|
118
|
+
model: z.string().optional(),
|
|
119
|
+
});
|
|
120
|
+
// ── Top-level settings ────────────────────────────────────────────────────────
|
|
121
|
+
export const oxagenSettingsSchema = z
|
|
122
|
+
.object({
|
|
123
|
+
/** Optional JSON-Schema reference for editor autocompletion. */
|
|
124
|
+
$schema: z.string().optional(),
|
|
125
|
+
/** Default gateway model slug for the agent loop (e.g. "anthropic/claude-sonnet-4.6"). */
|
|
126
|
+
model: z.string().optional(),
|
|
127
|
+
/** Oxagen platform API base URL (overrides config.json; env still wins). */
|
|
128
|
+
apiUrl: z.string().url().optional(),
|
|
129
|
+
/** Environment variables exported into the session (fills only unset vars; shell wins). */
|
|
130
|
+
env: z.record(z.string()).optional(),
|
|
131
|
+
/** Allow/deny rules + default mode for the agent's local tools. */
|
|
132
|
+
permissions: permissionsSchema.optional(),
|
|
133
|
+
/** Shell commands fired on lifecycle events. */
|
|
134
|
+
hooks: hooksSchema.optional(),
|
|
135
|
+
/** External MCP server definitions, keyed by name. */
|
|
136
|
+
mcpServers: z.record(mcpServerSchema).optional(),
|
|
137
|
+
/** Per-MCP-server tool visibility, keyed by server name. */
|
|
138
|
+
toolVisibility: z.record(toolVisibilitySchema).optional(),
|
|
139
|
+
/** Inline named agent definitions, keyed by agent name. */
|
|
140
|
+
agents: z.record(inlineAgentSchema).optional(),
|
|
141
|
+
})
|
|
142
|
+
// Forward-compatible: sections that land in later PRs (agents, commands,
|
|
143
|
+
// skills) may already be present in a user's file; pass them through rather
|
|
144
|
+
// than failing validation, so the file format is stable across the rollout.
|
|
145
|
+
.passthrough();
|
|
146
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/settings/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type OxagenSettings } from "./schema.js";
|
|
2
|
+
import { type SettingsScope } from "./resolve.js";
|
|
3
|
+
/** Keys `oxagen settings set` accepts. Complex sections are edited in the file. */
|
|
4
|
+
export declare const SETTABLE_KEYS: readonly ["model", "apiUrl"];
|
|
5
|
+
export interface WriteValueOptions {
|
|
6
|
+
scope: SettingsScope;
|
|
7
|
+
/** "model", "apiUrl", or "env.<NAME>". */
|
|
8
|
+
key: string;
|
|
9
|
+
value: string;
|
|
10
|
+
cwd?: string;
|
|
11
|
+
userSettingsPath?: string;
|
|
12
|
+
projectDirName?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Read a single scope file as a raw JSON object (empty if absent). */
|
|
15
|
+
export declare function readScopeDoc(path: string): Record<string, unknown>;
|
|
16
|
+
/** Validate and write a settings document to a scope file, busting the cache. */
|
|
17
|
+
export declare function writeScopeDoc(path: string, doc: OxagenSettings): void;
|
|
18
|
+
/**
|
|
19
|
+
* Set a single value in a scope file. Supports scalar keys (`model`, `apiUrl`)
|
|
20
|
+
* and env vars via the `env.NAME` form. Returns the path written.
|
|
21
|
+
*/
|
|
22
|
+
export declare function writeSettingsValue(opts: WriteValueOptions): string;
|
|
23
|
+
export interface InitOptions {
|
|
24
|
+
scope: SettingsScope;
|
|
25
|
+
cwd?: string;
|
|
26
|
+
userSettingsPath?: string;
|
|
27
|
+
projectDirName?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Write a documented starter settings file for a scope. Returns the path and
|
|
31
|
+
* whether it was newly created (false = already existed, left untouched).
|
|
32
|
+
*/
|
|
33
|
+
export declare function writeStarterSettings(opts: InitOptions): {
|
|
34
|
+
path: string;
|
|
35
|
+
created: boolean;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/settings/write.ts"],"names":[],"mappings":"AAUA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAErF,mFAAmF;AACnF,eAAO,MAAM,aAAa,8BAA+B,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,aAAa,CAAC;IACrB,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOlE;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAKrE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAsBlE;AAkBD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAM1F"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* write.ts — Writers for `oxagen settings set` and `oxagen settings init`.
|
|
3
|
+
*
|
|
4
|
+
* Writes target a single scope file (user / project / local) — never the merged
|
|
5
|
+
* view — so the layering stays meaningful. Every write is validated against the
|
|
6
|
+
* unified schema before it touches disk, so a `set` can never produce an invalid
|
|
7
|
+
* settings file.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
10
|
+
import { dirname } from "node:path";
|
|
11
|
+
import { oxagenSettingsSchema } from "./schema.js";
|
|
12
|
+
import { getScopePaths, clearSettingsCache } from "./resolve.js";
|
|
13
|
+
/** Keys `oxagen settings set` accepts. Complex sections are edited in the file. */
|
|
14
|
+
export const SETTABLE_KEYS = ["model", "apiUrl"];
|
|
15
|
+
/** Read a single scope file as a raw JSON object (empty if absent). */
|
|
16
|
+
export function readScopeDoc(path) {
|
|
17
|
+
if (!existsSync(path))
|
|
18
|
+
return {};
|
|
19
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
20
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
21
|
+
throw new Error(`existing settings file is not a JSON object: ${path}`);
|
|
22
|
+
}
|
|
23
|
+
return parsed;
|
|
24
|
+
}
|
|
25
|
+
/** Validate and write a settings document to a scope file, busting the cache. */
|
|
26
|
+
export function writeScopeDoc(path, doc) {
|
|
27
|
+
const validated = oxagenSettingsSchema.parse(doc);
|
|
28
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
29
|
+
writeFileSync(path, JSON.stringify(validated, null, 2) + "\n", "utf8");
|
|
30
|
+
clearSettingsCache();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Set a single value in a scope file. Supports scalar keys (`model`, `apiUrl`)
|
|
34
|
+
* and env vars via the `env.NAME` form. Returns the path written.
|
|
35
|
+
*/
|
|
36
|
+
export function writeSettingsValue(opts) {
|
|
37
|
+
const paths = getScopePaths(opts);
|
|
38
|
+
const path = paths[opts.scope];
|
|
39
|
+
const doc = readScopeDoc(path);
|
|
40
|
+
if (opts.key.startsWith("env.")) {
|
|
41
|
+
const name = opts.key.slice("env.".length);
|
|
42
|
+
if (!name)
|
|
43
|
+
throw new Error('env key must be "env.<NAME>"');
|
|
44
|
+
const env = doc["env"] ?? {};
|
|
45
|
+
env[name] = opts.value;
|
|
46
|
+
doc["env"] = env;
|
|
47
|
+
}
|
|
48
|
+
else if (SETTABLE_KEYS.includes(opts.key)) {
|
|
49
|
+
doc[opts.key] = opts.value;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw new Error(`cannot set "${opts.key}". Settable: ${SETTABLE_KEYS.join(", ")}, env.<NAME>. ` +
|
|
53
|
+
`Edit ${path} directly for permissions / hooks / mcpServers.`);
|
|
54
|
+
}
|
|
55
|
+
writeScopeDoc(path, doc);
|
|
56
|
+
return path;
|
|
57
|
+
}
|
|
58
|
+
const STARTER = {
|
|
59
|
+
$schema: "https://oxagen.sh/schemas/cli-settings.json",
|
|
60
|
+
model: "anthropic/claude-sonnet-4.6",
|
|
61
|
+
env: {},
|
|
62
|
+
permissions: {
|
|
63
|
+
defaultMode: "default",
|
|
64
|
+
deny: ["Bash(rm -rf*)", "Write(.env*)", "Read(.env*)"],
|
|
65
|
+
allow: [],
|
|
66
|
+
},
|
|
67
|
+
hooks: {
|
|
68
|
+
PreToolUse: [],
|
|
69
|
+
PostToolUse: [],
|
|
70
|
+
SessionStart: [],
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Write a documented starter settings file for a scope. Returns the path and
|
|
75
|
+
* whether it was newly created (false = already existed, left untouched).
|
|
76
|
+
*/
|
|
77
|
+
export function writeStarterSettings(opts) {
|
|
78
|
+
const paths = getScopePaths(opts);
|
|
79
|
+
const path = paths[opts.scope];
|
|
80
|
+
if (existsSync(path))
|
|
81
|
+
return { path, created: false };
|
|
82
|
+
writeScopeDoc(path, STARTER);
|
|
83
|
+
return { path, created: true };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/settings/write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.test.d.ts","sourceRoot":"","sources":["../../../src/slash/__tests__/expand.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { parseInvocation, applyArgs, expandSlash } from "../expand.js";
|
|
3
|
+
function registry(...cmds) {
|
|
4
|
+
const m = new Map();
|
|
5
|
+
for (const c of cmds)
|
|
6
|
+
m.set(c.name, { description: "", source: "test", ...c });
|
|
7
|
+
return m;
|
|
8
|
+
}
|
|
9
|
+
describe("parseInvocation", () => {
|
|
10
|
+
it("splits name and args", () => {
|
|
11
|
+
expect(parseInvocation("/review src/x.ts here")).toEqual({ name: "review", args: "src/x.ts here" });
|
|
12
|
+
});
|
|
13
|
+
it("handles a bare command", () => {
|
|
14
|
+
expect(parseInvocation("/status")).toEqual({ name: "status", args: "" });
|
|
15
|
+
});
|
|
16
|
+
it("returns null for non-slash input", () => {
|
|
17
|
+
expect(parseInvocation("hello")).toBeNull();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe("applyArgs", () => {
|
|
21
|
+
it("substitutes $ARGUMENTS", () => {
|
|
22
|
+
expect(applyArgs("Review: $ARGUMENTS", "a b c")).toBe("Review: a b c");
|
|
23
|
+
});
|
|
24
|
+
it("substitutes positional $1/$2 and blanks missing ones", () => {
|
|
25
|
+
expect(applyArgs("$1 vs $2 vs $3", "one two")).toBe("one vs two vs ");
|
|
26
|
+
});
|
|
27
|
+
it("leaves the template intact when there are no placeholders", () => {
|
|
28
|
+
expect(applyArgs("no placeholders", "x")).toBe("no placeholders");
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe("expandSlash", () => {
|
|
32
|
+
const reg = registry({ name: "review", template: "Review $ARGUMENTS for bugs.", model: "a/b" }, { name: "explain", template: "Explain $1." });
|
|
33
|
+
it("expands a known command and carries its model", () => {
|
|
34
|
+
const res = expandSlash("/review src/auth.ts", reg);
|
|
35
|
+
expect(res).toEqual({ command: "review", prompt: "Review src/auth.ts for bugs.", model: "a/b" });
|
|
36
|
+
});
|
|
37
|
+
it("returns null for an unknown command", () => {
|
|
38
|
+
expect(expandSlash("/nope x", reg)).toBeNull();
|
|
39
|
+
});
|
|
40
|
+
it("returns an error for non-slash input", () => {
|
|
41
|
+
expect(expandSlash("hello", reg)).toEqual({ error: "not a slash command" });
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=expand.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.test.js","sourceRoot":"","sources":["../../../src/slash/__tests__/expand.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../../src/slash/__tests__/loader.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { loadCommands } from "../loader.js";
|
|
6
|
+
let dir;
|
|
7
|
+
let userDir;
|
|
8
|
+
function writeCmd(rel, body) {
|
|
9
|
+
const path = join(dir, rel);
|
|
10
|
+
mkdirSync(join(path, ".."), { recursive: true });
|
|
11
|
+
writeFileSync(path, body, "utf8");
|
|
12
|
+
}
|
|
13
|
+
const load = () => loadCommands({ cwd: dir, userCommandsDir: userDir });
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
dir = mkdtempSync(join(tmpdir(), "oxagen-slash-"));
|
|
16
|
+
userDir = join(dir, "user-commands");
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => rmSync(dir, { recursive: true, force: true }));
|
|
19
|
+
describe("loadCommands", () => {
|
|
20
|
+
it("loads a command with frontmatter and body template", () => {
|
|
21
|
+
writeCmd(".oxagen/commands/review.md", "---\ndescription: Review code\nargument-hint: <file>\nmodel: a/b\n---\nReview $ARGUMENTS.");
|
|
22
|
+
const cmd = load().get("review");
|
|
23
|
+
expect(cmd?.description).toBe("Review code");
|
|
24
|
+
expect(cmd?.argumentHint).toBe("<file>");
|
|
25
|
+
expect(cmd?.model).toBe("a/b");
|
|
26
|
+
expect(cmd?.template).toBe("Review $ARGUMENTS.");
|
|
27
|
+
});
|
|
28
|
+
it("defaults the name to the filename", () => {
|
|
29
|
+
writeCmd(".oxagen/commands/deploy.md", "Do the deploy: $ARGUMENTS");
|
|
30
|
+
expect(load().get("deploy")?.name).toBe("deploy");
|
|
31
|
+
});
|
|
32
|
+
it(".oxagen overrides .claude overrides user", () => {
|
|
33
|
+
mkdirSync(userDir, { recursive: true });
|
|
34
|
+
writeFileSync(join(userDir, "x.md"), "user body");
|
|
35
|
+
writeCmd(".claude/commands/x.md", "claude body");
|
|
36
|
+
expect(load().get("x")?.template).toBe("claude body");
|
|
37
|
+
writeCmd(".oxagen/commands/x.md", "oxagen body");
|
|
38
|
+
expect(load().get("x")?.template).toBe("oxagen body");
|
|
39
|
+
});
|
|
40
|
+
it("ignores files with an empty body", () => {
|
|
41
|
+
writeCmd(".oxagen/commands/empty.md", "---\ndescription: d\n---\n");
|
|
42
|
+
expect(load().has("empty")).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
it("returns an empty registry when nothing is defined", () => {
|
|
45
|
+
expect(load().size).toBe(0);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=loader.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../../src/slash/__tests__/loader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* expand.ts — Turn a `/name args` invocation into a concrete prompt.
|
|
3
|
+
*
|
|
4
|
+
* Substitution in the template:
|
|
5
|
+
* - $ARGUMENTS the full argument string
|
|
6
|
+
* - $1 … $9 positional arguments (whitespace-split); missing → ""
|
|
7
|
+
*
|
|
8
|
+
* Returns the expanded prompt (and any model override), an error, or null when
|
|
9
|
+
* the input does not name a known command (so the REPL can say "unknown").
|
|
10
|
+
*/
|
|
11
|
+
import { type LoadCommandsOptions } from "./loader.js";
|
|
12
|
+
import type { SlashCommand } from "./types.js";
|
|
13
|
+
export interface SlashExpansion {
|
|
14
|
+
command: string;
|
|
15
|
+
prompt: string;
|
|
16
|
+
model?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SlashError {
|
|
19
|
+
error: string;
|
|
20
|
+
}
|
|
21
|
+
/** Parse "/review src/x here" → { name: "review", args: "src/x here" }. */
|
|
22
|
+
export declare function parseInvocation(input: string): {
|
|
23
|
+
name: string;
|
|
24
|
+
args: string;
|
|
25
|
+
} | null;
|
|
26
|
+
/** Apply $ARGUMENTS / $1..$9 substitution to a template. */
|
|
27
|
+
export declare function applyArgs(template: string, args: string): string;
|
|
28
|
+
/** Expand against an already-loaded registry. Returns null if name is unknown. */
|
|
29
|
+
export declare function expandSlash(input: string, registry: Map<string, SlashCommand>): SlashExpansion | SlashError | null;
|
|
30
|
+
/** Load the registry and expand in one call (REPL convenience). */
|
|
31
|
+
export declare function loadAndExpand(input: string, opts?: LoadCommandsOptions): SlashExpansion | SlashError | null;
|
|
32
|
+
//# sourceMappingURL=expand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../src/slash/expand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOpF;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAClC,cAAc,GAAG,UAAU,GAAG,IAAI,CAUpC;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,mBAAwB,GAC7B,cAAc,GAAG,UAAU,GAAG,IAAI,CAEpC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* expand.ts — Turn a `/name args` invocation into a concrete prompt.
|
|
3
|
+
*
|
|
4
|
+
* Substitution in the template:
|
|
5
|
+
* - $ARGUMENTS the full argument string
|
|
6
|
+
* - $1 … $9 positional arguments (whitespace-split); missing → ""
|
|
7
|
+
*
|
|
8
|
+
* Returns the expanded prompt (and any model override), an error, or null when
|
|
9
|
+
* the input does not name a known command (so the REPL can say "unknown").
|
|
10
|
+
*/
|
|
11
|
+
import { loadCommands } from "./loader.js";
|
|
12
|
+
/** Parse "/review src/x here" → { name: "review", args: "src/x here" }. */
|
|
13
|
+
export function parseInvocation(input) {
|
|
14
|
+
const trimmed = input.trim();
|
|
15
|
+
if (!trimmed.startsWith("/"))
|
|
16
|
+
return null;
|
|
17
|
+
const rest = trimmed.slice(1);
|
|
18
|
+
const space = rest.search(/\s/);
|
|
19
|
+
if (space === -1)
|
|
20
|
+
return { name: rest, args: "" };
|
|
21
|
+
return { name: rest.slice(0, space), args: rest.slice(space + 1).trim() };
|
|
22
|
+
}
|
|
23
|
+
/** Apply $ARGUMENTS / $1..$9 substitution to a template. */
|
|
24
|
+
export function applyArgs(template, args) {
|
|
25
|
+
const positionals = args.length > 0 ? args.split(/\s+/) : [];
|
|
26
|
+
return template
|
|
27
|
+
.replace(/\$ARGUMENTS\b/g, args)
|
|
28
|
+
.replace(/\$([1-9])\b/g, (_, d) => positionals[Number(d) - 1] ?? "");
|
|
29
|
+
}
|
|
30
|
+
/** Expand against an already-loaded registry. Returns null if name is unknown. */
|
|
31
|
+
export function expandSlash(input, registry) {
|
|
32
|
+
const parsed = parseInvocation(input);
|
|
33
|
+
if (!parsed)
|
|
34
|
+
return { error: "not a slash command" };
|
|
35
|
+
const command = registry.get(parsed.name);
|
|
36
|
+
if (!command)
|
|
37
|
+
return null;
|
|
38
|
+
return {
|
|
39
|
+
command: command.name,
|
|
40
|
+
prompt: applyArgs(command.template, parsed.args),
|
|
41
|
+
model: command.model,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** Load the registry and expand in one call (REPL convenience). */
|
|
45
|
+
export function loadAndExpand(input, opts = {}) {
|
|
46
|
+
return expandSlash(input, loadCommands(opts));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/slash/expand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AAarE,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC5E,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,IAAY;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,QAAQ;SACZ,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;SAC/B,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,QAAmC;IAEnC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;QAChD,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,OAA4B,EAAE;IAE9B,OAAO,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module slash — User-defined slash commands for the CLI.
|
|
3
|
+
*
|
|
4
|
+
* Reusable prompt templates invoked as `/name args` in the REPL or via
|
|
5
|
+
* `oxagen command run name args`, loaded from markdown.
|
|
6
|
+
*/
|
|
7
|
+
export type { SlashCommand } from "./types.js";
|
|
8
|
+
export { loadCommands, type LoadCommandsOptions } from "./loader.js";
|
|
9
|
+
export { expandSlash, loadAndExpand, parseInvocation, applyArgs, type SlashExpansion, type SlashError, } from "./expand.js";
|
|
10
|
+
export { scaffoldCommand } from "./write.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/slash/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slash/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AACrE,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,SAAS,GAGV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SlashCommand } from "./types.js";
|
|
2
|
+
export interface LoadCommandsOptions {
|
|
3
|
+
/** Project root. Defaults to process.cwd(). */
|
|
4
|
+
cwd?: string;
|
|
5
|
+
/** Override the user commands dir (testing). */
|
|
6
|
+
userCommandsDir?: string;
|
|
7
|
+
}
|
|
8
|
+
/** Load every slash command visible from `cwd`, merged by name across sources. */
|
|
9
|
+
export declare function loadCommands(opts?: LoadCommandsOptions): Map<string, SlashCommand>;
|
|
10
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/slash/loader.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAoCD,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAQtF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* loader.ts — Discover and parse user-defined slash commands.
|
|
3
|
+
*
|
|
4
|
+
* Sources, lowest → highest precedence (later overrides by name):
|
|
5
|
+
* 1. ~/.config/oxagen/commands/*.md (user)
|
|
6
|
+
* 2. <project>/.claude/commands/*.md (Claude Code interop)
|
|
7
|
+
* 3. <project>/.oxagen/commands/*.md (oxagen project commands)
|
|
8
|
+
*
|
|
9
|
+
* Reuses the agent loader's frontmatter parser. Frontmatter keys: description,
|
|
10
|
+
* `argument-hint`, model. The body is the prompt template.
|
|
11
|
+
*/
|
|
12
|
+
import { readdirSync, existsSync } from "node:fs";
|
|
13
|
+
import { join, basename } from "node:path";
|
|
14
|
+
import { homedir } from "node:os";
|
|
15
|
+
import { readFileSync } from "node:fs";
|
|
16
|
+
import { parseFrontmatter } from "../agents/loader.js";
|
|
17
|
+
function defFromFile(path) {
|
|
18
|
+
let raw;
|
|
19
|
+
try {
|
|
20
|
+
raw = readFileSync(path, "utf8");
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const { data, body } = parseFrontmatter(raw);
|
|
26
|
+
const name = data["name"] || basename(path).replace(/\.md$/, "");
|
|
27
|
+
if (!name || !body.trim())
|
|
28
|
+
return null; // a command needs a name and a template
|
|
29
|
+
return {
|
|
30
|
+
name,
|
|
31
|
+
description: data["description"] ?? "",
|
|
32
|
+
template: body,
|
|
33
|
+
argumentHint: data["argument-hint"] || undefined,
|
|
34
|
+
model: data["model"] || undefined,
|
|
35
|
+
source: path,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function loadDir(dir, into) {
|
|
39
|
+
if (!existsSync(dir))
|
|
40
|
+
return;
|
|
41
|
+
let files;
|
|
42
|
+
try {
|
|
43
|
+
files = readdirSync(dir).filter((f) => f.endsWith(".md"));
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const file of files.sort()) {
|
|
49
|
+
const def = defFromFile(join(dir, file));
|
|
50
|
+
if (def)
|
|
51
|
+
into.set(def.name, def);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Load every slash command visible from `cwd`, merged by name across sources. */
|
|
55
|
+
export function loadCommands(opts = {}) {
|
|
56
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
57
|
+
const userDir = opts.userCommandsDir ?? join(homedir(), ".config", "oxagen", "commands");
|
|
58
|
+
const registry = new Map();
|
|
59
|
+
loadDir(userDir, registry);
|
|
60
|
+
loadDir(join(cwd, ".claude", "commands"), registry);
|
|
61
|
+
loadDir(join(cwd, ".oxagen", "commands"), registry);
|
|
62
|
+
return registry;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/slash/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,wCAAwC;IAChF,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QACtC,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,SAAS;QAChD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS;QACjC,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,GAAW,EAAE,IAA+B;IAC3D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IAC7B,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAA4B,EAAE;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|