@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,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session memory — the CLI's bridge to Oxagen's knowledge-graph-backed context
|
|
3
|
+
* engine (`@oxagen/engram`).
|
|
4
|
+
*
|
|
5
|
+
* Each turn's activity is written as episodic records into a local content-
|
|
6
|
+
* addressed store, scoped to the project (the working directory's name). At the
|
|
7
|
+
* start of a turn we recall recent project activity and inject it as context, so
|
|
8
|
+
* the agent remembers what it did in previous sessions on the same codebase.
|
|
9
|
+
*
|
|
10
|
+
* The store is best-effort: if it cannot be opened (e.g. the optional native
|
|
11
|
+
* DuckDB dependency is unavailable in this environment), `openSessionMemory`
|
|
12
|
+
* returns `null` and the agent loop runs without persistent memory rather than
|
|
13
|
+
* failing. This keeps memory a strict enhancement, never a hard dependency.
|
|
14
|
+
*/
|
|
15
|
+
import { mkdirSync } from "node:fs";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
import { basename, dirname, join } from "node:path";
|
|
18
|
+
import { createEngram, createStore } from "@oxagen/engram";
|
|
19
|
+
function dbPath() {
|
|
20
|
+
return join(homedir(), ".config", "oxagen", "context.duckdb");
|
|
21
|
+
}
|
|
22
|
+
/** Stable project key from the working directory name. */
|
|
23
|
+
function projectKey(cwd) {
|
|
24
|
+
return basename(cwd) || "default";
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Open the project's session memory. Returns `null` if the context store is
|
|
28
|
+
* unavailable in this environment (the loop then runs memory-free).
|
|
29
|
+
*/
|
|
30
|
+
export async function openSessionMemory(cwd, sessionId) {
|
|
31
|
+
let store;
|
|
32
|
+
try {
|
|
33
|
+
const path = dbPath();
|
|
34
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
35
|
+
store = createStore({ adapter: "duckdb", duckdbPath: path });
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (process.env["OXAGEN_DEBUG"])
|
|
39
|
+
process.stderr.write(`[mem] open failed: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const engram = createEngram(store);
|
|
43
|
+
const workspace = projectKey(cwd);
|
|
44
|
+
const namespace = { org: "local", workspace, session: sessionId };
|
|
45
|
+
// Probe the connection once so a locked/unavailable DuckDB file (e.g. another
|
|
46
|
+
// oxagen process or the context daemon already holds the single-writer lock)
|
|
47
|
+
// disables memory cleanly instead of crashing on a floating rejection or
|
|
48
|
+
// silently failing every later write. Best-effort: no memory is fine.
|
|
49
|
+
try {
|
|
50
|
+
await store.recent({ org: "local", workspace }, 1);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
if (process.env["OXAGEN_DEBUG"])
|
|
54
|
+
process.stderr.write(`[mem] connection probe failed, disabling memory: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
55
|
+
await store.close().catch(() => { });
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
// Callers fire writes without awaiting (`void memory.remember(...)`), so we
|
|
59
|
+
// track them here and flush on close — otherwise the process can exit before
|
|
60
|
+
// DuckDB persists the append and the memory is silently lost.
|
|
61
|
+
const pending = new Set();
|
|
62
|
+
return {
|
|
63
|
+
remember(event, payload, outcome) {
|
|
64
|
+
const p = (async () => {
|
|
65
|
+
try {
|
|
66
|
+
await engram.remember({ event, payload, outcome }, {
|
|
67
|
+
namespace,
|
|
68
|
+
provenance: {
|
|
69
|
+
author: "oxagen-cli",
|
|
70
|
+
derivedFrom: [],
|
|
71
|
+
timestamp: Date.now(),
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
/* memory is best-effort */
|
|
77
|
+
}
|
|
78
|
+
})();
|
|
79
|
+
pending.add(p);
|
|
80
|
+
void p.finally(() => pending.delete(p));
|
|
81
|
+
return p;
|
|
82
|
+
},
|
|
83
|
+
async recallContext(limit = 8) {
|
|
84
|
+
try {
|
|
85
|
+
// Recall across the whole project (not just this session) so the agent
|
|
86
|
+
// carries knowledge between runs on the same codebase.
|
|
87
|
+
const records = await store.recent({ org: "local", workspace }, limit);
|
|
88
|
+
if (records.length === 0)
|
|
89
|
+
return "";
|
|
90
|
+
return records
|
|
91
|
+
.reverse()
|
|
92
|
+
.map((r) => {
|
|
93
|
+
const b = r.body;
|
|
94
|
+
const payloadStr = typeof b.payload === "string"
|
|
95
|
+
? b.payload
|
|
96
|
+
: JSON.stringify(b.payload);
|
|
97
|
+
const tail = b.outcome ? ` (${b.outcome})` : "";
|
|
98
|
+
return `- [${b.event}] ${payloadStr.slice(0, 160)}${tail}`;
|
|
99
|
+
})
|
|
100
|
+
.join("\n");
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return "";
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
async close() {
|
|
107
|
+
// Flush any in-flight writes before closing, so nothing is lost on exit.
|
|
108
|
+
await Promise.allSettled([...pending]);
|
|
109
|
+
try {
|
|
110
|
+
await store.close();
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
/* already closed */
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/agent/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cost-aware model routing for the local agent.
|
|
3
|
+
*
|
|
4
|
+
* The CLI's job is to be the most cost-effective coding agent: spend Haiku money
|
|
5
|
+
* on Haiku-sized work and only reach for Opus when the task actually needs it.
|
|
6
|
+
* This module turns a task description (plus a few cheap structural signals) into
|
|
7
|
+
* a {@link ModelTier} and a concrete gateway slug, deterministically and without
|
|
8
|
+
* an extra LLM round-trip — encoding the CLAUDE.md operating-model table in code.
|
|
9
|
+
*
|
|
10
|
+
* Dollar costs come from the baked-in rate card in {@link ./rate-card.ts} — the
|
|
11
|
+
* single place model prices live in the CLI. This module re-exports the pricing
|
|
12
|
+
* helpers so existing imports keep working, but does not own a second copy.
|
|
13
|
+
*/
|
|
14
|
+
import type { ModelTier } from "./fleet/types.js";
|
|
15
|
+
import type { UsageTotals } from "./fleet/types.js";
|
|
16
|
+
import { estimateCostUsd, rateFor, formatUsd } from "./rate-card.js";
|
|
17
|
+
export { estimateCostUsd, rateFor, formatUsd };
|
|
18
|
+
export declare const TIERS: ModelTier[];
|
|
19
|
+
/** Human label for a tier, for the agents screen and `--explain` output. */
|
|
20
|
+
export declare function tierLabel(tier: ModelTier): string;
|
|
21
|
+
/** Add a per-call usage into a running total, pricing it on the call's model. */
|
|
22
|
+
export declare function accumulateUsage(total: UsageTotals, model: string, usage: {
|
|
23
|
+
inputTokens?: number;
|
|
24
|
+
outputTokens?: number;
|
|
25
|
+
}): UsageTotals;
|
|
26
|
+
/** Cheap structural signals about a task, gathered without calling a model. */
|
|
27
|
+
export interface TaskSignals {
|
|
28
|
+
/** The task description / prompt. */
|
|
29
|
+
text: string;
|
|
30
|
+
/** Number of files the task is expected to touch, if known. */
|
|
31
|
+
fileCount?: number;
|
|
32
|
+
/** Whether the task crosses package boundaries. */
|
|
33
|
+
crossPackage?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface RouteDecision {
|
|
36
|
+
tier: ModelTier;
|
|
37
|
+
model: string;
|
|
38
|
+
/** One-line, human-readable reason — surfaced by `--explain` and the TUI. */
|
|
39
|
+
rationale: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Choose the cheapest tier that can do the job. Deterministic and cheap — no LLM
|
|
43
|
+
* call — so it runs on every dispatch without adding latency or token cost.
|
|
44
|
+
*
|
|
45
|
+
* Priority of evidence (most → least decisive):
|
|
46
|
+
* 1. Precise-only domains (auth/billing/security/migration/architecture).
|
|
47
|
+
* 2. Breadth: many files or cross-package work escalates to balanced/precise.
|
|
48
|
+
* 3. Design / debugging language escalates to balanced.
|
|
49
|
+
* 4. Explicitly trivial language pins to fast.
|
|
50
|
+
* 5. Default: balanced — the safe general-purpose tier.
|
|
51
|
+
*/
|
|
52
|
+
export declare function classifyTier(signals: TaskSignals): RouteDecision;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve the model for a task, honouring a manual override first.
|
|
55
|
+
*
|
|
56
|
+
* Manual precedence (matches the existing fixed-model path): an explicit slug
|
|
57
|
+
* (`--model`), `OXAGEN_MODEL`, or a pinned `config.model` always wins and routing
|
|
58
|
+
* is skipped. Otherwise auto-route from the task signals.
|
|
59
|
+
*/
|
|
60
|
+
export declare function routeModel(signals: TaskSignals, override?: string): RouteDecision;
|
|
61
|
+
/** Best-effort tier label for an arbitrary slug (for display of pinned models). */
|
|
62
|
+
export declare function tierForSlug(model: string): ModelTier;
|
|
63
|
+
/** Concrete slug for a tier (exported for the planner and orchestrator). */
|
|
64
|
+
export declare function modelForTier(tier: ModelTier): string;
|
|
65
|
+
//# sourceMappingURL=model-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.d.ts","sourceRoot":"","sources":["../../src/agent/model-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIrE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAc/C,eAAO,MAAM,KAAK,EAAE,SAAS,EAAoC,CAAC;AAElE,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEjD;AAMD,iFAAiF;AACjF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACrD,WAAW,CAMb;AAID,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,CAyChE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,MAAM,GAChB,aAAa,CAMf;AAUD,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAQpD;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { readConfig } from "../lib/config.js";
|
|
2
|
+
import { estimateCostUsd, rateFor, formatUsd } from "./rate-card.js";
|
|
3
|
+
// Re-exported so call sites that import pricing from the router keep working.
|
|
4
|
+
// The authoritative definitions live in ./rate-card.ts.
|
|
5
|
+
export { estimateCostUsd, rateFor, formatUsd };
|
|
6
|
+
/** A tier's concrete gateway slug, overridable per-env to track gateway drift. */
|
|
7
|
+
function tierSlug(tier) {
|
|
8
|
+
switch (tier) {
|
|
9
|
+
case "fast":
|
|
10
|
+
return process.env["OXAGEN_LLM_FAST"] ?? "anthropic/claude-haiku-4.5";
|
|
11
|
+
case "balanced":
|
|
12
|
+
return process.env["OXAGEN_LLM_BALANCED"] ?? "anthropic/claude-sonnet-4.6";
|
|
13
|
+
case "precise":
|
|
14
|
+
return process.env["OXAGEN_LLM_PRECISE"] ?? "anthropic/claude-opus-4.8";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export const TIERS = ["fast", "balanced", "precise"];
|
|
18
|
+
/** Human label for a tier, for the agents screen and `--explain` output. */
|
|
19
|
+
export function tierLabel(tier) {
|
|
20
|
+
return tier === "fast" ? "Haiku" : tier === "balanced" ? "Sonnet" : "Opus";
|
|
21
|
+
}
|
|
22
|
+
// ── Usage accumulation ───────────────────────────────────────────────────────
|
|
23
|
+
// Pricing helpers (rateFor / estimateCostUsd / formatUsd) come from the rate
|
|
24
|
+
// card; this only composes them into a running per-turn total.
|
|
25
|
+
/** Add a per-call usage into a running total, pricing it on the call's model. */
|
|
26
|
+
export function accumulateUsage(total, model, usage) {
|
|
27
|
+
return {
|
|
28
|
+
inputTokens: total.inputTokens + (usage.inputTokens ?? 0),
|
|
29
|
+
outputTokens: total.outputTokens + (usage.outputTokens ?? 0),
|
|
30
|
+
costUsd: total.costUsd + estimateCostUsd(model, usage),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Domains that demand the precise tier regardless of size: a wrong call here is
|
|
34
|
+
// expensive (security/data correctness), so we never under-spend on them.
|
|
35
|
+
// NOTE: bare "token" is deliberately excluded — it collides with lexer/parser
|
|
36
|
+
// "tokens". Auth work is caught by the unambiguous terms below.
|
|
37
|
+
const PRECISE_DOMAINS = /\b(auth|authn|authz|login|session|password|secret|credential|oauth|saml|sso|billing|payment|invoice|stripe|charge|refund|security|crypto|encrypt|decrypt|rls|tenant|migration|schema change|architecture|architect|data model|storage boundary|production incident|outage|race condition)\b/i;
|
|
38
|
+
// Words that signal genuine design / non-trivial reasoning → at least balanced.
|
|
39
|
+
const DESIGN_SIGNALS = /\b(design|refactor|redesign|rearchitect|debug|investigate|root[- ]cause|why|optimi[sz]e|performance|concurren|async|deadlock|integrate|cross[- ]package|end[- ]to[- ]end|e2e|new (feature|capability|endpoint|tool|service)|implement)\b/i;
|
|
40
|
+
// Words that signal trivial, mechanical work → fast tier is plenty.
|
|
41
|
+
const TRIVIAL_SIGNALS = /\b(rename|format|typo|comment|lint|prettier|reword|copy[- ]?edit|bump|sort imports|add a? ?(log|console)|tweak|adjust spacing|fix indentation|update (the )?(version|readme|changelog)|one[- ]liner)\b/i;
|
|
42
|
+
/**
|
|
43
|
+
* Choose the cheapest tier that can do the job. Deterministic and cheap — no LLM
|
|
44
|
+
* call — so it runs on every dispatch without adding latency or token cost.
|
|
45
|
+
*
|
|
46
|
+
* Priority of evidence (most → least decisive):
|
|
47
|
+
* 1. Precise-only domains (auth/billing/security/migration/architecture).
|
|
48
|
+
* 2. Breadth: many files or cross-package work escalates to balanced/precise.
|
|
49
|
+
* 3. Design / debugging language escalates to balanced.
|
|
50
|
+
* 4. Explicitly trivial language pins to fast.
|
|
51
|
+
* 5. Default: balanced — the safe general-purpose tier.
|
|
52
|
+
*/
|
|
53
|
+
export function classifyTier(signals) {
|
|
54
|
+
const text = signals.text ?? "";
|
|
55
|
+
const files = signals.fileCount ?? 0;
|
|
56
|
+
const slug = (tier, rationale) => ({
|
|
57
|
+
tier,
|
|
58
|
+
model: tierSlug(tier),
|
|
59
|
+
rationale,
|
|
60
|
+
});
|
|
61
|
+
if (PRECISE_DOMAINS.test(text)) {
|
|
62
|
+
return slug("precise", "touches a high-stakes domain (auth/billing/security/migration/architecture)");
|
|
63
|
+
}
|
|
64
|
+
// Breadth dominates: a wide change needs a model that can hold more context.
|
|
65
|
+
if (files >= 8 || (signals.crossPackage && files >= 4)) {
|
|
66
|
+
return slug("precise", `wide blast radius (~${files} files)`);
|
|
67
|
+
}
|
|
68
|
+
if (files > 3 || signals.crossPackage) {
|
|
69
|
+
return slug("balanced", signals.crossPackage ? "crosses package boundaries" : `multi-file (~${files} files)`);
|
|
70
|
+
}
|
|
71
|
+
if (TRIVIAL_SIGNALS.test(text) && !DESIGN_SIGNALS.test(text)) {
|
|
72
|
+
return slug("fast", "mechanical / single-file change");
|
|
73
|
+
}
|
|
74
|
+
if (DESIGN_SIGNALS.test(text)) {
|
|
75
|
+
return slug("balanced", "non-trivial logic or debugging");
|
|
76
|
+
}
|
|
77
|
+
// Very short, unqualified asks are usually small lookups/edits.
|
|
78
|
+
if (text.trim().length < 60 && files <= 1) {
|
|
79
|
+
return slug("fast", "small, well-scoped ask");
|
|
80
|
+
}
|
|
81
|
+
return slug("balanced", "general-purpose default");
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Resolve the model for a task, honouring a manual override first.
|
|
85
|
+
*
|
|
86
|
+
* Manual precedence (matches the existing fixed-model path): an explicit slug
|
|
87
|
+
* (`--model`), `OXAGEN_MODEL`, or a pinned `config.model` always wins and routing
|
|
88
|
+
* is skipped. Otherwise auto-route from the task signals.
|
|
89
|
+
*/
|
|
90
|
+
export function routeModel(signals, override) {
|
|
91
|
+
const manual = override ?? process.env["OXAGEN_MODEL"] ?? readConfig().model;
|
|
92
|
+
if (manual) {
|
|
93
|
+
return { tier: tierForSlug(manual), model: manual, rationale: "pinned model" };
|
|
94
|
+
}
|
|
95
|
+
return classifyTier(signals);
|
|
96
|
+
}
|
|
97
|
+
// Slug fragments that classify an arbitrary gateway model into a tier, across
|
|
98
|
+
// vendors (Anthropic, OpenAI, Google, DeepSeek, Mistral). SMALL is checked first
|
|
99
|
+
// so a cheap variant of a frontier family (e.g. `gpt-5-mini`, `o3-mini`,
|
|
100
|
+
// `gemini-3.5-flash`) is never mislabelled as precise.
|
|
101
|
+
const SMALL_MARKER = /\b(mini|nano|flash|lite|small|nemo)\b|\b\d{1,3}b\b/;
|
|
102
|
+
const PRECISE_MARKER = /\b(opus|codex|pro|large|o1|o3|deepseek-v4|deepseek-r1|magistral-medium)\b/;
|
|
103
|
+
/** Best-effort tier label for an arbitrary slug (for display of pinned models). */
|
|
104
|
+
export function tierForSlug(model) {
|
|
105
|
+
const family = (model.split("/").pop() ?? model).toLowerCase();
|
|
106
|
+
// Cheap/small variants win first — every vendor marks them the same way.
|
|
107
|
+
if (family.startsWith("claude-haiku") || SMALL_MARKER.test(family))
|
|
108
|
+
return "fast";
|
|
109
|
+
// Frontier / high-capability families across vendors → precise.
|
|
110
|
+
if (family.startsWith("claude-opus") || family.startsWith("gpt-5") || PRECISE_MARKER.test(family))
|
|
111
|
+
return "precise";
|
|
112
|
+
return "balanced";
|
|
113
|
+
}
|
|
114
|
+
/** Concrete slug for a tier (exported for the planner and orchestrator). */
|
|
115
|
+
export function modelForTier(tier) {
|
|
116
|
+
return tierSlug(tier);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=model-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.js","sourceRoot":"","sources":["../../src/agent/model-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default coding model. Override per-call (`opts.model`), per-shell
|
|
3
|
+
* (`OXAGEN_MODEL`), or persistently (`oxagen config model <slug>`).
|
|
4
|
+
* If the gateway reports the slug as unknown, set a current one with
|
|
5
|
+
* `oxagen config model <slug>` — gateway slugs drift over time.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_MODEL = "anthropic/claude-sonnet-4.5";
|
|
8
|
+
export declare function resolveModelId(override?: string): string;
|
|
9
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/agent/model.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,gCAAgC,CAAC;AAE3D,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOxD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model resolution for the local agent loop.
|
|
3
|
+
*
|
|
4
|
+
* Models are passed to the AI SDK as plain Vercel AI Gateway slugs
|
|
5
|
+
* (`vendor/model`), which the gateway resolves using `AI_GATEWAY_API_KEY`.
|
|
6
|
+
*
|
|
7
|
+
* Resolution order: `--model` / opts → `OXAGEN_MODEL` env → `model` in config →
|
|
8
|
+
* the default below.
|
|
9
|
+
*/
|
|
10
|
+
import { readConfig } from "../lib/config.js";
|
|
11
|
+
/**
|
|
12
|
+
* Default coding model. Override per-call (`opts.model`), per-shell
|
|
13
|
+
* (`OXAGEN_MODEL`), or persistently (`oxagen config model <slug>`).
|
|
14
|
+
* If the gateway reports the slug as unknown, set a current one with
|
|
15
|
+
* `oxagen config model <slug>` — gateway slugs drift over time.
|
|
16
|
+
*/
|
|
17
|
+
export const DEFAULT_MODEL = "anthropic/claude-sonnet-4.5";
|
|
18
|
+
export function resolveModelId(override) {
|
|
19
|
+
return (override ??
|
|
20
|
+
process.env["OXAGEN_MODEL"] ??
|
|
21
|
+
readConfig().model ??
|
|
22
|
+
DEFAULT_MODEL);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/agent/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAE3D,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,OAAO,CACL,QAAQ;QACR,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3B,UAAU,EAAE,CAAC,KAAK;QAClB,aAAa,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/** The tools that can change the host. Read/search tools are never gated. */
|
|
2
|
+
export declare const MUTATING_TOOLS: readonly ["write_file", "edit_file", "bash"];
|
|
3
|
+
export type MutatingTool = (typeof MUTATING_TOOLS)[number];
|
|
4
|
+
export declare function isMutatingTool(name: string): name is MutatingTool;
|
|
5
|
+
/**
|
|
6
|
+
* Session permission posture.
|
|
7
|
+
* - `readonly` — mutating tools are withheld entirely (enforced in buildTools).
|
|
8
|
+
* - `ask` — every mutating call is approved/denied (default).
|
|
9
|
+
* - `acceptEdits`— file writes/edits auto-allowed; shell commands still ask.
|
|
10
|
+
* - `bypass` — everything allowed, no prompts (explicit, dangerous opt-out).
|
|
11
|
+
*/
|
|
12
|
+
export type PermissionMode = "readonly" | "ask" | "acceptEdits" | "bypass";
|
|
13
|
+
export type RuleDecision = "allow" | "ask" | "deny";
|
|
14
|
+
/**
|
|
15
|
+
* A user/project rule. `tool` matches a tool name (or "*"); `pattern` is a glob
|
|
16
|
+
* matched against the call's path (file tools) or the command string (bash).
|
|
17
|
+
* Rules are evaluated in order — the first match wins.
|
|
18
|
+
*/
|
|
19
|
+
export interface PermissionRule {
|
|
20
|
+
tool?: string;
|
|
21
|
+
pattern?: string;
|
|
22
|
+
decision: RuleDecision;
|
|
23
|
+
}
|
|
24
|
+
/** A normalized, tool-agnostic description of a single mutating call. */
|
|
25
|
+
export interface PermissionRequest {
|
|
26
|
+
tool: MutatingTool;
|
|
27
|
+
/** Resolved absolute path for file tools (undefined for bash). */
|
|
28
|
+
path?: string;
|
|
29
|
+
/** The shell command for bash (undefined for file tools). */
|
|
30
|
+
command?: string;
|
|
31
|
+
cwd: string;
|
|
32
|
+
}
|
|
33
|
+
/** What the broker hands the human when it must ask. */
|
|
34
|
+
export interface ApprovalRequest extends PermissionRequest {
|
|
35
|
+
/** One-line, human-readable summary of what will happen. */
|
|
36
|
+
summary: string;
|
|
37
|
+
/** Why approval is required (denylist hit, outside workspace, mode policy). */
|
|
38
|
+
reason: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ApprovalResponse {
|
|
41
|
+
decision: "allow" | "deny";
|
|
42
|
+
/**
|
|
43
|
+
* When true, the broker records a session rule so identical future calls are
|
|
44
|
+
* auto-resolved the same way without re-prompting.
|
|
45
|
+
*/
|
|
46
|
+
remember?: boolean;
|
|
47
|
+
}
|
|
48
|
+
export type Approver = (req: ApprovalRequest) => Promise<ApprovalResponse>;
|
|
49
|
+
export type PermissionDecision = {
|
|
50
|
+
decision: "allow";
|
|
51
|
+
reason: string;
|
|
52
|
+
} | {
|
|
53
|
+
decision: "deny";
|
|
54
|
+
reason: string;
|
|
55
|
+
};
|
|
56
|
+
export interface BrokerOptions {
|
|
57
|
+
mode: PermissionMode;
|
|
58
|
+
cwd: string;
|
|
59
|
+
/** Project/user rules, evaluated before mode defaults. */
|
|
60
|
+
rules?: PermissionRule[];
|
|
61
|
+
/** Interactive prompt. Absent ⇒ non-interactive (every `ask` becomes `deny`). */
|
|
62
|
+
approver?: Approver;
|
|
63
|
+
}
|
|
64
|
+
/** True when an absolute path is not inside (or equal to) the workspace root. */
|
|
65
|
+
export declare function isOutsideWorkspace(cwd: string, absPath: string): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* The broker. Stateful only in that it accumulates session rules the human
|
|
68
|
+
* chooses to "remember"; everything else is a pure function of the request and
|
|
69
|
+
* the configured rules/mode.
|
|
70
|
+
*/
|
|
71
|
+
export declare class PermissionBroker {
|
|
72
|
+
private mode;
|
|
73
|
+
private readonly cwd;
|
|
74
|
+
private readonly approver?;
|
|
75
|
+
private readonly baseRules;
|
|
76
|
+
private readonly sessionRules;
|
|
77
|
+
constructor(opts: BrokerOptions);
|
|
78
|
+
get currentMode(): PermissionMode;
|
|
79
|
+
/** Switch posture mid-session (drives the REPL `/mode` command). */
|
|
80
|
+
setMode(mode: PermissionMode): void;
|
|
81
|
+
/** Rules in precedence order: remembered session rules first, then configured. */
|
|
82
|
+
private rules;
|
|
83
|
+
/** Record a rule so an identical future call resolves the same way silently. */
|
|
84
|
+
private remember;
|
|
85
|
+
/**
|
|
86
|
+
* Decide whether a mutating call may proceed. Never throws; an absent approver
|
|
87
|
+
* on an `ask` resolves to `deny` (fail closed). Returns the decision plus a
|
|
88
|
+
* human-readable reason (surfaced in the trace / tool result).
|
|
89
|
+
*/
|
|
90
|
+
check(req: PermissionRequest): Promise<PermissionDecision>;
|
|
91
|
+
private ask;
|
|
92
|
+
}
|
|
93
|
+
/** Map a CLI flag set to a {@link PermissionMode}. `readonly` wins; then bypass. */
|
|
94
|
+
export declare function resolveMode(opts: {
|
|
95
|
+
readOnly?: boolean;
|
|
96
|
+
acceptEdits?: boolean;
|
|
97
|
+
bypass?: boolean;
|
|
98
|
+
}): PermissionMode;
|
|
99
|
+
/** Parse a user-supplied mode string to a {@link PermissionMode} (or undefined). */
|
|
100
|
+
export declare function parseModeArg(s: string): PermissionMode | undefined;
|
|
101
|
+
/** Build a normalized {@link PermissionRequest} from a raw tool call. */
|
|
102
|
+
export declare function toRequest(tool: string, input: unknown, cwd: string): PermissionRequest | null;
|
|
103
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/agent/permissions.ts"],"names":[],"mappings":"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"}
|