@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevStatus.d.ts","sourceRoot":"","sources":["../../src/components/DevStatus.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DevStatus.d.ts","sourceRoot":"","sources":["../../src/components/DevStatus.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,SAAS,4CAgDxB"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from "ink";
|
|
3
3
|
import net from "node:net";
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
|
+
import { theme } from "../tui/theme.js";
|
|
5
6
|
// Services the dev stack exposes. Port values must stay in sync with the
|
|
6
7
|
// turbo dev task config (apps/*/project.json + apps/*/next.config.ts).
|
|
7
8
|
const SERVICES = [
|
|
@@ -49,7 +50,7 @@ export function DevStatus() {
|
|
|
49
50
|
cancelled = true;
|
|
50
51
|
};
|
|
51
52
|
}, []);
|
|
52
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { children: [
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { color: theme.cyan, children: [theme.ring, " "] }), _jsx(Text, { color: theme.violet, bold: true, children: "Oxagen" }), _jsx(Text, { dimColor: true, children: " dev stack" })] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: statuses.map((row) => (_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: row.name.padEnd(10) }), _jsxs(Text, { color: "gray", children: [":", row.port, " "] }), _jsx(ServiceStateLabel, { state: row.state })] }, row.name))) }), _jsx(Text, { dimColor: true, children: "Run `pnpm dev` from the repo root to bring the stack online." })] }));
|
|
53
54
|
}
|
|
54
55
|
function ServiceStateLabel({ state }) {
|
|
55
56
|
if (state === "checking")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevStatus.js","sourceRoot":"","sources":["../../src/components/DevStatus.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DevStatus.js","sourceRoot":"","sources":["../../src/components/DevStatus.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DaemonRequest, DaemonResponse } from "./protocol";
|
|
2
|
+
export declare class DaemonClient {
|
|
3
|
+
private socketPath;
|
|
4
|
+
constructor(socketPath: string);
|
|
5
|
+
/**
|
|
6
|
+
* Check if the daemon is running (socket file exists and is connectable).
|
|
7
|
+
*/
|
|
8
|
+
isRunning(): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Send a request to the daemon and wait for a response.
|
|
11
|
+
* Throws if the daemon is unreachable.
|
|
12
|
+
*/
|
|
13
|
+
send(request: DaemonRequest): Promise<DaemonResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* Compile context via the daemon.
|
|
16
|
+
*/
|
|
17
|
+
compile(taskFrame: unknown, budget?: unknown): Promise<unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Query memories via the daemon.
|
|
20
|
+
*/
|
|
21
|
+
query(namespace: {
|
|
22
|
+
org: string;
|
|
23
|
+
workspace: string;
|
|
24
|
+
}, limit?: number): Promise<unknown>;
|
|
25
|
+
/**
|
|
26
|
+
* Ask the daemon to shut down gracefully.
|
|
27
|
+
*/
|
|
28
|
+
shutdown(): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhE,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM;IAI9B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAUnC;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAmC3D;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrE;;OAEG;IACG,KAAK,CAAC,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxF;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon client — CLI processes use this to communicate with the
|
|
3
|
+
* persistent context daemon over a Unix socket.
|
|
4
|
+
*
|
|
5
|
+
* If the daemon isn't running, falls back to inline execution (slow path).
|
|
6
|
+
*/
|
|
7
|
+
import * as net from "node:net";
|
|
8
|
+
import * as fs from "node:fs";
|
|
9
|
+
export class DaemonClient {
|
|
10
|
+
socketPath;
|
|
11
|
+
constructor(socketPath) {
|
|
12
|
+
this.socketPath = socketPath;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Check if the daemon is running (socket file exists and is connectable).
|
|
16
|
+
*/
|
|
17
|
+
async isRunning() {
|
|
18
|
+
if (!fs.existsSync(this.socketPath))
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
const result = await this.send({ id: "ping", method: "health", params: {} });
|
|
22
|
+
return result?.result !== undefined;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Send a request to the daemon and wait for a response.
|
|
30
|
+
* Throws if the daemon is unreachable.
|
|
31
|
+
*/
|
|
32
|
+
async send(request) {
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
const socket = net.createConnection(this.socketPath);
|
|
35
|
+
let buffer = "";
|
|
36
|
+
socket.on("connect", () => {
|
|
37
|
+
socket.write(JSON.stringify(request) + "\n");
|
|
38
|
+
});
|
|
39
|
+
socket.on("data", (data) => {
|
|
40
|
+
buffer += data.toString();
|
|
41
|
+
const lines = buffer.split("\n");
|
|
42
|
+
for (const line of lines) {
|
|
43
|
+
if (!line.trim())
|
|
44
|
+
continue;
|
|
45
|
+
try {
|
|
46
|
+
const response = JSON.parse(line);
|
|
47
|
+
socket.destroy();
|
|
48
|
+
resolve(response);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
catch { /* incomplete line */ }
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
socket.on("error", (err) => {
|
|
55
|
+
reject(new Error(`Daemon connection failed: ${err.message}`));
|
|
56
|
+
});
|
|
57
|
+
// Timeout after 30s
|
|
58
|
+
socket.setTimeout(30000, () => {
|
|
59
|
+
socket.destroy();
|
|
60
|
+
reject(new Error("Daemon request timed out"));
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Compile context via the daemon.
|
|
66
|
+
*/
|
|
67
|
+
async compile(taskFrame, budget) {
|
|
68
|
+
const response = await this.send({
|
|
69
|
+
id: crypto.randomUUID(),
|
|
70
|
+
method: "compile",
|
|
71
|
+
params: { taskFrame: taskFrame, budget: budget },
|
|
72
|
+
});
|
|
73
|
+
if (response.error)
|
|
74
|
+
throw new Error(response.error.message);
|
|
75
|
+
return response.result;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Query memories via the daemon.
|
|
79
|
+
*/
|
|
80
|
+
async query(namespace, limit = 50) {
|
|
81
|
+
const response = await this.send({
|
|
82
|
+
id: crypto.randomUUID(),
|
|
83
|
+
method: "query",
|
|
84
|
+
params: { namespace, limit },
|
|
85
|
+
});
|
|
86
|
+
if (response.error)
|
|
87
|
+
throw new Error(response.error.message);
|
|
88
|
+
return response.result;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Ask the daemon to shut down gracefully.
|
|
92
|
+
*/
|
|
93
|
+
async shutdown() {
|
|
94
|
+
await this.send({ id: crypto.randomUUID(), method: "shutdown", params: {} });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/daemon/code-graph/builder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAoC,MAAM,SAAS,CAAC;AAY3E;;GAEG;AACH,wBAAsB,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI9E"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code graph builder — constructs the initial code graph from a workspace
|
|
3
|
+
* by walking files and extracting symbols.
|
|
4
|
+
*
|
|
5
|
+
* Uses a simplified AST-like extraction (no tree-sitter dep for now).
|
|
6
|
+
* In production, tree-sitter parsers from packages/ingestion would be used.
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from "node:fs";
|
|
9
|
+
import * as path from "node:path";
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
11
|
+
const SUPPORTED_EXTENSIONS = new Set([
|
|
12
|
+
".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
|
|
13
|
+
".py", ".go", ".rs", ".java", ".kt",
|
|
14
|
+
]);
|
|
15
|
+
const IGNORE_DIRS = new Set([
|
|
16
|
+
"node_modules", ".git", ".next", "dist", "coverage",
|
|
17
|
+
".turbo", ".vercel", "__pycache__",
|
|
18
|
+
]);
|
|
19
|
+
/**
|
|
20
|
+
* Build a code graph from a workspace root directory.
|
|
21
|
+
*/
|
|
22
|
+
export async function buildCodeGraph(workspaceRoot) {
|
|
23
|
+
const graph = { nodes: new Map(), edges: [] };
|
|
24
|
+
await walkDirectory(workspaceRoot, workspaceRoot, graph);
|
|
25
|
+
return graph;
|
|
26
|
+
}
|
|
27
|
+
async function walkDirectory(dir, root, graph) {
|
|
28
|
+
const entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
29
|
+
for (const entry of entries) {
|
|
30
|
+
if (IGNORE_DIRS.has(entry.name))
|
|
31
|
+
continue;
|
|
32
|
+
const fullPath = path.join(dir, entry.name);
|
|
33
|
+
if (entry.isDirectory()) {
|
|
34
|
+
await walkDirectory(fullPath, root, graph);
|
|
35
|
+
}
|
|
36
|
+
else if (entry.isFile() && SUPPORTED_EXTENSIONS.has(path.extname(entry.name))) {
|
|
37
|
+
await processFile(fullPath, root, graph);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async function processFile(filePath, root, graph) {
|
|
42
|
+
const relativePath = path.relative(root, filePath);
|
|
43
|
+
const ext = path.extname(filePath);
|
|
44
|
+
const language = extensionToLanguage(ext);
|
|
45
|
+
// Create file node
|
|
46
|
+
const fileNode = {
|
|
47
|
+
id: computeNodeId(relativePath, path.basename(filePath), "file"),
|
|
48
|
+
kind: "file",
|
|
49
|
+
name: path.basename(filePath),
|
|
50
|
+
path: relativePath,
|
|
51
|
+
range: { start: 0, end: 0 },
|
|
52
|
+
language,
|
|
53
|
+
};
|
|
54
|
+
graph.nodes.set(fileNode.id, fileNode);
|
|
55
|
+
// Extract symbols from the file
|
|
56
|
+
try {
|
|
57
|
+
const content = await fs.promises.readFile(filePath, "utf-8");
|
|
58
|
+
const symbols = extractSymbols(content, relativePath, language);
|
|
59
|
+
for (const symbol of symbols) {
|
|
60
|
+
graph.nodes.set(symbol.id, symbol);
|
|
61
|
+
// File contains the symbol
|
|
62
|
+
graph.edges.push({ source: fileNode.id, target: symbol.id, type: "contains" });
|
|
63
|
+
}
|
|
64
|
+
// Extract imports
|
|
65
|
+
const imports = extractImports(content, relativePath, root);
|
|
66
|
+
graph.edges.push(...imports);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Skip files that can't be read
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Extract symbol definitions from file content.
|
|
74
|
+
* Simplified regex-based extraction — tree-sitter in production.
|
|
75
|
+
*/
|
|
76
|
+
function extractSymbols(content, filePath, language) {
|
|
77
|
+
const symbols = [];
|
|
78
|
+
const lines = content.split("\n");
|
|
79
|
+
for (let i = 0; i < lines.length; i++) {
|
|
80
|
+
const line = lines[i];
|
|
81
|
+
// Function declarations
|
|
82
|
+
const fnMatch = line.match(/(?:export\s+)?(?:async\s+)?function\s+(\w+)/);
|
|
83
|
+
if (fnMatch) {
|
|
84
|
+
symbols.push({
|
|
85
|
+
id: computeNodeId(filePath, fnMatch[1], "function"),
|
|
86
|
+
kind: "function",
|
|
87
|
+
name: fnMatch[1],
|
|
88
|
+
path: filePath,
|
|
89
|
+
range: { start: i + 1, end: findEndLine(lines, i) },
|
|
90
|
+
language,
|
|
91
|
+
signature: line.trim(),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Class declarations
|
|
95
|
+
const classMatch = line.match(/(?:export\s+)?(?:abstract\s+)?class\s+(\w+)/);
|
|
96
|
+
if (classMatch) {
|
|
97
|
+
symbols.push({
|
|
98
|
+
id: computeNodeId(filePath, classMatch[1], "class"),
|
|
99
|
+
kind: "class",
|
|
100
|
+
name: classMatch[1],
|
|
101
|
+
path: filePath,
|
|
102
|
+
range: { start: i + 1, end: findEndLine(lines, i) },
|
|
103
|
+
language,
|
|
104
|
+
signature: line.trim(),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
// Interface/type declarations
|
|
108
|
+
const typeMatch = line.match(/(?:export\s+)?(?:interface|type)\s+(\w+)/);
|
|
109
|
+
if (typeMatch) {
|
|
110
|
+
symbols.push({
|
|
111
|
+
id: computeNodeId(filePath, typeMatch[1], "type"),
|
|
112
|
+
kind: "type",
|
|
113
|
+
name: typeMatch[1],
|
|
114
|
+
path: filePath,
|
|
115
|
+
range: { start: i + 1, end: findEndLine(lines, i) },
|
|
116
|
+
language,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return symbols;
|
|
121
|
+
}
|
|
122
|
+
/** Extensions tried (in order) when resolving an import specifier to a file. */
|
|
123
|
+
const RESOLVE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
|
|
124
|
+
/**
|
|
125
|
+
* Resolve a *relative* import specifier to the workspace-relative path of the
|
|
126
|
+
* file it actually points to, so the resulting edge targets the same node id
|
|
127
|
+
* the file node was created with (`computeNodeId(relPath, basename, "file")`).
|
|
128
|
+
*
|
|
129
|
+
* Handles the TS-ESM convention where the specifier carries a `.js` extension
|
|
130
|
+
* that maps to a `.ts`/`.tsx` source, extensionless specifiers, and directory
|
|
131
|
+
* imports resolving to `index.*`. Returns null when nothing resolves on disk
|
|
132
|
+
* (e.g. a type-only path, or a target outside the walked tree). Bare and
|
|
133
|
+
* workspace-aliased specifiers (`react`, `@oxagen/*`) are not resolved here —
|
|
134
|
+
* they need a package/path map and would otherwise produce phantom edges.
|
|
135
|
+
*/
|
|
136
|
+
function resolveRelativeImport(spec, importerRelPath, root) {
|
|
137
|
+
const baseAbs = path.resolve(root, path.dirname(importerRelPath), spec);
|
|
138
|
+
const ext = path.extname(baseAbs);
|
|
139
|
+
const stem = ext ? baseAbs.slice(0, -ext.length) : baseAbs;
|
|
140
|
+
const candidates = [];
|
|
141
|
+
if (ext && SUPPORTED_EXTENSIONS.has(ext))
|
|
142
|
+
candidates.push(baseAbs); // already a source file
|
|
143
|
+
for (const e of RESOLVE_EXTENSIONS)
|
|
144
|
+
candidates.push(stem + e); // ".js" spec → ".ts" source, or extensionless
|
|
145
|
+
for (const e of RESOLVE_EXTENSIONS)
|
|
146
|
+
candidates.push(path.join(baseAbs, "index" + e)); // directory import
|
|
147
|
+
for (const candidate of candidates) {
|
|
148
|
+
try {
|
|
149
|
+
if (fs.statSync(candidate).isFile())
|
|
150
|
+
return path.relative(root, candidate);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// not this candidate
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Extract import edges from file content, resolving each relative specifier to
|
|
160
|
+
* the real target file node so the dependency graph is queryable
|
|
161
|
+
* (imports / dependents / impact analysis).
|
|
162
|
+
*/
|
|
163
|
+
function extractImports(content, filePath, root) {
|
|
164
|
+
const edges = [];
|
|
165
|
+
const fileId = computeNodeId(filePath, path.basename(filePath), "file");
|
|
166
|
+
const seen = new Set();
|
|
167
|
+
// `import … from "x"`, `export … from "x"`, and side-effect `import "x"`.
|
|
168
|
+
const importRegex = /(?:import|export)\s+(?:[^"';]*?\s+from\s+)?["']([^"']+)["']/g;
|
|
169
|
+
let match;
|
|
170
|
+
while ((match = importRegex.exec(content)) !== null) {
|
|
171
|
+
const spec = match[1];
|
|
172
|
+
if (!spec.startsWith("."))
|
|
173
|
+
continue; // only relative imports are resolvable here
|
|
174
|
+
const targetRel = resolveRelativeImport(spec, filePath, root);
|
|
175
|
+
if (!targetRel)
|
|
176
|
+
continue;
|
|
177
|
+
const targetId = computeNodeId(targetRel, path.basename(targetRel), "file");
|
|
178
|
+
if (targetId === fileId || seen.has(targetId))
|
|
179
|
+
continue;
|
|
180
|
+
seen.add(targetId);
|
|
181
|
+
edges.push({ source: fileId, target: targetId, type: "imports" });
|
|
182
|
+
}
|
|
183
|
+
return edges;
|
|
184
|
+
}
|
|
185
|
+
function computeNodeId(path, name, kind) {
|
|
186
|
+
return createHash("sha256").update(`${path}:${name}:${kind}`).digest("hex").slice(0, 32);
|
|
187
|
+
}
|
|
188
|
+
function findEndLine(lines, startLine) {
|
|
189
|
+
let braceCount = 0;
|
|
190
|
+
let started = false;
|
|
191
|
+
for (let i = startLine; i < lines.length; i++) {
|
|
192
|
+
for (const char of lines[i]) {
|
|
193
|
+
if (char === "{") {
|
|
194
|
+
braceCount++;
|
|
195
|
+
started = true;
|
|
196
|
+
}
|
|
197
|
+
if (char === "}") {
|
|
198
|
+
braceCount--;
|
|
199
|
+
}
|
|
200
|
+
if (started && braceCount === 0)
|
|
201
|
+
return i + 1;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return startLine + 1;
|
|
205
|
+
}
|
|
206
|
+
function extensionToLanguage(ext) {
|
|
207
|
+
const map = {
|
|
208
|
+
".ts": "typescript", ".tsx": "typescript", ".js": "javascript",
|
|
209
|
+
".jsx": "javascript", ".mjs": "javascript", ".cjs": "javascript",
|
|
210
|
+
".py": "python", ".go": "go", ".rs": "rust",
|
|
211
|
+
".java": "java", ".kt": "kotlin",
|
|
212
|
+
};
|
|
213
|
+
return map[ext] ?? "unknown";
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/daemon/code-graph/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code graph query API — answers structural questions about the codebase.
|
|
3
|
+
*/
|
|
4
|
+
import type { CodeGraph, CodeNode, CodeEdgeType, GraphQueryResult } from "./types";
|
|
5
|
+
/**
|
|
6
|
+
* Get k-hop neighbors of a node.
|
|
7
|
+
*/
|
|
8
|
+
export declare function neighbors(graph: CodeGraph, nodeId: string, hops?: number, edgeTypes?: CodeEdgeType[]): GraphQueryResult;
|
|
9
|
+
/**
|
|
10
|
+
* Find all callers of a function.
|
|
11
|
+
*/
|
|
12
|
+
export declare function callers(graph: CodeGraph, functionId: string): CodeNode[];
|
|
13
|
+
/**
|
|
14
|
+
* Find all callees of a function.
|
|
15
|
+
*/
|
|
16
|
+
export declare function callees(graph: CodeGraph, functionId: string): CodeNode[];
|
|
17
|
+
/**
|
|
18
|
+
* Find all files that a given file imports.
|
|
19
|
+
*/
|
|
20
|
+
export declare function imports(graph: CodeGraph, fileId: string): CodeNode[];
|
|
21
|
+
/**
|
|
22
|
+
* Find all files that depend on (import) a given file.
|
|
23
|
+
*/
|
|
24
|
+
export declare function dependents(graph: CodeGraph, fileId: string): CodeNode[];
|
|
25
|
+
/**
|
|
26
|
+
* Fuzzy symbol search across the code graph.
|
|
27
|
+
*/
|
|
28
|
+
export declare function searchSymbols(graph: CodeGraph, pattern: string, limit?: number): CodeNode[];
|
|
29
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/daemon/code-graph/query.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAY,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE7F;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,SAAI,EACR,SAAS,CAAC,EAAE,YAAY,EAAE,GACzB,gBAAgB,CAoClB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAQxE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAQxE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAQpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAQvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,EAAE,CAgBvF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get k-hop neighbors of a node.
|
|
3
|
+
*/
|
|
4
|
+
export function neighbors(graph, nodeId, hops = 1, edgeTypes) {
|
|
5
|
+
const visitedNodes = new Set();
|
|
6
|
+
const resultEdges = [];
|
|
7
|
+
let frontier = new Set([nodeId]);
|
|
8
|
+
for (let hop = 0; hop < hops; hop++) {
|
|
9
|
+
const nextFrontier = new Set();
|
|
10
|
+
for (const id of frontier) {
|
|
11
|
+
visitedNodes.add(id);
|
|
12
|
+
for (const edge of graph.edges) {
|
|
13
|
+
if (edgeTypes && !edgeTypes.includes(edge.type))
|
|
14
|
+
continue;
|
|
15
|
+
if (edge.source === id && !visitedNodes.has(edge.target)) {
|
|
16
|
+
nextFrontier.add(edge.target);
|
|
17
|
+
resultEdges.push(edge);
|
|
18
|
+
}
|
|
19
|
+
if (edge.target === id && !visitedNodes.has(edge.source)) {
|
|
20
|
+
nextFrontier.add(edge.source);
|
|
21
|
+
resultEdges.push(edge);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
frontier = nextFrontier;
|
|
26
|
+
}
|
|
27
|
+
// Add final frontier to visited
|
|
28
|
+
for (const id of frontier)
|
|
29
|
+
visitedNodes.add(id);
|
|
30
|
+
const nodes = [...visitedNodes]
|
|
31
|
+
.map((id) => graph.nodes.get(id))
|
|
32
|
+
.filter((n) => n !== undefined);
|
|
33
|
+
return { nodes, edges: resultEdges };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Find all callers of a function.
|
|
37
|
+
*/
|
|
38
|
+
export function callers(graph, functionId) {
|
|
39
|
+
const callerIds = graph.edges
|
|
40
|
+
.filter((e) => e.target === functionId && e.type === "calls")
|
|
41
|
+
.map((e) => e.source);
|
|
42
|
+
return callerIds
|
|
43
|
+
.map((id) => graph.nodes.get(id))
|
|
44
|
+
.filter((n) => n !== undefined);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Find all callees of a function.
|
|
48
|
+
*/
|
|
49
|
+
export function callees(graph, functionId) {
|
|
50
|
+
const calleeIds = graph.edges
|
|
51
|
+
.filter((e) => e.source === functionId && e.type === "calls")
|
|
52
|
+
.map((e) => e.target);
|
|
53
|
+
return calleeIds
|
|
54
|
+
.map((id) => graph.nodes.get(id))
|
|
55
|
+
.filter((n) => n !== undefined);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Find all files that a given file imports.
|
|
59
|
+
*/
|
|
60
|
+
export function imports(graph, fileId) {
|
|
61
|
+
const importedIds = graph.edges
|
|
62
|
+
.filter((e) => e.source === fileId && e.type === "imports")
|
|
63
|
+
.map((e) => e.target);
|
|
64
|
+
return importedIds
|
|
65
|
+
.map((id) => graph.nodes.get(id))
|
|
66
|
+
.filter((n) => n !== undefined);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Find all files that depend on (import) a given file.
|
|
70
|
+
*/
|
|
71
|
+
export function dependents(graph, fileId) {
|
|
72
|
+
const depIds = graph.edges
|
|
73
|
+
.filter((e) => e.target === fileId && e.type === "imports")
|
|
74
|
+
.map((e) => e.source);
|
|
75
|
+
return depIds
|
|
76
|
+
.map((id) => graph.nodes.get(id))
|
|
77
|
+
.filter((n) => n !== undefined);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Fuzzy symbol search across the code graph.
|
|
81
|
+
*/
|
|
82
|
+
export function searchSymbols(graph, pattern, limit = 20) {
|
|
83
|
+
const lower = pattern.toLowerCase();
|
|
84
|
+
const results = [];
|
|
85
|
+
for (const node of graph.nodes.values()) {
|
|
86
|
+
if (node.kind === "file")
|
|
87
|
+
continue; // Skip file nodes in symbol search
|
|
88
|
+
const name = node.name.toLowerCase();
|
|
89
|
+
if (name.includes(lower)) {
|
|
90
|
+
// Score: exact match > prefix > contains
|
|
91
|
+
const score = name === lower ? 3 : name.startsWith(lower) ? 2 : 1;
|
|
92
|
+
results.push({ node, score });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
results.sort((a, b) => b.score - a.score);
|
|
96
|
+
return results.slice(0, limit).map((r) => r.node);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/daemon/code-graph/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code graph entity types — nodes and edges representing code structure.
|
|
3
|
+
*/
|
|
4
|
+
export type CodeNodeKind = "file" | "function" | "class" | "method" | "variable" | "import" | "export" | "type" | "interface";
|
|
5
|
+
export interface CodeNode {
|
|
6
|
+
/** Content-addressed: hash of path + name + kind. */
|
|
7
|
+
id: string;
|
|
8
|
+
kind: CodeNodeKind;
|
|
9
|
+
name: string;
|
|
10
|
+
/** File path relative to workspace root. */
|
|
11
|
+
path: string;
|
|
12
|
+
/** Line range in the file. */
|
|
13
|
+
range: {
|
|
14
|
+
start: number;
|
|
15
|
+
end: number;
|
|
16
|
+
};
|
|
17
|
+
language: string;
|
|
18
|
+
/** Function/method signature if applicable. */
|
|
19
|
+
signature?: string;
|
|
20
|
+
/** JSDoc/docstring if present. */
|
|
21
|
+
docstring?: string;
|
|
22
|
+
}
|
|
23
|
+
export type CodeEdgeType = "calls" | "imports" | "exports" | "extends" | "implements" | "contains" | "references";
|
|
24
|
+
export interface CodeEdge {
|
|
25
|
+
source: string;
|
|
26
|
+
target: string;
|
|
27
|
+
type: CodeEdgeType;
|
|
28
|
+
}
|
|
29
|
+
export interface CodeGraph {
|
|
30
|
+
nodes: Map<string, CodeNode>;
|
|
31
|
+
edges: CodeEdge[];
|
|
32
|
+
}
|
|
33
|
+
export interface GraphQueryResult {
|
|
34
|
+
nodes: CodeNode[];
|
|
35
|
+
edges: CodeEdge[];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/daemon/code-graph/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,UAAU,GACV,OAAO,GACP,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,WAAW,CAAC;AAEhB,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,SAAS,GACT,SAAS,GACT,SAAS,GACT,YAAY,GACZ,UAAU,GACV,YAAY,CAAC;AAEjB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/daemon/code-graph/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|