@maiaos/cli 0.1.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +287 -0
- package/dist/bin/maia.NOTICES.txt +59 -0
- package/dist/bin/maia.cdx.json +145 -0
- package/dist/bin/maia.mjs +2 -0
- package/dist/bootstrap/index.d.ts +3 -0
- package/dist/bootstrap/index.js +3 -0
- package/dist/bootstrap/process.d.ts +5 -0
- package/dist/bootstrap/process.js +45 -0
- package/dist/bootstrap/run.d.ts +25 -0
- package/dist/bootstrap/run.js +95 -0
- package/dist/bootstrap/stdio.d.ts +4 -0
- package/dist/bootstrap/stdio.js +9 -0
- package/dist/cli/cli.d.ts +17 -0
- package/dist/cli/cli.js +481 -0
- package/dist/cli/environment.d.ts +8 -0
- package/dist/cli/environment.js +12 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/services.d.ts +4 -0
- package/dist/cli/services.js +4 -0
- package/dist/command-line/context.d.ts +178 -0
- package/dist/command-line/context.js +2 -0
- package/dist/command-line/index.d.ts +7 -0
- package/dist/command-line/index.js +6 -0
- package/dist/command-line/input/arguments.d.ts +55 -0
- package/dist/command-line/input/arguments.js +220 -0
- package/dist/command-line/input/index.d.ts +4 -0
- package/dist/command-line/input/index.js +4 -0
- package/dist/command-line/input/prompt.d.ts +8 -0
- package/dist/command-line/input/prompt.js +44 -0
- package/dist/command-line/input/stdin-stream.d.ts +4 -0
- package/dist/command-line/input/stdin-stream.js +3 -0
- package/dist/command-line/input/stdin.d.ts +11 -0
- package/dist/command-line/input/stdin.js +23 -0
- package/dist/command-line/json-decoder.d.ts +3 -0
- package/dist/command-line/json-decoder.js +3 -0
- package/dist/command-line/json.d.ts +3 -0
- package/dist/command-line/json.js +4 -0
- package/dist/command-line/output.d.ts +57 -0
- package/dist/command-line/output.js +94 -0
- package/dist/command-line/rows.d.ts +10 -0
- package/dist/command-line/rows.js +32 -0
- package/dist/command-line/two-phase.d.ts +57 -0
- package/dist/command-line/two-phase.js +148 -0
- package/dist/command-receipt/command.d.ts +4 -0
- package/dist/command-receipt/command.js +59 -0
- package/dist/command-receipt/compact-list.d.ts +20 -0
- package/dist/command-receipt/compact-list.js +29 -0
- package/dist/command-receipt/index.d.ts +3 -0
- package/dist/command-receipt/index.js +3 -0
- package/dist/command-tree/commands.d.ts +17 -0
- package/dist/command-tree/commands.js +41 -0
- package/dist/command-tree/completion.d.ts +6 -0
- package/dist/command-tree/completion.js +36 -0
- package/dist/command-tree/grammar.d.ts +18 -0
- package/dist/command-tree/grammar.js +160 -0
- package/dist/command-tree/help.d.ts +62 -0
- package/dist/command-tree/help.js +219 -0
- package/dist/command-tree/index.d.ts +8 -0
- package/dist/command-tree/index.js +6 -0
- package/dist/command-tree/local.d.ts +3 -0
- package/dist/command-tree/local.js +126 -0
- package/dist/command-tree/placeholder.d.ts +3 -0
- package/dist/command-tree/placeholder.js +4 -0
- package/dist/command-tree/row.d.ts +29 -0
- package/dist/command-tree/row.js +2 -0
- package/dist/command-tree/suggest.d.ts +3 -0
- package/dist/command-tree/suggest.js +81 -0
- package/dist/command-tree/tree.d.ts +34 -0
- package/dist/command-tree/tree.js +124 -0
- package/dist/connection/client.d.ts +692 -0
- package/dist/connection/client.js +28 -0
- package/dist/connection/commands.d.ts +15 -0
- package/dist/connection/commands.js +118 -0
- package/dist/connection/index.d.ts +7 -0
- package/dist/connection/index.js +7 -0
- package/dist/connection/input.d.ts +50 -0
- package/dist/connection/input.js +90 -0
- package/dist/connection/login.d.ts +13 -0
- package/dist/connection/login.js +69 -0
- package/dist/connection/output/format.d.ts +32 -0
- package/dist/connection/output/format.js +94 -0
- package/dist/connection/output/index.d.ts +2 -0
- package/dist/connection/output/index.js +2 -0
- package/dist/connection/resolve.d.ts +60 -0
- package/dist/connection/resolve.js +30 -0
- package/dist/connection/signin.d.ts +4 -0
- package/dist/connection/signin.js +32 -0
- package/dist/connection/system.d.ts +4 -0
- package/dist/connection/system.js +190 -0
- package/dist/connection/tree/index.d.ts +2 -0
- package/dist/connection/tree/index.js +2 -0
- package/dist/connection/tree/tree.d.ts +3 -0
- package/dist/connection/tree/tree.js +209 -0
- package/dist/container/client.d.ts +142 -0
- package/dist/container/client.js +11 -0
- package/dist/container/commands.d.ts +7 -0
- package/dist/container/commands.js +100 -0
- package/dist/container/index.d.ts +3 -0
- package/dist/container/index.js +3 -0
- package/dist/container/output/format.d.ts +11 -0
- package/dist/container/output/format.js +28 -0
- package/dist/container/output/index.d.ts +2 -0
- package/dist/container/output/index.js +2 -0
- package/dist/context/client.d.ts +7 -0
- package/dist/context/client.js +21 -0
- package/dist/context/commands.d.ts +3 -0
- package/dist/context/commands.js +27 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.js +3 -0
- package/dist/development/cli.d.ts +3 -0
- package/dist/development/cli.js +44 -0
- package/dist/execution/client.d.ts +25 -0
- package/dist/execution/client.js +24 -0
- package/dist/execution/index.d.ts +3 -0
- package/dist/execution/index.js +3 -0
- package/dist/execution/relocation.d.ts +6 -0
- package/dist/execution/relocation.js +123 -0
- package/dist/execution/tree/index.d.ts +2 -0
- package/dist/execution/tree/index.js +2 -0
- package/dist/execution/tree/tree.d.ts +3 -0
- package/dist/execution/tree/tree.js +137 -0
- package/dist/hold/client.d.ts +137 -0
- package/dist/hold/client.js +12 -0
- package/dist/hold/commands.d.ts +5 -0
- package/dist/hold/commands.js +91 -0
- package/dist/hold/index.d.ts +3 -0
- package/dist/hold/index.js +3 -0
- package/dist/hold/output/format.d.ts +11 -0
- package/dist/hold/output/format.js +29 -0
- package/dist/hold/output/index.d.ts +2 -0
- package/dist/hold/output/index.js +2 -0
- package/dist/hold/tree/index.d.ts +2 -0
- package/dist/hold/tree/index.js +2 -0
- package/dist/hold/tree/tree.d.ts +3 -0
- package/dist/hold/tree/tree.js +96 -0
- package/dist/import/client.d.ts +14 -0
- package/dist/import/client.js +16 -0
- package/dist/import/commands.d.ts +5 -0
- package/dist/import/commands.js +76 -0
- package/dist/import/index.d.ts +3 -0
- package/dist/import/index.js +3 -0
- package/dist/import/input.d.ts +16 -0
- package/dist/import/input.js +92 -0
- package/dist/import/output.d.ts +6 -0
- package/dist/import/output.js +40 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/integration/client.d.ts +1284 -0
- package/dist/integration/client.js +24 -0
- package/dist/integration/commands.d.ts +10 -0
- package/dist/integration/commands.js +104 -0
- package/dist/integration/index.d.ts +3 -0
- package/dist/integration/index.js +3 -0
- package/dist/integration/output.d.ts +22 -0
- package/dist/integration/output.js +20 -0
- package/dist/local-node/call.d.ts +7 -0
- package/dist/local-node/call.js +13 -0
- package/dist/local-node/client.d.ts +67 -0
- package/dist/local-node/client.js +241 -0
- package/dist/local-node/index.d.ts +3 -0
- package/dist/local-node/index.js +3 -0
- package/dist/login/agent-provider.d.ts +20 -0
- package/dist/login/agent-provider.js +109 -0
- package/dist/login/commands.d.ts +4 -0
- package/dist/login/commands.js +93 -0
- package/dist/login/failure.d.ts +3 -0
- package/dist/login/failure.js +14 -0
- package/dist/login/gateway.d.ts +12 -0
- package/dist/login/gateway.js +71 -0
- package/dist/login/index.d.ts +3 -0
- package/dist/login/index.js +2 -0
- package/dist/login/menu.d.ts +4 -0
- package/dist/login/menu.js +105 -0
- package/dist/login/output/format.d.ts +16 -0
- package/dist/login/output/format.js +31 -0
- package/dist/login/output/index.d.ts +2 -0
- package/dist/login/output/index.js +2 -0
- package/dist/login/vendor-account.d.ts +95 -0
- package/dist/login/vendor-account.js +75 -0
- package/dist/login/vendor-input.d.ts +14 -0
- package/dist/login/vendor-input.js +36 -0
- package/dist/mcp/calls.d.ts +7 -0
- package/dist/mcp/calls.js +202 -0
- package/dist/mcp/commands.d.ts +9 -0
- package/dist/mcp/commands.js +21 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.js +57 -0
- package/dist/orchestration/client.d.ts +78 -0
- package/dist/orchestration/client.js +89 -0
- package/dist/orchestration/commands.d.ts +14 -0
- package/dist/orchestration/commands.js +312 -0
- package/dist/orchestration/index.d.ts +3 -0
- package/dist/orchestration/index.js +3 -0
- package/dist/orchestration/output/compact-aggregate.d.ts +121 -0
- package/dist/orchestration/output/compact-aggregate.js +110 -0
- package/dist/orchestration/output/compact-run-list.d.ts +20 -0
- package/dist/orchestration/output/compact-run-list.js +16 -0
- package/dist/orchestration/output/human.d.ts +80 -0
- package/dist/orchestration/output/human.js +252 -0
- package/dist/orchestration/output/index.d.ts +4 -0
- package/dist/orchestration/output/index.js +4 -0
- package/dist/orchestration/tree/index.d.ts +2 -0
- package/dist/orchestration/tree/index.js +2 -0
- package/dist/orchestration/tree/tree.d.ts +3 -0
- package/dist/orchestration/tree/tree.js +142 -0
- package/dist/port-lease/client.d.ts +160 -0
- package/dist/port-lease/client.js +11 -0
- package/dist/port-lease/commands.d.ts +6 -0
- package/dist/port-lease/commands.js +17 -0
- package/dist/port-lease/index.d.ts +3 -0
- package/dist/port-lease/index.js +3 -0
- package/dist/port-lease/input.d.ts +65 -0
- package/dist/port-lease/input.js +67 -0
- package/dist/port-lease/output/format.d.ts +11 -0
- package/dist/port-lease/output/format.js +24 -0
- package/dist/port-lease/output/index.d.ts +2 -0
- package/dist/port-lease/output/index.js +2 -0
- package/dist/presentation/client.d.ts +10 -0
- package/dist/presentation/client.js +9 -0
- package/dist/presentation/commands.d.ts +6 -0
- package/dist/presentation/commands.js +78 -0
- package/dist/presentation/index.d.ts +4 -0
- package/dist/presentation/index.js +3 -0
- package/dist/presentation/output/format.d.ts +11 -0
- package/dist/presentation/output/format.js +32 -0
- package/dist/presentation/output/index.d.ts +3 -0
- package/dist/presentation/output/index.js +2 -0
- package/dist/project-guard/client.d.ts +88 -0
- package/dist/project-guard/client.js +7 -0
- package/dist/project-guard/commands.d.ts +4 -0
- package/dist/project-guard/commands.js +39 -0
- package/dist/project-guard/index.d.ts +3 -0
- package/dist/project-guard/index.js +3 -0
- package/dist/project-guard/input.d.ts +18 -0
- package/dist/project-guard/input.js +47 -0
- package/dist/project-guard/output/format.d.ts +11 -0
- package/dist/project-guard/output/format.js +35 -0
- package/dist/project-guard/output/index.d.ts +2 -0
- package/dist/project-guard/output/index.js +2 -0
- package/dist/project-workspace/client.d.ts +86 -0
- package/dist/project-workspace/client.js +159 -0
- package/dist/project-workspace/commands.d.ts +30 -0
- package/dist/project-workspace/commands.js +700 -0
- package/dist/project-workspace/index.d.ts +5 -0
- package/dist/project-workspace/index.js +5 -0
- package/dist/project-workspace/metadata-client.d.ts +99 -0
- package/dist/project-workspace/metadata-client.js +8 -0
- package/dist/project-workspace/metadata-commands.d.ts +4 -0
- package/dist/project-workspace/metadata-commands.js +56 -0
- package/dist/project-workspace/output/human.d.ts +126 -0
- package/dist/project-workspace/output/human.js +103 -0
- package/dist/project-workspace/output/index.d.ts +3 -0
- package/dist/project-workspace/output/index.js +3 -0
- package/dist/project-workspace/output/metadata.d.ts +11 -0
- package/dist/project-workspace/output/metadata.js +17 -0
- package/dist/project-workspace/tree/index.d.ts +2 -0
- package/dist/project-workspace/tree/index.js +2 -0
- package/dist/project-workspace/tree/tree.d.ts +3 -0
- package/dist/project-workspace/tree/tree.js +197 -0
- package/dist/provider/client.d.ts +6 -0
- package/dist/provider/client.js +5 -0
- package/dist/provider/commands.d.ts +3 -0
- package/dist/provider/commands.js +38 -0
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/index.js +3 -0
- package/dist/reference/commands.d.ts +3 -0
- package/dist/reference/commands.js +39 -0
- package/dist/reference/index.d.ts +3 -0
- package/dist/reference/index.js +3 -0
- package/dist/reference/resolve.d.ts +29 -0
- package/dist/reference/resolve.js +294 -0
- package/dist/reference/tree/index.d.ts +2 -0
- package/dist/reference/tree/index.js +2 -0
- package/dist/reference/tree/tree.d.ts +3 -0
- package/dist/reference/tree/tree.js +17 -0
- package/dist/remote-node/client.d.ts +258 -0
- package/dist/remote-node/client.js +12 -0
- package/dist/remote-node/commands.d.ts +6 -0
- package/dist/remote-node/commands.js +264 -0
- package/dist/remote-node/connector.d.ts +59 -0
- package/dist/remote-node/connector.js +122 -0
- package/dist/remote-node/index.d.ts +4 -0
- package/dist/remote-node/index.js +4 -0
- package/dist/remote-node/reachability.d.ts +22 -0
- package/dist/remote-node/reachability.js +34 -0
- package/dist/remote-node/text.d.ts +9 -0
- package/dist/remote-node/text.js +64 -0
- package/dist/remote-node/tree/index.d.ts +2 -0
- package/dist/remote-node/tree/index.js +2 -0
- package/dist/remote-node/tree/tree.d.ts +3 -0
- package/dist/remote-node/tree/tree.js +51 -0
- package/dist/run-ledger/client.d.ts +358 -0
- package/dist/run-ledger/client.js +13 -0
- package/dist/run-ledger/commands.d.ts +8 -0
- package/dist/run-ledger/commands.js +19 -0
- package/dist/run-ledger/index.d.ts +3 -0
- package/dist/run-ledger/index.js +3 -0
- package/dist/run-ledger/input.d.ts +42 -0
- package/dist/run-ledger/input.js +107 -0
- package/dist/run-ledger/output/format.d.ts +11 -0
- package/dist/run-ledger/output/format.js +49 -0
- package/dist/run-ledger/output/index.d.ts +2 -0
- package/dist/run-ledger/output/index.js +2 -0
- package/dist/session/agent-permission.d.ts +63 -0
- package/dist/session/agent-permission.js +20 -0
- package/dist/session/approval/client.d.ts +117 -0
- package/dist/session/approval/client.js +7 -0
- package/dist/session/approval/commands.d.ts +7 -0
- package/dist/session/approval/commands.js +123 -0
- package/dist/session/approval/index.d.ts +3 -0
- package/dist/session/approval/index.js +3 -0
- package/dist/session/approval/output/format.d.ts +12 -0
- package/dist/session/approval/output/format.js +25 -0
- package/dist/session/approval/output/index.d.ts +2 -0
- package/dist/session/approval/output/index.js +2 -0
- package/dist/session/attach-client.d.ts +16 -0
- package/dist/session/attach-client.js +8 -0
- package/dist/session/attach-render.d.ts +16 -0
- package/dist/session/attach-render.js +154 -0
- package/dist/session/attach.d.ts +5 -0
- package/dist/session/attach.js +106 -0
- package/dist/session/client.d.ts +132 -0
- package/dist/session/client.js +128 -0
- package/dist/session/coding-client.d.ts +16 -0
- package/dist/session/coding-client.js +15 -0
- package/dist/session/coding-commands.d.ts +4 -0
- package/dist/session/coding-commands.js +50 -0
- package/dist/session/commands.d.ts +13 -0
- package/dist/session/commands.js +488 -0
- package/dist/session/create-tasks.d.ts +20 -0
- package/dist/session/create-tasks.js +110 -0
- package/dist/session/index.d.ts +9 -0
- package/dist/session/index.js +7 -0
- package/dist/session/interaction/client.d.ts +347 -0
- package/dist/session/interaction/client.js +15 -0
- package/dist/session/interaction/commands.d.ts +7 -0
- package/dist/session/interaction/commands.js +101 -0
- package/dist/session/interaction/index.d.ts +3 -0
- package/dist/session/interaction/index.js +3 -0
- package/dist/session/interaction/input.d.ts +15 -0
- package/dist/session/interaction/input.js +46 -0
- package/dist/session/interaction/output/format.d.ts +11 -0
- package/dist/session/interaction/output/format.js +3 -0
- package/dist/session/interaction/output/index.d.ts +2 -0
- package/dist/session/interaction/output/index.js +2 -0
- package/dist/session/output/diff.d.ts +3 -0
- package/dist/session/output/diff.js +30 -0
- package/dist/session/output/failure.d.ts +11 -0
- package/dist/session/output/failure.js +24 -0
- package/dist/session/output/human.d.ts +112 -0
- package/dist/session/output/human.js +71 -0
- package/dist/session/output/index.d.ts +6 -0
- package/dist/session/output/index.js +6 -0
- package/dist/session/output/observe.d.ts +4 -0
- package/dist/session/output/observe.js +46 -0
- package/dist/session/output/tasks.d.ts +19 -0
- package/dist/session/output/tasks.js +34 -0
- package/dist/session/rename.d.ts +3 -0
- package/dist/session/rename.js +37 -0
- package/dist/session/task-file.d.ts +5 -0
- package/dist/session/task-file.js +23 -0
- package/dist/session/tree/index.d.ts +2 -0
- package/dist/session/tree/index.js +2 -0
- package/dist/session/tree/tree.d.ts +3 -0
- package/dist/session/tree/tree.js +309 -0
- package/dist/session/turn/client.d.ts +25 -0
- package/dist/session/turn/client.js +40 -0
- package/dist/session/turn/commands.d.ts +6 -0
- package/dist/session/turn/commands.js +157 -0
- package/dist/session/turn/index.d.ts +4 -0
- package/dist/session/turn/index.js +3 -0
- package/dist/session/turn/output.d.ts +42 -0
- package/dist/session/turn/output.js +38 -0
- package/dist/status/client.d.ts +119 -0
- package/dist/status/client.js +5 -0
- package/dist/status/command.d.ts +4 -0
- package/dist/status/command.js +40 -0
- package/dist/status/doctor.d.ts +15 -0
- package/dist/status/doctor.js +111 -0
- package/dist/status/index.d.ts +5 -0
- package/dist/status/index.js +4 -0
- package/dist/status/output/compact.d.ts +31 -0
- package/dist/status/output/compact.js +46 -0
- package/dist/status/output/human.d.ts +7 -0
- package/dist/status/output/human.js +30 -0
- package/dist/status/output/index.d.ts +3 -0
- package/dist/status/output/index.js +3 -0
- package/dist/terminal/arguments.d.ts +13 -0
- package/dist/terminal/arguments.js +79 -0
- package/dist/terminal/client.d.ts +79 -0
- package/dist/terminal/client.js +68 -0
- package/dist/terminal/commands.d.ts +7 -0
- package/dist/terminal/commands.js +131 -0
- package/dist/terminal/control-commands.d.ts +10 -0
- package/dist/terminal/control-commands.js +212 -0
- package/dist/terminal/index.d.ts +4 -0
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/output/compact-list.d.ts +147 -0
- package/dist/terminal/output/compact-list.js +152 -0
- package/dist/terminal/output/human.d.ts +59 -0
- package/dist/terminal/output/human.js +55 -0
- package/dist/terminal/output/index.d.ts +3 -0
- package/dist/terminal/output/index.js +3 -0
- package/dist/terminal/tree/index.d.ts +2 -0
- package/dist/terminal/tree/index.js +2 -0
- package/dist/terminal/tree/tree.d.ts +3 -0
- package/dist/terminal/tree/tree.js +104 -0
- package/guidance/maia-cli/SKILL.md +58 -0
- package/guidance/maia-orchestration/SKILL.md +54 -0
- package/package.json +76 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { findNode, treeNodes } from "./tree.js";
|
|
2
|
+
const PATH_WORD = /^[a-z][a-z0-9-]*$/u;
|
|
3
|
+
const MAXIMUM_SUGGESTIONS = 3;
|
|
4
|
+
const RETIRED_WORDS = new Map([
|
|
5
|
+
["add", ["register", "install", "attach"]],
|
|
6
|
+
["limit", ["capacity"]],
|
|
7
|
+
["recovery", ["doctor"]],
|
|
8
|
+
["signin", ["login"]],
|
|
9
|
+
]);
|
|
10
|
+
const stem = (word) => word.replace(/-(?:preview|confirm)$/u, "").replace(/s$/u, "");
|
|
11
|
+
const commonPrefix = (left, right, at = 0) => at < left.length && left[at] === right[at]
|
|
12
|
+
? commonPrefix(left, right, at + 1)
|
|
13
|
+
: at;
|
|
14
|
+
const resembles = (typed, name) => {
|
|
15
|
+
const [left, right] = [stem(typed), stem(name)];
|
|
16
|
+
if (left === right)
|
|
17
|
+
return true;
|
|
18
|
+
if (name.split("-").some((part) => stem(part) === left))
|
|
19
|
+
return true;
|
|
20
|
+
const shared = commonPrefix(left, right);
|
|
21
|
+
return shared >= 4 && shared >= Math.min(left.length, right.length) - 2;
|
|
22
|
+
};
|
|
23
|
+
const typedWords = (word) => [
|
|
24
|
+
word,
|
|
25
|
+
...(RETIRED_WORDS.get(word) ?? []),
|
|
26
|
+
];
|
|
27
|
+
const matches = (node, word) => typedWords(word).some((typed) => node.path.some((name) => resembles(typed, name)));
|
|
28
|
+
const strength = (node, word) => {
|
|
29
|
+
const typed = typedWords(word);
|
|
30
|
+
if (typed.some((each) => stem(each) === stem(node.name)))
|
|
31
|
+
return 2;
|
|
32
|
+
return typed.some((each) => resembles(each, node.name)) ? 1 : 0;
|
|
33
|
+
};
|
|
34
|
+
const collapse = (node) => {
|
|
35
|
+
const [only, ...others] = node.children;
|
|
36
|
+
return node.forms.length === 0 && only !== undefined && others.length === 0
|
|
37
|
+
? collapse(only)
|
|
38
|
+
: node;
|
|
39
|
+
};
|
|
40
|
+
export const suggestPaths = (tokens) => {
|
|
41
|
+
const words = tokens.filter((token) => PATH_WORD.test(token));
|
|
42
|
+
const { consumed } = findNode(tokens);
|
|
43
|
+
const unknown = tokens[consumed];
|
|
44
|
+
if (unknown === undefined || !PATH_WORD.test(unknown))
|
|
45
|
+
return [];
|
|
46
|
+
const scored = treeNodes()
|
|
47
|
+
.filter((node) => matches(node, unknown))
|
|
48
|
+
.map((node) => ({
|
|
49
|
+
node,
|
|
50
|
+
score: words.filter((word) => matches(node, word)).length,
|
|
51
|
+
strength: strength(node, unknown),
|
|
52
|
+
}));
|
|
53
|
+
const best = Math.max(0, ...scored.map(({ score }) => score));
|
|
54
|
+
const top = scored.filter(({ score }) => score === best);
|
|
55
|
+
const strongest = Math.max(0, ...top.map((entry) => entry.strength));
|
|
56
|
+
const paths = top
|
|
57
|
+
.filter((entry) => entry.strength === strongest)
|
|
58
|
+
.toSorted((left, right) => Number(right.node.forms.length > 0) -
|
|
59
|
+
Number(left.node.forms.length > 0) ||
|
|
60
|
+
left.node.path.length - right.node.path.length)
|
|
61
|
+
.map(({ node }) => `maia ${collapse(node).path.join(" ")}`);
|
|
62
|
+
return [...new Set(paths)].slice(0, MAXIMUM_SUGGESTIONS);
|
|
63
|
+
};
|
|
64
|
+
export const unknownPathMessage = (tokens) => {
|
|
65
|
+
const { consumed, node } = findNode(tokens);
|
|
66
|
+
const unknown = tokens[consumed];
|
|
67
|
+
const children = node.children.map((child) => child.name).join(", ");
|
|
68
|
+
if (unknown === undefined)
|
|
69
|
+
return `'maia ${node.path.join(" ")}' takes a command: ${children}.`;
|
|
70
|
+
if (unknown.startsWith("-"))
|
|
71
|
+
return node.path.length === 0
|
|
72
|
+
? `Unknown option '${unknown}'.`
|
|
73
|
+
: `'maia ${node.path.join(" ")}' takes a command: ${children}.`;
|
|
74
|
+
const suggestions = suggestPaths(tokens);
|
|
75
|
+
if (suggestions.length > 0)
|
|
76
|
+
return `Unknown command '${unknown}'. Did you mean ${suggestions.map((path) => `'${path}'`).join(", ")}?`;
|
|
77
|
+
return node.path.length === 0
|
|
78
|
+
? `Unknown command '${unknown}'.`
|
|
79
|
+
: `Unknown command '${unknown}'; 'maia ${node.path.join(" ")}' takes: ${children}.`;
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=suggest.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { RunnerReference, TreeFragment, TreeLeafKind, TreeOperation } from "./row.js";
|
|
2
|
+
export type TreeAvailability = "implemented" | "source_implemented_candidate";
|
|
3
|
+
export type TreeLeafForm = {
|
|
4
|
+
readonly availability: TreeAvailability;
|
|
5
|
+
readonly summary: string;
|
|
6
|
+
readonly usage: string;
|
|
7
|
+
};
|
|
8
|
+
export type TreeNode = {
|
|
9
|
+
readonly children: readonly TreeNode[];
|
|
10
|
+
readonly example?: string;
|
|
11
|
+
readonly forms: readonly TreeLeafForm[];
|
|
12
|
+
readonly kind?: TreeLeafKind;
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly node?: true;
|
|
15
|
+
readonly operations: readonly TreeOperation[];
|
|
16
|
+
readonly path: readonly string[];
|
|
17
|
+
readonly remote?: false;
|
|
18
|
+
readonly run?: RunnerReference;
|
|
19
|
+
readonly summary: string;
|
|
20
|
+
};
|
|
21
|
+
export declare const TREE_FRAGMENTS: readonly TreeFragment[];
|
|
22
|
+
export declare const TREE_SECTIONS: readonly [readonly ["Start and sign in", readonly ["setup", "login", "status"]], readonly ["Work", readonly ["session", "run", "import"]], readonly ["Resources", readonly ["project", "workspace", "container", "terminal", "execution", "port", "reference"]], readonly ["Accounts and Nodes", readonly ["connection", "integration", "provider", "node"]], readonly ["Safety and audit", readonly ["hold", "receipt", "context"]], readonly ["Clients and local", readonly ["presentation", "mcp", "agent", "help", "version", "doctor", "completion"]]];
|
|
23
|
+
export declare const usagePath: (usage: string) => readonly string[];
|
|
24
|
+
export declare const COMMAND_TREE: TreeNode;
|
|
25
|
+
export declare const commandTree: () => TreeNode;
|
|
26
|
+
export declare const findNode: (tokens: readonly string[]) => {
|
|
27
|
+
readonly consumed: number;
|
|
28
|
+
readonly node: TreeNode;
|
|
29
|
+
};
|
|
30
|
+
export declare const treeNodes: (node?: TreeNode) => TreeNode[];
|
|
31
|
+
export declare const isNodeBacked: (node: TreeNode) => boolean;
|
|
32
|
+
export declare const treeUsages: () => string[];
|
|
33
|
+
export declare const createTreeDigest: (usages?: readonly string[]) => string;
|
|
34
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { CONNECTION_TREE } from "../connection/tree/index.js";
|
|
3
|
+
import { EXECUTION_TREE } from "../execution/tree/index.js";
|
|
4
|
+
import { SAFETY_TREE } from "../hold/tree/index.js";
|
|
5
|
+
import { RUN_TREE } from "../orchestration/tree/index.js";
|
|
6
|
+
import { PROJECT_TREE } from "../project-workspace/tree/index.js";
|
|
7
|
+
import { REFERENCE_TREE } from "../reference/tree/index.js";
|
|
8
|
+
import { NODE_TREE } from "../remote-node/tree/index.js";
|
|
9
|
+
import { SESSION_TREE } from "../session/tree/index.js";
|
|
10
|
+
import { TERMINAL_TREE } from "../terminal/tree/index.js";
|
|
11
|
+
import { LOCAL_TREE } from "./local.js";
|
|
12
|
+
export const TREE_FRAGMENTS = [
|
|
13
|
+
NODE_TREE,
|
|
14
|
+
CONNECTION_TREE,
|
|
15
|
+
SESSION_TREE,
|
|
16
|
+
RUN_TREE,
|
|
17
|
+
PROJECT_TREE,
|
|
18
|
+
REFERENCE_TREE,
|
|
19
|
+
TERMINAL_TREE,
|
|
20
|
+
EXECUTION_TREE,
|
|
21
|
+
SAFETY_TREE,
|
|
22
|
+
LOCAL_TREE,
|
|
23
|
+
];
|
|
24
|
+
export const TREE_SECTIONS = [
|
|
25
|
+
["Start and sign in", ["setup", "login", "status"]],
|
|
26
|
+
["Work", ["session", "run", "import"]],
|
|
27
|
+
[
|
|
28
|
+
"Resources",
|
|
29
|
+
[
|
|
30
|
+
"project",
|
|
31
|
+
"workspace",
|
|
32
|
+
"container",
|
|
33
|
+
"terminal",
|
|
34
|
+
"execution",
|
|
35
|
+
"port",
|
|
36
|
+
"reference",
|
|
37
|
+
],
|
|
38
|
+
],
|
|
39
|
+
["Accounts and Nodes", ["connection", "integration", "provider", "node"]],
|
|
40
|
+
["Safety and audit", ["hold", "receipt", "context"]],
|
|
41
|
+
[
|
|
42
|
+
"Clients and local",
|
|
43
|
+
["presentation", "mcp", "agent", "help", "version", "doctor", "completion"],
|
|
44
|
+
],
|
|
45
|
+
];
|
|
46
|
+
const PATH_WORD = /^[a-z][a-z0-9-]*$/u;
|
|
47
|
+
export const usagePath = (usage) => {
|
|
48
|
+
const words = usage.split(" ");
|
|
49
|
+
const end = words.findIndex((word) => !PATH_WORD.test(word));
|
|
50
|
+
return words.slice(0, end === -1 ? words.length : end);
|
|
51
|
+
};
|
|
52
|
+
const nodeAt = (root, path) => path.reduce((parent, name) => {
|
|
53
|
+
const existing = parent.children.find((child) => child.name === name);
|
|
54
|
+
if (existing !== undefined)
|
|
55
|
+
return existing;
|
|
56
|
+
const created = {
|
|
57
|
+
children: [],
|
|
58
|
+
forms: [],
|
|
59
|
+
name,
|
|
60
|
+
operations: [],
|
|
61
|
+
path: [...parent.path, name],
|
|
62
|
+
summary: "",
|
|
63
|
+
};
|
|
64
|
+
parent.children.push(created);
|
|
65
|
+
return created;
|
|
66
|
+
}, root);
|
|
67
|
+
const addLeaf = (root, row) => {
|
|
68
|
+
const [usage, availability, operations, summary, extra] = row;
|
|
69
|
+
const node = nodeAt(root, usagePath(usage));
|
|
70
|
+
node.forms.push({
|
|
71
|
+
availability: availability === 0 ? "implemented" : "source_implemented_candidate",
|
|
72
|
+
summary,
|
|
73
|
+
usage,
|
|
74
|
+
});
|
|
75
|
+
if (node.forms.length > 1)
|
|
76
|
+
return;
|
|
77
|
+
node.summary = summary;
|
|
78
|
+
node.operations = operations === "" ? [] : [operations].flat();
|
|
79
|
+
node.kind = extra.kind ?? "operation";
|
|
80
|
+
node.run = extra.run;
|
|
81
|
+
if (extra.node !== undefined)
|
|
82
|
+
node.node = extra.node;
|
|
83
|
+
if (extra.remote !== undefined)
|
|
84
|
+
node.remote = extra.remote;
|
|
85
|
+
if (extra.example !== undefined)
|
|
86
|
+
node.example = extra.example;
|
|
87
|
+
};
|
|
88
|
+
const sectionOrder = TREE_SECTIONS.flatMap(([, names]) => names);
|
|
89
|
+
const buildTree = () => {
|
|
90
|
+
const root = {
|
|
91
|
+
children: [],
|
|
92
|
+
forms: [],
|
|
93
|
+
name: "maia",
|
|
94
|
+
operations: [],
|
|
95
|
+
path: [],
|
|
96
|
+
summary: "Maia OS command line.",
|
|
97
|
+
};
|
|
98
|
+
sectionOrder.forEach((name) => nodeAt(root, [name]));
|
|
99
|
+
TREE_FRAGMENTS.forEach((fragment) => {
|
|
100
|
+
fragment.leaves.forEach((row) => {
|
|
101
|
+
addLeaf(root, row);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
TREE_FRAGMENTS.forEach((fragment) => {
|
|
105
|
+
fragment.groups.forEach(([path, summary]) => {
|
|
106
|
+
nodeAt(root, path.split(" ")).summary = summary;
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
return root;
|
|
110
|
+
};
|
|
111
|
+
export const COMMAND_TREE = buildTree();
|
|
112
|
+
export const commandTree = () => COMMAND_TREE;
|
|
113
|
+
const descend = (node, tokens, consumed) => {
|
|
114
|
+
const child = node.children.find((candidate) => candidate.name === tokens[consumed]);
|
|
115
|
+
return child === undefined
|
|
116
|
+
? { consumed, node }
|
|
117
|
+
: descend(child, tokens, consumed + 1);
|
|
118
|
+
};
|
|
119
|
+
export const findNode = (tokens) => descend(COMMAND_TREE, tokens, 0);
|
|
120
|
+
export const treeNodes = (node = commandTree()) => node.children.flatMap((child) => [child, ...treeNodes(child)]);
|
|
121
|
+
export const isNodeBacked = (node) => node.forms.length > 0 && (node.kind !== "local" || node.node === true);
|
|
122
|
+
export const treeUsages = () => treeNodes().flatMap((node) => node.forms.map((form) => form.usage));
|
|
123
|
+
export const createTreeDigest = (usages = treeUsages()) => `sha256:${createHash("sha256").update(usages.join("\n")).digest("hex")}`;
|
|
124
|
+
//# sourceMappingURL=tree.js.map
|