@oxagen/cli 0.5.0 → 0.6.0
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 +135 -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 +44 -0
- package/dist/agent/__tests__/loop-errors.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 +122 -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__/pipeline.test.d.ts +2 -0
- package/dist/agent/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/agent/__tests__/pipeline.test.js +226 -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__/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/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 +146 -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 +103 -0
- package/dist/agent/fleet/orchestrator.d.ts.map +1 -0
- package/dist/agent/fleet/orchestrator.js +355 -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 +105 -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 +38 -0
- package/dist/agent/judge.d.ts.map +1 -0
- package/dist/agent/judge.js +170 -0
- package/dist/agent/judge.js.map +1 -0
- package/dist/agent/loop.d.ts +61 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +134 -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 +79 -0
- package/dist/agent/model-router.d.ts.map +1 -0
- package/dist/agent/model-router.js +141 -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/pipeline.d.ts +82 -0
- package/dist/agent/pipeline.d.ts.map +1 -0
- package/dist/agent/pipeline.js +320 -0
- package/dist/agent/pipeline.js.map +1 -0
- package/dist/agent/planner.d.ts +16 -0
- package/dist/agent/planner.d.ts.map +1 -0
- package/dist/agent/planner.js +126 -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 +37 -0
- package/dist/agent/prompt-enhancer.d.ts.map +1 -0
- package/dist/agent/prompt-enhancer.js +115 -0
- package/dist/agent/prompt-enhancer.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +9 -0
- package/dist/agent/system-prompt.d.ts.map +1 -0
- package/dist/agent/system-prompt.js +38 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/tools.d.ts +19 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +323 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/agent/trace-format.d.ts +6 -0
- package/dist/agent/trace-format.d.ts.map +1 -0
- package/dist/agent/trace-format.js +74 -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 +121 -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/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/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/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/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.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/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.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/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/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 +262 -356
- 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 +3 -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/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 +38 -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 +59 -0
- package/dist/repl/components.d.ts.map +1 -0
- package/dist/repl/components.js +152 -0
- package/dist/repl/components.js.map +1 -0
- package/dist/repl/interactive.d.ts +12 -0
- package/dist/repl/interactive.d.ts.map +1 -0
- package/dist/repl/interactive.js +326 -0
- package/dist/repl/interactive.js.map +1 -0
- package/dist/repl/one-shot.d.ts +9 -0
- package/dist/repl/one-shot.d.ts.map +1 -0
- package/dist/repl/one-shot.js +83 -0
- package/dist/repl/one-shot.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 +61 -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 +12 -7
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TurnTrace } from "./trace.js";
|
|
2
|
+
export interface TraceStore {
|
|
3
|
+
/** Persist a trace (newest first), bounding the file to the latest MAX_TRACES. */
|
|
4
|
+
record(trace: TurnTrace): void;
|
|
5
|
+
/** Fetch one trace by id. */
|
|
6
|
+
get(id: string): TurnTrace | undefined;
|
|
7
|
+
/** All traces, newest first. */
|
|
8
|
+
list(): TurnTrace[];
|
|
9
|
+
/** The most recent trace, or undefined if none. */
|
|
10
|
+
last(): TurnTrace | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a `/replay` argument to a trace: empty → most recent; a 1-based index
|
|
13
|
+
* (`/replay 2` = second-newest); or an id (exact, then prefix). undefined if no match.
|
|
14
|
+
*/
|
|
15
|
+
resolve(arg: string): TurnTrace | undefined;
|
|
16
|
+
}
|
|
17
|
+
/** Open the trace store for a working directory. */
|
|
18
|
+
export declare function openTraceStore(cwd: string): TraceStore;
|
|
19
|
+
//# sourceMappingURL=trace-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-store.d.ts","sourceRoot":"","sources":["../../src/agent/trace-store.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAsC5C,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,6BAA6B;IAC7B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,gCAAgC;IAChC,IAAI,IAAI,SAAS,EAAE,CAAC;IACpB,mDAAmD;IACnD,IAAI,IAAI,SAAS,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAkCtD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn-trace persistence — durable storage for the pipeline's per-turn records.
|
|
3
|
+
*
|
|
4
|
+
* Traces live as JSON under `~/.config/oxagen/traces/<project>.json` (one file per
|
|
5
|
+
* project, keyed by the working-directory name, consistent with the fleet store).
|
|
6
|
+
* Persisting them is what makes `/replay` work across turns and even across
|
|
7
|
+
* sessions: the user can always pull up the original prompt, the enhanced prompt,
|
|
8
|
+
* the model that was selected, the advisor that judged it, and the full chain of
|
|
9
|
+
* thought for any recent turn.
|
|
10
|
+
*/
|
|
11
|
+
import { mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
import { basename, dirname, join } from "node:path";
|
|
14
|
+
/** Keep history bounded — the most recent N turns are plenty for replay. */
|
|
15
|
+
const MAX_TRACES = 100;
|
|
16
|
+
function projectKey(cwd) {
|
|
17
|
+
return basename(cwd) || "default";
|
|
18
|
+
}
|
|
19
|
+
function storePath(cwd) {
|
|
20
|
+
return join(homedir(), ".config", "oxagen", "traces", `${projectKey(cwd)}.json`);
|
|
21
|
+
}
|
|
22
|
+
function read(cwd) {
|
|
23
|
+
const path = storePath(cwd);
|
|
24
|
+
if (!existsSync(path))
|
|
25
|
+
return { traces: [] };
|
|
26
|
+
try {
|
|
27
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
28
|
+
return { traces: Array.isArray(parsed.traces) ? parsed.traces : [] };
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return { traces: [] };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function write(cwd, data) {
|
|
35
|
+
const path = storePath(cwd);
|
|
36
|
+
try {
|
|
37
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
38
|
+
writeFileSync(path, JSON.stringify(data, null, 2), "utf8");
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
/* persistence is best-effort — a failed write must never break a turn */
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Open the trace store for a working directory. */
|
|
45
|
+
export function openTraceStore(cwd) {
|
|
46
|
+
return {
|
|
47
|
+
record(trace) {
|
|
48
|
+
const data = read(cwd);
|
|
49
|
+
const idx = data.traces.findIndex((t) => t.id === trace.id);
|
|
50
|
+
if (idx >= 0)
|
|
51
|
+
data.traces[idx] = trace;
|
|
52
|
+
else
|
|
53
|
+
data.traces.unshift(trace);
|
|
54
|
+
data.traces = data.traces.slice(0, MAX_TRACES);
|
|
55
|
+
write(cwd, data);
|
|
56
|
+
},
|
|
57
|
+
get(id) {
|
|
58
|
+
return read(cwd).traces.find((t) => t.id === id);
|
|
59
|
+
},
|
|
60
|
+
list() {
|
|
61
|
+
return read(cwd).traces;
|
|
62
|
+
},
|
|
63
|
+
last() {
|
|
64
|
+
return read(cwd).traces[0];
|
|
65
|
+
},
|
|
66
|
+
resolve(arg) {
|
|
67
|
+
const traces = read(cwd).traces;
|
|
68
|
+
const trimmed = arg.trim();
|
|
69
|
+
if (!trimmed)
|
|
70
|
+
return traces[0];
|
|
71
|
+
// A small positive integer is a 1-based recency index.
|
|
72
|
+
if (/^\d{1,3}$/.test(trimmed)) {
|
|
73
|
+
const n = Number.parseInt(trimmed, 10);
|
|
74
|
+
if (n >= 1 && n <= traces.length)
|
|
75
|
+
return traces[n - 1];
|
|
76
|
+
}
|
|
77
|
+
return (traces.find((t) => t.id === trimmed) ??
|
|
78
|
+
traces.find((t) => t.id.startsWith(trimmed)));
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=trace-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-store.js","sourceRoot":"","sources":["../../src/agent/trace-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turn-trace types — the spine of the CLI's evaluation → enhancement → judging
|
|
3
|
+
* pipeline and the data the `/replay` command renders.
|
|
4
|
+
*
|
|
5
|
+
* Every user prompt becomes a {@link TurnTrace}: what the user typed, how the
|
|
6
|
+
* cheap evaluator scored it, the context the enhancer injected, which model was
|
|
7
|
+
* selected and why, what the advisor judge concluded about completeness, and the
|
|
8
|
+
* full chain of thought from each stage. The trace is persisted so the whole
|
|
9
|
+
* process stays inspectable after the fact — nothing about how the agent reached
|
|
10
|
+
* its answer is hidden from the user.
|
|
11
|
+
*
|
|
12
|
+
* These types are framework-free (no Ink, no AI SDK) so the engine, the store,
|
|
13
|
+
* and their tests never import a renderer or hit the gateway.
|
|
14
|
+
*/
|
|
15
|
+
import type { ModelTier, UsageTotals } from "./fleet/types.js";
|
|
16
|
+
/** A stage of the turn pipeline, in execution order. */
|
|
17
|
+
export type StageKind = "evaluate" | "enhance" | "route" | "execute" | "judge" | "revise" | "complete";
|
|
18
|
+
/**
|
|
19
|
+
* A live progress event the pipeline emits at each stage so the REPL can show
|
|
20
|
+
* the user exactly what is happening, in real time.
|
|
21
|
+
*/
|
|
22
|
+
export interface StageEvent {
|
|
23
|
+
kind: StageKind;
|
|
24
|
+
/** One-line, human-readable label for the status stream. */
|
|
25
|
+
label: string;
|
|
26
|
+
/** Optional extra detail (a model slug, a score, a verdict). */
|
|
27
|
+
detail?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The cheap model's read of the user's prompt: how complete and how complex it
|
|
31
|
+
* is, what context to pull, and a noise-removed rewrite.
|
|
32
|
+
*/
|
|
33
|
+
export interface PromptEvaluation {
|
|
34
|
+
/** 0–100: how complete/actionable the prompt is on its own. */
|
|
35
|
+
completeness: number;
|
|
36
|
+
/** 0–100: how much work / risk / blast-radius the request implies. */
|
|
37
|
+
complexity: number;
|
|
38
|
+
/** Tier the evaluator recommends for the work. */
|
|
39
|
+
recommendedTier: ModelTier;
|
|
40
|
+
/** Information the prompt is missing (empty when it is self-contained). */
|
|
41
|
+
missing: string[];
|
|
42
|
+
/** Symbols / file paths / topics worth retrieving from the code graph. */
|
|
43
|
+
contextQueries: string[];
|
|
44
|
+
/** The prompt rewritten: filler removed, intent sharpened, meaning preserved. */
|
|
45
|
+
refinedPrompt: string;
|
|
46
|
+
/** What was pruned from the original prompt, and (briefly) why. */
|
|
47
|
+
removed: string[];
|
|
48
|
+
/** The evaluator's chain of thought. */
|
|
49
|
+
reasoning: string;
|
|
50
|
+
/** True when the scores came from the heuristic fallback (model unavailable). */
|
|
51
|
+
fallback: boolean;
|
|
52
|
+
/** Model slug used for the evaluation. */
|
|
53
|
+
model: string;
|
|
54
|
+
usage: UsageTotals;
|
|
55
|
+
}
|
|
56
|
+
/** What the enhancer added to the prompt before handing it to the executor. */
|
|
57
|
+
export interface EnhancementTrace {
|
|
58
|
+
/** The final prompt handed to the executor (refined + injected context). */
|
|
59
|
+
prompt: string;
|
|
60
|
+
/** The injected context block alone (empty when nothing was found). */
|
|
61
|
+
context: string;
|
|
62
|
+
/** Symbol/path tokens that resolved to something in the code graph. */
|
|
63
|
+
resolved: string[];
|
|
64
|
+
/** How many past-work lessons were recalled and injected. */
|
|
65
|
+
lessonCount: number;
|
|
66
|
+
/** Where the injected context came from. */
|
|
67
|
+
source: "none" | "code-graph" | "memory" | "code-graph+memory";
|
|
68
|
+
}
|
|
69
|
+
/** The advisor judge's verdict on whether the agent's work is actually done. */
|
|
70
|
+
export interface JudgeVerdict {
|
|
71
|
+
/** True only when every part of the request was addressed with real changes. */
|
|
72
|
+
complete: boolean;
|
|
73
|
+
/** 0–100 confidence in the verdict. */
|
|
74
|
+
confidence: number;
|
|
75
|
+
/** Concrete gaps the judge found (empty when complete). */
|
|
76
|
+
findings: string[];
|
|
77
|
+
/** What the agent still needs to do (empty when complete). */
|
|
78
|
+
remainingWork: string[];
|
|
79
|
+
/** The judge's chain of thought. */
|
|
80
|
+
reasoning: string;
|
|
81
|
+
/** Model slug used for the judgement — always distinct from the executor. */
|
|
82
|
+
model: string;
|
|
83
|
+
/** True when the verdict came from the heuristic fallback (model unavailable). */
|
|
84
|
+
fallback: boolean;
|
|
85
|
+
usage: UsageTotals;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The complete record of one turn through the pipeline. Persisted by the trace
|
|
89
|
+
* store and rendered by `/replay`.
|
|
90
|
+
*/
|
|
91
|
+
export interface TurnTrace {
|
|
92
|
+
id: string;
|
|
93
|
+
createdAt: number;
|
|
94
|
+
cwd: string;
|
|
95
|
+
/** Exactly what the user typed, verbatim. */
|
|
96
|
+
originalPrompt: string;
|
|
97
|
+
evaluation: PromptEvaluation;
|
|
98
|
+
enhancement: EnhancementTrace;
|
|
99
|
+
/** Concrete gateway model slug chosen for execution. */
|
|
100
|
+
selectedModel: string;
|
|
101
|
+
/** Tier of the selected executor model. */
|
|
102
|
+
selectedTier: ModelTier;
|
|
103
|
+
/** One-line reason the executor model was chosen. */
|
|
104
|
+
selectionRationale: string;
|
|
105
|
+
/** The agent's final assistant text (truncated for storage). */
|
|
106
|
+
response: string;
|
|
107
|
+
/** Relative paths the agent wrote or edited, from tool activity. */
|
|
108
|
+
filesTouched: string[];
|
|
109
|
+
/** Shell commands the agent ran, from tool activity. */
|
|
110
|
+
commandsRun: string[];
|
|
111
|
+
/** One verdict per judge round; index 0 is the initial completeness check. */
|
|
112
|
+
judgeRounds: JudgeVerdict[];
|
|
113
|
+
/** Whether the pipeline drove the agent to a state the judge calls complete. */
|
|
114
|
+
finalComplete: boolean;
|
|
115
|
+
/** Tool-loop steps taken across all execution rounds. */
|
|
116
|
+
steps: number;
|
|
117
|
+
/** Token + cost totals across evaluator + executor + judge calls. */
|
|
118
|
+
usage: UsageTotals;
|
|
119
|
+
durationMs: number;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/agent/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/agent/trace.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/replay.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `oxagen replay` handler — proves --list prints the list, a resolved turn prints
|
|
3
|
+
* the full report, and an unresolved turn errors to stderr with a non-zero exit.
|
|
4
|
+
* The trace store and formatter are mocked, so no filesystem is touched.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
|
|
7
|
+
vi.mock("../../agent/trace-store.js", () => ({ openTraceStore: vi.fn() }));
|
|
8
|
+
vi.mock("../../agent/trace-format.js", () => ({
|
|
9
|
+
formatTraceText: vi.fn(() => "FULL REPORT"),
|
|
10
|
+
formatTraceList: vi.fn(() => "THE LIST"),
|
|
11
|
+
}));
|
|
12
|
+
import { handleReplay } from "../replay.js";
|
|
13
|
+
import { openTraceStore } from "../../agent/trace-store.js";
|
|
14
|
+
const mockOpen = openTraceStore;
|
|
15
|
+
let out = "";
|
|
16
|
+
let err = "";
|
|
17
|
+
const restorers = [];
|
|
18
|
+
function storeWith(over) {
|
|
19
|
+
mockOpen.mockReturnValue({
|
|
20
|
+
list: () => [],
|
|
21
|
+
resolve: () => undefined,
|
|
22
|
+
get: () => undefined,
|
|
23
|
+
last: () => undefined,
|
|
24
|
+
record: () => undefined,
|
|
25
|
+
...over,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
out = "";
|
|
30
|
+
err = "";
|
|
31
|
+
process.exitCode = undefined;
|
|
32
|
+
const outSpy = vi
|
|
33
|
+
.spyOn(process.stdout, "write")
|
|
34
|
+
.mockImplementation(((s) => {
|
|
35
|
+
out += String(s);
|
|
36
|
+
return true;
|
|
37
|
+
}));
|
|
38
|
+
const errSpy = vi
|
|
39
|
+
.spyOn(process.stderr, "write")
|
|
40
|
+
.mockImplementation(((s) => {
|
|
41
|
+
err += String(s);
|
|
42
|
+
return true;
|
|
43
|
+
}));
|
|
44
|
+
restorers.push(() => outSpy.mockRestore(), () => errSpy.mockRestore());
|
|
45
|
+
});
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
for (const r of restorers.splice(0))
|
|
48
|
+
r();
|
|
49
|
+
process.exitCode = undefined;
|
|
50
|
+
});
|
|
51
|
+
describe("handleReplay", () => {
|
|
52
|
+
it("prints the list with --list", async () => {
|
|
53
|
+
storeWith({ list: () => [{ id: "a" }] });
|
|
54
|
+
await handleReplay(undefined, { list: true });
|
|
55
|
+
expect(out).toContain("THE LIST");
|
|
56
|
+
});
|
|
57
|
+
it("prints the full report for a resolved turn", async () => {
|
|
58
|
+
storeWith({ resolve: (arg) => (arg === "2" ? { id: "x" } : undefined) });
|
|
59
|
+
await handleReplay("2", {});
|
|
60
|
+
expect(out).toContain("FULL REPORT");
|
|
61
|
+
expect(process.exitCode).toBeUndefined();
|
|
62
|
+
});
|
|
63
|
+
it("errors to stderr with a non-zero exit when the turn is not found", async () => {
|
|
64
|
+
storeWith({ resolve: () => undefined });
|
|
65
|
+
await handleReplay("99", {});
|
|
66
|
+
expect(err).toContain('No turn matches "99"');
|
|
67
|
+
expect(process.exitCode).toBe(1);
|
|
68
|
+
});
|
|
69
|
+
it("reports the empty case when no turns exist", async () => {
|
|
70
|
+
storeWith({ resolve: () => undefined });
|
|
71
|
+
await handleReplay(undefined, {});
|
|
72
|
+
expect(err).toContain("No turns recorded yet");
|
|
73
|
+
expect(process.exitCode).toBe(1);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=replay.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/replay.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAa,MAAM,QAAQ,CAAC;AAEpF,EAAE,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3E,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;IAC3C,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;CACzC,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,QAAQ,GAAG,cAAiC,CAAC;AAEnD,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,MAAM,SAAS,GAAsB,EAAE,CAAC;AAExC,SAAS,SAAS,CAAC,IAA6B;IAC9C,QAAQ,CAAC,eAAe,CAAC;QACvB,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;QACd,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;QACxB,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;QACpB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;QACrB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;QACvB,GAAG,IAAI;KACR,CAAC,CAAC;AACL,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,GAAG,GAAG,EAAE,CAAC;IACT,GAAG,GAAG,EAAE,CAAC;IACT,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC7B,MAAM,MAAM,GAAG,EAAE;SACd,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9B,kBAAkB,CAAC,CAAC,CAAC,CAAU,EAAE,EAAE;QAClC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC,CAAU,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,EAAE;SACd,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;SAC9B,kBAAkB,CAAC,CAAC,CAAC,CAAU,EAAE,EAAE;QAClC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC,CAAU,CAAC,CAAC;IACf,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IACzC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjF,MAAM,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QACxC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QACxC,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.skill.load.d.ts","sourceRoot":"","sources":["../../src/commands/agent.skill.load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,qBAAqB,SA8D/B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { apiRequest, ApiError } from "../lib/api-client.js";
|
|
3
|
+
import { getWorkspaceId } from "../lib/config.js";
|
|
4
|
+
export const agentSkillLoadCommand = new Command("skill:load")
|
|
5
|
+
.description("Load an agent skill by slug — returns the skill body and referenced capabilities")
|
|
6
|
+
.argument("<slug>", "Skill slug to load")
|
|
7
|
+
.option("-v, --version <constraint>", "Version constraint (e.g. '3', '^2', '~2'). Omit for latest.")
|
|
8
|
+
.option("-d, --deps <slugs...>", "Additional skill slugs to pre-validate as dependencies")
|
|
9
|
+
.option("-w, --workspace <id>", "Workspace ID (defaults to current workspace)")
|
|
10
|
+
.option("--body-only", "Print only the skill body (useful for piping)")
|
|
11
|
+
.action(async (slug, options) => {
|
|
12
|
+
try {
|
|
13
|
+
const payload = { skillSlug: slug };
|
|
14
|
+
if (options.version)
|
|
15
|
+
payload.version = options.version;
|
|
16
|
+
if (options.deps)
|
|
17
|
+
payload.dependencies = options.deps;
|
|
18
|
+
const workspaceId = options.workspace ?? getWorkspaceId();
|
|
19
|
+
if (workspaceId)
|
|
20
|
+
payload.workspace_id = workspaceId;
|
|
21
|
+
const data = await apiRequest("/agent/skill/load", {
|
|
22
|
+
method: "POST",
|
|
23
|
+
body: JSON.stringify(payload),
|
|
24
|
+
});
|
|
25
|
+
if (!data.loaded) {
|
|
26
|
+
const errors = data.dependencyErrors
|
|
27
|
+
.map((e) => ` - ${e.slug}: ${e.reason}`)
|
|
28
|
+
.join("\n");
|
|
29
|
+
console.error(`Skill "${slug}" could not be loaded.`);
|
|
30
|
+
if (errors)
|
|
31
|
+
console.error(`Errors:\n${errors}`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (options.bodyOnly) {
|
|
35
|
+
console.log(data.body);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
console.log(`Skill: ${data.skillSlug} (v${data.versionLoaded})`);
|
|
39
|
+
if (data.capabilities.length > 0) {
|
|
40
|
+
console.log(`Capabilities: ${data.capabilities.join(", ")}`);
|
|
41
|
+
}
|
|
42
|
+
if (data.dependencyErrors.length > 0) {
|
|
43
|
+
console.log("Dependency warnings:");
|
|
44
|
+
data.dependencyErrors.forEach((e) => {
|
|
45
|
+
console.log(` - ${e.slug}: ${e.reason}`);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
console.log("\n--- Body ---\n");
|
|
49
|
+
console.log(data.body);
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
const msg = err instanceof ApiError ? err.message : String(err);
|
|
53
|
+
console.error(`Error: ${msg}`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=agent.skill.load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.skill.load.js","sourceRoot":"","sources":["../../src/commands/agent.skill.load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWlD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;KAC3D,WAAW,CAAC,kFAAkF,CAAC;KAC/F,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACxC,MAAM,CAAC,4BAA4B,EAAE,6DAA6D,CAAC;KACnG,MAAM,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;KACzF,MAAM,CAAC,sBAAsB,EAAE,8CAA8C,CAAC;KAC9E,MAAM,CAAC,aAAa,EAAE,+CAA+C,CAAC;KACtE,MAAM,CACL,KAAK,EACH,IAAY,EACZ,OAKC,EACD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,OAAO,GAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACvD,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;QAEtD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,IAAI,cAAc,EAAE,CAAC;QAC1D,IAAI,WAAW;YAAE,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC;QAEpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAoB,mBAAmB,EAAE;YACpE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;iBACxC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,wBAAwB,CAAC,CAAC;YACtD,IAAI,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function handleCodeDiff(beforeFile: string, afterFile: string, opts: {
|
|
2
|
+
path?: string;
|
|
3
|
+
context?: string;
|
|
4
|
+
}): Promise<void>;
|
|
5
|
+
export declare function handleCodeFormat(file: string, opts: {
|
|
6
|
+
language?: string;
|
|
7
|
+
indent?: string;
|
|
8
|
+
write?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
export declare function handleCodePatch(diffFile: string, opts: {
|
|
11
|
+
dir?: string;
|
|
12
|
+
write?: boolean;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"AAmCA,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `oxagen code …` — sandboxed code utilities (diff, patch, format) over the
|
|
3
|
+
* org-scoped /v1 API. Thin shell: each command reads/writes local files and
|
|
4
|
+
* delegates the actual computation to the code.diff / code.patch / code.format
|
|
5
|
+
* capabilities so the CLI stays in parity with the API, MCP, and agent surfaces.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, rmSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { apiPost } from "../lib/api.js";
|
|
10
|
+
export async function handleCodeDiff(beforeFile, afterFile, opts) {
|
|
11
|
+
const before = readFileSync(beforeFile, "utf8");
|
|
12
|
+
const after = readFileSync(afterFile, "utf8");
|
|
13
|
+
const body = { before, after };
|
|
14
|
+
if (opts.path)
|
|
15
|
+
body.path = opts.path;
|
|
16
|
+
if (opts.context !== undefined)
|
|
17
|
+
body.contextLines = parseInt(opts.context, 10);
|
|
18
|
+
const res = await apiPost("code/diff", body);
|
|
19
|
+
if (!res.changed) {
|
|
20
|
+
process.stderr.write("(no changes)\n");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
process.stdout.write(res.diff);
|
|
24
|
+
process.stderr.write(`\n+${res.additions} -${res.deletions}\n`);
|
|
25
|
+
}
|
|
26
|
+
export async function handleCodeFormat(file, opts) {
|
|
27
|
+
const source = readFileSync(file, "utf8");
|
|
28
|
+
const language = opts.language ?? inferLanguage(file);
|
|
29
|
+
if (!language) {
|
|
30
|
+
process.stderr.write(`Could not infer language for ${file}; pass --language json|python.\n`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const body = { language, source };
|
|
34
|
+
if (opts.indent !== undefined)
|
|
35
|
+
body.indent = parseInt(opts.indent, 10);
|
|
36
|
+
const res = await apiPost("code/format", body);
|
|
37
|
+
if (opts.write) {
|
|
38
|
+
writeFileSync(file, res.formatted);
|
|
39
|
+
process.stderr.write(`✓ formatted ${file}${res.changed ? "" : " (already formatted)"}\n`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
process.stdout.write(res.formatted);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function handleCodePatch(diffFile, opts) {
|
|
46
|
+
const diff = readFileSync(diffFile, "utf8");
|
|
47
|
+
const dir = opts.dir ?? ".";
|
|
48
|
+
const files = readWorkspaceForDiff(diff, dir);
|
|
49
|
+
const res = await apiPost("code/patch", { files, diff });
|
|
50
|
+
for (const f of res.files) {
|
|
51
|
+
process.stdout.write(`${f.status.padEnd(8)} ${f.path}\n`);
|
|
52
|
+
}
|
|
53
|
+
if (opts.write) {
|
|
54
|
+
for (const f of res.files) {
|
|
55
|
+
const abs = join(dir, f.path);
|
|
56
|
+
if (f.status === "deleted") {
|
|
57
|
+
if (existsSync(abs))
|
|
58
|
+
rmSync(abs);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
62
|
+
writeFileSync(abs, f.content);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
process.stderr.write(`✓ applied ${res.changedCount} file(s) to ${dir}\n`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
process.stderr.write(`(dry run — re-run with --write to apply ${res.changedCount} change(s))\n`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** json from .json, python from .py; undefined when unknown. */
|
|
72
|
+
function inferLanguage(file) {
|
|
73
|
+
if (file.endsWith(".json"))
|
|
74
|
+
return "json";
|
|
75
|
+
if (file.endsWith(".py"))
|
|
76
|
+
return "python";
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Discover the existing workspace files a diff touches by scanning its ---/+++
|
|
81
|
+
* file headers, then read them from `dir`. This only ASSEMBLES the workspace to
|
|
82
|
+
* send; the authoritative apply (and path-traversal confinement) happens
|
|
83
|
+
* server-side in code.patch, so this is a best-effort input gather, not a parser.
|
|
84
|
+
*/
|
|
85
|
+
function readWorkspaceForDiff(diff, dir) {
|
|
86
|
+
const files = {};
|
|
87
|
+
for (const line of diff.split("\n")) {
|
|
88
|
+
const m = /^(?:---|\+\+\+) (?:[ab]\/)?(.+?)(?:\t.*)?$/.exec(line);
|
|
89
|
+
if (!m)
|
|
90
|
+
continue;
|
|
91
|
+
const p = m[1];
|
|
92
|
+
if (!p || p === "/dev/null" || files[p])
|
|
93
|
+
continue;
|
|
94
|
+
const abs = join(dir, p);
|
|
95
|
+
if (existsSync(abs))
|
|
96
|
+
files[p] = readFileSync(abs, "utf8");
|
|
97
|
+
}
|
|
98
|
+
return files;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/commands/code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AA+BA,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC9E"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config command — view or set local CLI configuration.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* oxagen config Show all config
|
|
6
|
+
* oxagen config token Show token (masked)
|
|
7
|
+
* oxagen config token sk-... Set token
|
|
8
|
+
* oxagen config model Show model
|
|
9
|
+
* oxagen config model gpt-4 Set model
|
|
10
|
+
* oxagen config api-url Show API URL
|
|
11
|
+
*/
|
|
12
|
+
import { readConfig, writeConfig } from "../lib/config.js";
|
|
13
|
+
const VALID_KEYS = ["token", "model", "api-url", "org", "workspace"];
|
|
14
|
+
function keyToConfigField(key) {
|
|
15
|
+
switch (key) {
|
|
16
|
+
case "token": return "token";
|
|
17
|
+
case "api-url": return "apiUrl";
|
|
18
|
+
case "org": return "orgSlug";
|
|
19
|
+
case "workspace": return "workspaceSlug";
|
|
20
|
+
case "model": return "model";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function maskToken(token) {
|
|
24
|
+
if (token.length <= 8)
|
|
25
|
+
return "****";
|
|
26
|
+
return token.slice(0, 4) + "…" + token.slice(-4);
|
|
27
|
+
}
|
|
28
|
+
export async function handleConfig(key, value) {
|
|
29
|
+
const config = readConfig();
|
|
30
|
+
// No args: show all
|
|
31
|
+
if (!key) {
|
|
32
|
+
console.log("Configuration (~/.config/oxagen/config.json):\n");
|
|
33
|
+
console.log(` token: ${config.token ? maskToken(config.token) : "(not set)"}`);
|
|
34
|
+
console.log(` api-url: ${config.apiUrl ?? "https://api.oxagen.sh"}`);
|
|
35
|
+
console.log(` org: ${config.orgSlug ?? "(not set)"}`);
|
|
36
|
+
console.log(` workspace: ${config.workspaceSlug ?? "(not set)"}`);
|
|
37
|
+
console.log(`\nSet a value: oxagen config <key> <value>`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (!VALID_KEYS.includes(key)) {
|
|
41
|
+
console.error(`Unknown config key: "${key}"`);
|
|
42
|
+
console.error(`Valid keys: ${VALID_KEYS.join(", ")}`);
|
|
43
|
+
process.exitCode = 1;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const field = keyToConfigField(key);
|
|
47
|
+
// Get
|
|
48
|
+
if (value === undefined) {
|
|
49
|
+
const current = config[field];
|
|
50
|
+
if (!current) {
|
|
51
|
+
console.log(`${key}: (not set)`);
|
|
52
|
+
}
|
|
53
|
+
else if (key === "token") {
|
|
54
|
+
console.log(`${key}: ${maskToken(current)}`);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
console.log(`${key}: ${current}`);
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Set
|
|
62
|
+
writeConfig({ [field]: value });
|
|
63
|
+
const display = key === "token" ? maskToken(value) : value;
|
|
64
|
+
console.log(`✓ ${key} = ${display}`);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function handleEnvList(opts: {
|
|
2
|
+
json?: boolean;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function handleEnvGet(idOrSlug: string, opts: {
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
export declare function handleEnvCreate(name: string, opts: {
|
|
8
|
+
slug?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function handleEnvUpdate(idOrSlug: string, opts: {
|
|
12
|
+
name?: string;
|
|
13
|
+
slug?: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
active?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
export declare function handleEnvRemove(idOrSlug: string): Promise<void>;
|
|
18
|
+
export declare function handleEnvSetDefault(idOrSlug: string): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=env.d.ts.map
|