iosm-cli 0.1.0 → 0.1.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/CHANGELOG.md +3 -1
- package/README.md +218 -547
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -3
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-profiles.d.ts.map +1 -1
- package/dist/core/agent-profiles.js +20 -5
- package/dist/core/agent-profiles.js.map +1 -1
- package/dist/core/sdk.d.ts +2 -2
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +4 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +34 -3
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/ast-grep.d.ts +12 -0
- package/dist/core/tools/ast-grep.d.ts.map +1 -0
- package/dist/core/tools/ast-grep.js +12 -0
- package/dist/core/tools/ast-grep.js.map +1 -0
- package/dist/core/tools/comby.d.ts +12 -0
- package/dist/core/tools/comby.d.ts.map +1 -0
- package/dist/core/tools/comby.js +14 -0
- package/dist/core/tools/comby.js.map +1 -0
- package/dist/core/tools/external-cli.d.ts +33 -0
- package/dist/core/tools/external-cli.d.ts.map +1 -0
- package/dist/core/tools/external-cli.js +201 -0
- package/dist/core/tools/external-cli.js.map +1 -0
- package/dist/core/tools/fd.d.ts +12 -0
- package/dist/core/tools/fd.d.ts.map +1 -0
- package/dist/core/tools/fd.js +15 -0
- package/dist/core/tools/fd.js.map +1 -0
- package/dist/core/tools/index.d.ts +57 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +61 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/jq.d.ts +12 -0
- package/dist/core/tools/jq.d.ts.map +1 -0
- package/dist/core/tools/jq.js +12 -0
- package/dist/core/tools/jq.js.map +1 -0
- package/dist/core/tools/rg.d.ts +12 -0
- package/dist/core/tools/rg.d.ts.map +1 -0
- package/dist/core/tools/rg.js +15 -0
- package/dist/core/tools/rg.js.map +1 -0
- package/dist/core/tools/sed.d.ts +12 -0
- package/dist/core/tools/sed.d.ts.map +1 -0
- package/dist/core/tools/sed.js +14 -0
- package/dist/core/tools/sed.js.map +1 -0
- package/dist/core/tools/semgrep.d.ts +12 -0
- package/dist/core/tools/semgrep.d.ts.map +1 -0
- package/dist/core/tools/semgrep.js +13 -0
- package/dist/core/tools/semgrep.js.map +1 -0
- package/dist/core/tools/yq.d.ts +12 -0
- package/dist/core/tools/yq.d.ts.map +1 -0
- package/dist/core/tools/yq.js +12 -0
- package/dist/core/tools/yq.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +136 -3
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/assets/preview.jpg +0 -0
- package/docs/cli-reference.md +12 -4
- package/docs/configuration.md +4 -4
- package/docs/development-and-testing.md +1 -1
- package/docs/extensions-packages-themes.md +1 -1
- package/docs/getting-started.md +3 -3
- package/docs/interactive-mode.md +1 -1
- package/docs/rpc-json-sdk.md +1 -1
- package/package.json +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAoB,YAAY,EAAmC,MAAM,qBAAqB,CAAC;AAsD3G,OAAO,EAAE,KAAK,YAAY,EAA2C,MAAM,6BAA6B,CAAC;AAkBzG,OAAO,EAKN,KAAK,UAAU,EAEf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ import { buildIosmAutomationPrompt, buildIosmAgentVerificationPrompt, buildIosmG
|
|
|
32
32
|
import { getChangelogPath, getNewEntries, parseChangelog } from "../../utils/changelog.js";
|
|
33
33
|
import { copyToClipboard } from "../../utils/clipboard.js";
|
|
34
34
|
import { extensionForImageMimeType, readClipboardImage } from "../../utils/clipboard-image.js";
|
|
35
|
-
import { ensureTool } from "../../utils/tools-manager.js";
|
|
35
|
+
import { ensureTool, getToolPath } from "../../utils/tools-manager.js";
|
|
36
36
|
import { ArminComponent } from "./components/armin.js";
|
|
37
37
|
import { AsciiLogoComponent } from "./components/ascii-logo.js";
|
|
38
38
|
import { AssistantMessageComponent } from "./components/assistant-message.js";
|
|
@@ -70,6 +70,114 @@ function isExpandable(obj) {
|
|
|
70
70
|
}
|
|
71
71
|
const IOSM_PROFILE_ONLY_COMMANDS = new Set(["iosm", "cycle-list", "cycle-plan", "cycle-status", "cycle-report"]);
|
|
72
72
|
const CHECKPOINT_LABEL_PREFIX = "checkpoint:";
|
|
73
|
+
const DOCTOR_CLI_TOOL_SPECS = [
|
|
74
|
+
{
|
|
75
|
+
tool: "rg",
|
|
76
|
+
candidates: ["rg"],
|
|
77
|
+
managed: "rg",
|
|
78
|
+
hint: "Install ripgrep (rg) or allow iosm-cli to download managed binaries.",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
tool: "fd",
|
|
82
|
+
candidates: ["fd"],
|
|
83
|
+
managed: "fd",
|
|
84
|
+
hint: "Install fd or allow iosm-cli to download managed binaries.",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
tool: "ast_grep",
|
|
88
|
+
candidates: ["ast-grep", "sg"],
|
|
89
|
+
hint: "Install ast-grep (brew install ast-grep or npm i -g @ast-grep/cli).",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
tool: "comby",
|
|
93
|
+
candidates: ["comby"],
|
|
94
|
+
hint: "Install comby (brew install comby).",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
tool: "jq",
|
|
98
|
+
candidates: ["jq"],
|
|
99
|
+
hint: "Install jq (brew install jq).",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
tool: "yq",
|
|
103
|
+
candidates: ["yq"],
|
|
104
|
+
hint: "Install yq (brew install yq).",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
tool: "semgrep",
|
|
108
|
+
candidates: ["semgrep"],
|
|
109
|
+
hint: "Install semgrep (pipx install semgrep or pip install semgrep).",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
tool: "sed",
|
|
113
|
+
candidates: ["sed"],
|
|
114
|
+
hint: "Install sed or GNU sed if unavailable (brew install gnu-sed).",
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
function commandCandidateExists(candidates) {
|
|
118
|
+
for (const candidate of candidates) {
|
|
119
|
+
try {
|
|
120
|
+
const locator = os.platform() === "win32" ? "where" : "which";
|
|
121
|
+
const located = spawnSync(locator, [candidate], { stdio: "pipe" });
|
|
122
|
+
if ((located.status ?? 1) === 0 && !located.error) {
|
|
123
|
+
return candidate;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// Continue trying fallback check
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
const result = spawnSync(candidate, ["--version"], { stdio: "pipe" });
|
|
131
|
+
const err = result.error;
|
|
132
|
+
if (!err || err.code !== "ENOENT") {
|
|
133
|
+
return candidate;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Continue trying other candidates
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
function resolveDoctorCliToolStatuses() {
|
|
143
|
+
return DOCTOR_CLI_TOOL_SPECS.map((spec) => {
|
|
144
|
+
if (spec.managed) {
|
|
145
|
+
const toolPath = getToolPath(spec.managed);
|
|
146
|
+
if (toolPath) {
|
|
147
|
+
const isManagedPath = path.isAbsolute(toolPath);
|
|
148
|
+
return {
|
|
149
|
+
tool: spec.tool,
|
|
150
|
+
available: true,
|
|
151
|
+
source: isManagedPath ? "managed" : "system",
|
|
152
|
+
command: toolPath,
|
|
153
|
+
hint: spec.hint,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
tool: spec.tool,
|
|
158
|
+
available: false,
|
|
159
|
+
source: "missing",
|
|
160
|
+
hint: spec.hint,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const resolvedCommand = commandCandidateExists(spec.candidates);
|
|
164
|
+
if (resolvedCommand) {
|
|
165
|
+
return {
|
|
166
|
+
tool: spec.tool,
|
|
167
|
+
available: true,
|
|
168
|
+
source: "system",
|
|
169
|
+
command: resolvedCommand,
|
|
170
|
+
hint: spec.hint,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
tool: spec.tool,
|
|
175
|
+
available: false,
|
|
176
|
+
source: "missing",
|
|
177
|
+
hint: spec.hint,
|
|
178
|
+
};
|
|
179
|
+
});
|
|
180
|
+
}
|
|
73
181
|
const OPENROUTER_PROVIDER_ID = "openrouter";
|
|
74
182
|
function isAbortLikeMessage(message) {
|
|
75
183
|
const normalized = message.trim().toLowerCase();
|
|
@@ -4463,6 +4571,12 @@ export class InteractiveMode {
|
|
|
4463
4571
|
models = [];
|
|
4464
4572
|
}
|
|
4465
4573
|
if (models.length === 0) {
|
|
4574
|
+
if (preferredProvider) {
|
|
4575
|
+
// Fallback for transient registry/load errors: still open model selector
|
|
4576
|
+
// with a provider hint so login flow can continue.
|
|
4577
|
+
this.showModelSelector(preferredProvider);
|
|
4578
|
+
return;
|
|
4579
|
+
}
|
|
4466
4580
|
this.showStatus("No models available");
|
|
4467
4581
|
return;
|
|
4468
4582
|
}
|
|
@@ -4925,7 +5039,6 @@ export class InteractiveMode {
|
|
|
4925
5039
|
return;
|
|
4926
5040
|
}
|
|
4927
5041
|
this.session.modelRegistry.authStorage.set(OPENROUTER_PROVIDER_ID, { type: "api_key", key: apiKey });
|
|
4928
|
-
this.session.modelRegistry.refresh();
|
|
4929
5042
|
await this.updateAvailableProviderCount();
|
|
4930
5043
|
this.showStatus(`${providerName} API key saved to ${getAuthPath()}`);
|
|
4931
5044
|
await this.showModelProviderSelector(OPENROUTER_PROVIDER_ID);
|
|
@@ -4996,7 +5109,6 @@ export class InteractiveMode {
|
|
|
4996
5109
|
});
|
|
4997
5110
|
// Success
|
|
4998
5111
|
restoreEditor();
|
|
4999
|
-
this.session.modelRegistry.refresh();
|
|
5000
5112
|
await this.updateAvailableProviderCount();
|
|
5001
5113
|
this.showStatus(`Logged in to ${providerName}. Credentials saved to ${getAuthPath()}`);
|
|
5002
5114
|
await this.showModelProviderSelector(providerId);
|
|
@@ -5647,6 +5759,8 @@ export class InteractiveMode {
|
|
|
5647
5759
|
const mcpConnected = mcpStatuses.filter((status) => status.state === "connected").length;
|
|
5648
5760
|
const mcpErrored = mcpStatuses.filter((status) => status.state === "error").length;
|
|
5649
5761
|
const mcpDisabled = mcpStatuses.filter((status) => !status.enabled).length;
|
|
5762
|
+
const cliToolStatuses = resolveDoctorCliToolStatuses();
|
|
5763
|
+
const missingCliTools = cliToolStatuses.filter((status) => !status.available).map((status) => status.tool);
|
|
5650
5764
|
const checks = [];
|
|
5651
5765
|
const addCheck = (level, label, detail, fix) => checks.push({ level, label, detail, fix });
|
|
5652
5766
|
if (!model) {
|
|
@@ -5688,6 +5802,12 @@ export class InteractiveMode {
|
|
|
5688
5802
|
else {
|
|
5689
5803
|
addCheck("ok", "MCP servers", `${mcpConnected} connected, ${mcpDisabled} disabled`);
|
|
5690
5804
|
}
|
|
5805
|
+
if (missingCliTools.length > 0) {
|
|
5806
|
+
addCheck("warn", "CLI toolchain", `${cliToolStatuses.length - missingCliTools.length}/${cliToolStatuses.length} available (missing: ${missingCliTools.join(", ")})`, `Install missing CLI tools: ${missingCliTools.join(", ")}.`);
|
|
5807
|
+
}
|
|
5808
|
+
else {
|
|
5809
|
+
addCheck("ok", "CLI toolchain", `${cliToolStatuses.length}/${cliToolStatuses.length} available`);
|
|
5810
|
+
}
|
|
5691
5811
|
if (extensionErrors > 0 || skillDiagnostics > 0 || promptDiagnostics > 0 || themeDiagnostics > 0) {
|
|
5692
5812
|
addCheck("warn", "Resources", `extensions:${extensionErrors} skills:${skillDiagnostics} prompts:${promptDiagnostics} themes:${themeDiagnostics}`, "Run /reload and inspect warnings shown in the chat.");
|
|
5693
5813
|
}
|
|
@@ -5706,6 +5826,7 @@ export class InteractiveMode {
|
|
|
5706
5826
|
cwd: this.sessionManager.getCwd(),
|
|
5707
5827
|
sessionFile: this.sessionManager.getSessionFile() ?? null,
|
|
5708
5828
|
activeProfile: this.activeProfileName,
|
|
5829
|
+
externalCliTools: cliToolStatuses,
|
|
5709
5830
|
checks,
|
|
5710
5831
|
recommendations,
|
|
5711
5832
|
});
|
|
@@ -5721,6 +5842,18 @@ export class InteractiveMode {
|
|
|
5721
5842
|
const prefix = check.level === "ok" ? "[OK]" : check.level === "warn" ? "[WARN]" : "[FAIL]";
|
|
5722
5843
|
lines.push(`${prefix} ${check.label}: ${check.detail}`);
|
|
5723
5844
|
}
|
|
5845
|
+
lines.push("");
|
|
5846
|
+
lines.push("External CLI tools:");
|
|
5847
|
+
for (const status of cliToolStatuses) {
|
|
5848
|
+
const prefix = status.available ? "[OK]" : "[WARN]";
|
|
5849
|
+
const sourceLabel = status.source === "missing"
|
|
5850
|
+
? "missing"
|
|
5851
|
+
: `${status.source}${status.command ? ` (${status.command})` : ""}`;
|
|
5852
|
+
lines.push(`${prefix} ${status.tool}: ${sourceLabel}`);
|
|
5853
|
+
if (!status.available && status.hint) {
|
|
5854
|
+
lines.push(` fix: ${status.hint}`);
|
|
5855
|
+
}
|
|
5856
|
+
}
|
|
5724
5857
|
if (recommendations.length > 0) {
|
|
5725
5858
|
lines.push("");
|
|
5726
5859
|
lines.push("Recommended actions:");
|