neoctl 0.2.11 → 0.2.12
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/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/repl/index.js +3114 -314
- package/dist/repl/index.js.map +1 -1
- package/dist/tools/builtins/image-note-tool.js +1 -5
- package/dist/tools/builtins/image-note-tool.js.map +1 -1
- package/dist/web/html.js +8 -14
- package/dist/web/html.js.map +1 -1
- package/dist/web/index.d.ts +0 -5
- package/dist/web/index.js +5 -41
- package/dist/web/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install-ripgrep.cjs +196 -196
- package/vendor/ripgrep/darwin-arm64/COPYING +3 -3
- package/vendor/ripgrep/darwin-arm64/LICENSE-MIT +21 -21
- package/vendor/ripgrep/darwin-arm64/UNLICENSE +24 -24
- package/vendor/ripgrep/darwin-arm64/manifest.json +7 -7
- package/vendor/ripgrep/darwin-x64/COPYING +3 -3
- package/vendor/ripgrep/darwin-x64/LICENSE-MIT +21 -21
- package/vendor/ripgrep/darwin-x64/UNLICENSE +24 -24
- package/vendor/ripgrep/darwin-x64/manifest.json +7 -7
- package/vendor/ripgrep/linux-arm64/COPYING +3 -3
- package/vendor/ripgrep/linux-arm64/LICENSE-MIT +21 -21
- package/vendor/ripgrep/linux-arm64/UNLICENSE +24 -24
- package/vendor/ripgrep/linux-arm64/manifest.json +7 -7
- package/vendor/ripgrep/linux-x64/COPYING +3 -3
- package/vendor/ripgrep/linux-x64/LICENSE-MIT +21 -21
- package/vendor/ripgrep/linux-x64/UNLICENSE +24 -24
- package/vendor/ripgrep/linux-x64/manifest.json +7 -7
- package/vendor/ripgrep/win32-arm64/manifest.json +7 -7
- package/dist/repl/browser.d.ts +0 -232
- package/dist/repl/browser.js +0 -156
- package/dist/repl/browser.js.map +0 -1
- package/dist/repl/env-file.d.ts +0 -4
- package/dist/repl/env-file.js +0 -97
- package/dist/repl/env-file.js.map +0 -1
- package/dist/repl/foreground-exec.d.ts +0 -10
- package/dist/repl/foreground-exec.js +0 -34
- package/dist/repl/foreground-exec.js.map +0 -1
- package/dist/repl/login-view.d.ts +0 -75
- package/dist/repl/login-view.js +0 -38
- package/dist/repl/login-view.js.map +0 -1
- package/dist/repl/login.d.ts +0 -14
- package/dist/repl/login.js +0 -165
- package/dist/repl/login.js.map +0 -1
- package/dist/repl/message-rendering.d.ts +0 -99
- package/dist/repl/message-rendering.js +0 -476
- package/dist/repl/message-rendering.js.map +0 -1
- package/dist/repl/prompt-payload.d.ts +0 -9
- package/dist/repl/prompt-payload.js +0 -64
- package/dist/repl/prompt-payload.js.map +0 -1
- package/dist/repl/prompt-view.d.ts +0 -235
- package/dist/repl/prompt-view.js +0 -184
- package/dist/repl/prompt-view.js.map +0 -1
- package/dist/repl/repl-types.d.ts +0 -88
- package/dist/repl/repl-types.js +0 -2
- package/dist/repl/repl-types.js.map +0 -1
- package/dist/repl/runtime.d.ts +0 -33
- package/dist/repl/runtime.js +0 -202
- package/dist/repl/runtime.js.map +0 -1
- package/dist/repl/slash-completion.d.ts +0 -28
- package/dist/repl/slash-completion.js +0 -287
- package/dist/repl/slash-completion.js.map +0 -1
- package/dist/repl/status-panel.d.ts +0 -234
- package/dist/repl/status-panel.js +0 -509
- package/dist/repl/status-panel.js.map +0 -1
- package/dist/repl/terminal.d.ts +0 -19
- package/dist/repl/terminal.js +0 -81
- package/dist/repl/terminal.js.map +0 -1
- package/dist/repl/tool-rendering.d.ts +0 -6
- package/dist/repl/tool-rendering.js +0 -502
- package/dist/repl/tool-rendering.js.map +0 -1
- package/dist/repl/usage.d.ts +0 -17
- package/dist/repl/usage.js +0 -57
- package/dist/repl/usage.js.map +0 -1
- package/dist/tips.d.ts +0 -10
- package/dist/tips.js +0 -168
- package/dist/tips.js.map +0 -1
package/dist/repl/runtime.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { QueryEngine } from "../core/query-engine.js";
|
|
3
|
-
import { loadDefaultDotEnvFiles } from "../model/env.js";
|
|
4
|
-
import { readModelProviderConfig } from "../model/config.js";
|
|
5
|
-
import { CommunicationLogger, LoggingModelGateway } from "../model/communication-logger.js";
|
|
6
|
-
import { createModelGatewayFromProcessEnv } from "../model/provider-factory.js";
|
|
7
|
-
import { ToolRegistry } from "../tools/registry.js";
|
|
8
|
-
import { editTool, writeTool } from "../tools/builtins/edit-tool.js";
|
|
9
|
-
import { createExecTool } from "../tools/builtins/exec-tool.js";
|
|
10
|
-
import { listDirectoryTool, readFileTool } from "../tools/builtins/filesystem-tools.js";
|
|
11
|
-
import { grepTool } from "../tools/builtins/grep-tool.js";
|
|
12
|
-
import { searchTool } from "../tools/builtins/search-tool.js";
|
|
13
|
-
import { planTool } from "../tools/builtins/plan-tool.js";
|
|
14
|
-
import { createOpenAIImageGenerationTool } from "../tools/builtins/image-generation-tool.js";
|
|
15
|
-
import { createLoadImageTool } from "../tools/builtins/image-loader-tool.js";
|
|
16
|
-
import { createImageNoteTool } from "../tools/builtins/image-note-tool.js";
|
|
17
|
-
import { createSecretTools } from "../tools/builtins/secret-tools.js";
|
|
18
|
-
import { SecretStore } from "../secrets/secret-store.js";
|
|
19
|
-
import { InMemorySecretRedactionRegistry } from "../secrets/secret-redaction.js";
|
|
20
|
-
import { createAgentTool, resumeAgentTask } from "../agents/agent-tool.js";
|
|
21
|
-
import { AgentActivityStore } from "../agents/agent-activity.js";
|
|
22
|
-
import { createTaskTools } from "../tasks/task-tools.js";
|
|
23
|
-
import { TaskStore } from "../tasks/task-store.js";
|
|
24
|
-
import { replCommandDefinitions } from "./commands.js";
|
|
25
|
-
import { DefaultContextManager } from "../context/context-manager.js";
|
|
26
|
-
import { buildEffectiveSystemPrompt } from "../context/prompts.js";
|
|
27
|
-
import { getNeoctlHome } from "../paths.js";
|
|
28
|
-
import { FileSystemSkillCatalog } from "../skills/skill-filesystem.js";
|
|
29
|
-
import { createSkillAwareCanUseTool, createSkillTool } from "../skills/skill-tool.js";
|
|
30
|
-
import { createSkillManagementTools } from "../skills/skill-management-tools.js";
|
|
31
|
-
import { SessionUsageTracker } from "./usage.js";
|
|
32
|
-
import { ReplForegroundExecDetachRegistry } from "./foreground-exec.js";
|
|
33
|
-
class SkillCatalogContextManager {
|
|
34
|
-
catalog;
|
|
35
|
-
base;
|
|
36
|
-
constructor(catalog, base = new DefaultContextManager()) {
|
|
37
|
-
this.catalog = catalog;
|
|
38
|
-
this.base = base;
|
|
39
|
-
}
|
|
40
|
-
async build(input) {
|
|
41
|
-
const runtimeContext = await this.base.build(input);
|
|
42
|
-
const skillSection = await buildSkillCatalogPromptSection(this.catalog);
|
|
43
|
-
if (!skillSection)
|
|
44
|
-
return runtimeContext;
|
|
45
|
-
const promptSections = [...runtimeContext.promptSections, skillSection];
|
|
46
|
-
return {
|
|
47
|
-
...runtimeContext,
|
|
48
|
-
promptSections,
|
|
49
|
-
systemPrompt: buildEffectiveSystemPrompt(promptSections, input),
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async function buildSkillCatalogPromptSection(catalog) {
|
|
54
|
-
const skills = await catalog.list();
|
|
55
|
-
if (skills.length === 0)
|
|
56
|
-
return undefined;
|
|
57
|
-
const visible = skills.slice(0, 80);
|
|
58
|
-
const lines = visible.map((skill) => {
|
|
59
|
-
const tags = skill.tags?.length ? `; tags=${skill.tags.join(",")}` : "";
|
|
60
|
-
const tools = skill.allowedTools?.length ? `; allowedTools=${skill.allowedTools.join(",")}` : "";
|
|
61
|
-
return `- ${skill.name}: ${skill.description} (execution=${skill.execution}${tags}${tools})`;
|
|
62
|
-
});
|
|
63
|
-
if (skills.length > visible.length)
|
|
64
|
-
lines.push(`- ... ${skills.length - visible.length} more skills available; use skill_list for the full catalog.`);
|
|
65
|
-
return {
|
|
66
|
-
name: "Available Skills",
|
|
67
|
-
cacheStable: false,
|
|
68
|
-
content: [
|
|
69
|
-
"Reusable skills are available through the `skill` tool and the `/skill` REPL command.",
|
|
70
|
-
"When the user's task matches a skill name, description, tags, or domain capability, proactively call the `skill` tool before doing the work directly.",
|
|
71
|
-
"Do not wait for the user to explicitly say 'use skill'. Use skill_list/skill_read if you need to inspect details.",
|
|
72
|
-
"Available skill catalog:",
|
|
73
|
-
...lines,
|
|
74
|
-
].join("\n"),
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
function createTaskNotificationSource(taskStore) {
|
|
78
|
-
return {
|
|
79
|
-
collectUnnotifiedCompletions() {
|
|
80
|
-
return taskStore.collectUnnotifiedCompletions().map((task) => ({
|
|
81
|
-
taskId: task.taskId,
|
|
82
|
-
agentId: task.agentId,
|
|
83
|
-
status: task.status,
|
|
84
|
-
type: task.type,
|
|
85
|
-
content: task.result?.content ?? task.error ?? "",
|
|
86
|
-
}));
|
|
87
|
-
},
|
|
88
|
-
markNotified(taskId) {
|
|
89
|
-
taskStore.markNotified(taskId);
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
export async function createRuntime() {
|
|
94
|
-
const envLoad = loadDefaultDotEnvFiles({ override: true });
|
|
95
|
-
const modelConfig = readModelProviderConfig(process.env);
|
|
96
|
-
const communicationLogger = new CommunicationLogger();
|
|
97
|
-
const modelGateway = new LoggingModelGateway(createModelGatewayFromProcessEnv(process.env), communicationLogger);
|
|
98
|
-
const taskStore = new TaskStore();
|
|
99
|
-
const agentActivityStore = new AgentActivityStore();
|
|
100
|
-
const foregroundExecDetach = new ReplForegroundExecDetachRegistry();
|
|
101
|
-
const secretStore = await SecretStore.open();
|
|
102
|
-
const secretRedactions = new InMemorySecretRedactionRegistry();
|
|
103
|
-
const tools = new ToolRegistry();
|
|
104
|
-
const skillWorkspaceRoot = path.resolve(process.cwd(), ".neo", "skills");
|
|
105
|
-
const skills = new FileSystemSkillCatalog({
|
|
106
|
-
roots: [
|
|
107
|
-
{ root: skillWorkspaceRoot, kind: "workspace" },
|
|
108
|
-
{ root: path.resolve(getNeoctlHome(), "skills"), kind: "user" },
|
|
109
|
-
],
|
|
110
|
-
createRoot: skillWorkspaceRoot,
|
|
111
|
-
});
|
|
112
|
-
tools.register(editTool);
|
|
113
|
-
tools.register(writeTool);
|
|
114
|
-
tools.register(createExecTool({ taskStore, foregroundDetachRegistry: foregroundExecDetach }));
|
|
115
|
-
tools.register(listDirectoryTool);
|
|
116
|
-
tools.register(readFileTool);
|
|
117
|
-
tools.register(grepTool);
|
|
118
|
-
tools.register(searchTool);
|
|
119
|
-
tools.register(createLoadImageTool());
|
|
120
|
-
tools.register(createImageNoteTool());
|
|
121
|
-
if (modelConfig?.provider === "openai")
|
|
122
|
-
tools.register(createOpenAIImageGenerationTool());
|
|
123
|
-
tools.register(planTool);
|
|
124
|
-
for (const tool of createSecretTools())
|
|
125
|
-
tools.register(tool);
|
|
126
|
-
tools.register(createSkillTool(skills));
|
|
127
|
-
for (const tool of createSkillManagementTools(skills, { requireApproval: true, allowDelete: false }))
|
|
128
|
-
tools.register(tool);
|
|
129
|
-
const agentRuntime = { modelGateway, tools, taskStore, agentActivityStore };
|
|
130
|
-
tools.register(createAgentTool(agentRuntime));
|
|
131
|
-
const resumeHandler = async (taskId, directive) => {
|
|
132
|
-
const dummyContext = {
|
|
133
|
-
agentId: "main",
|
|
134
|
-
tools,
|
|
135
|
-
appState: new (await import("../app/app-state.js")).InMemoryAppState("main"),
|
|
136
|
-
secrets: secretStore,
|
|
137
|
-
secretRedactions,
|
|
138
|
-
emit: () => undefined,
|
|
139
|
-
};
|
|
140
|
-
return resumeAgentTask(taskId, directive, agentRuntime, taskStore, dummyContext);
|
|
141
|
-
};
|
|
142
|
-
for (const tool of createTaskTools(taskStore, resumeHandler))
|
|
143
|
-
tools.register(tool);
|
|
144
|
-
const taskNotificationSource = createTaskNotificationSource(taskStore);
|
|
145
|
-
const engine = new QueryEngine({
|
|
146
|
-
agentId: "main",
|
|
147
|
-
model: modelConfig?.model,
|
|
148
|
-
fallbackModel: modelConfig?.fallbackModel,
|
|
149
|
-
reasoning: modelConfig?.defaultReasoning,
|
|
150
|
-
modelGateway,
|
|
151
|
-
tools,
|
|
152
|
-
contextManager: new SkillCatalogContextManager(skills),
|
|
153
|
-
canUseTool: createSkillAwareCanUseTool(skills),
|
|
154
|
-
secrets: secretStore,
|
|
155
|
-
secretRedactions,
|
|
156
|
-
taskNotificationSource,
|
|
157
|
-
commands: replCommandDefinitions.map((command) => command.usage),
|
|
158
|
-
session: {
|
|
159
|
-
enabled: process.env.AGENT_SESSION_TRANSCRIPT !== "0",
|
|
160
|
-
sessionId: process.env.AGENT_SESSION_ID,
|
|
161
|
-
rootDir: process.env.AGENT_SESSION_DIR,
|
|
162
|
-
resume: parseResumeFlag(process.env.AGENT_SESSION_RESUME),
|
|
163
|
-
toolResultThresholdChars: process.env.AGENT_TOOL_RESULT_THRESHOLD_CHARS
|
|
164
|
-
? Number(process.env.AGENT_TOOL_RESULT_THRESHOLD_CHARS)
|
|
165
|
-
: undefined,
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
await engine.initialize();
|
|
169
|
-
const initialMetrics = await engine.contextMetrics();
|
|
170
|
-
return {
|
|
171
|
-
engine,
|
|
172
|
-
communicationLogger,
|
|
173
|
-
modelGateway,
|
|
174
|
-
agentRuntime,
|
|
175
|
-
usage: new SessionUsageTracker(),
|
|
176
|
-
taskStore,
|
|
177
|
-
agentActivityStore,
|
|
178
|
-
foregroundExecDetach,
|
|
179
|
-
tools,
|
|
180
|
-
skills,
|
|
181
|
-
secretStore,
|
|
182
|
-
skillWorkspaceRoot,
|
|
183
|
-
initialMetrics,
|
|
184
|
-
defaultReasoning: modelConfig?.defaultReasoning,
|
|
185
|
-
envPath: process.env.NEO_ENV_FILE?.trim() ? path.resolve(process.env.NEO_ENV_FILE.trim()) : envLoad.userDotEnvPath,
|
|
186
|
-
envNotice: envLoad.createdUserDotEnv ? formatCreatedEnvNotice(envLoad.userDotEnvPath) : undefined,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
export function syncImageGenerationTool(runtime, provider) {
|
|
190
|
-
runtime.tools.unregister("image2");
|
|
191
|
-
if (provider === "openai")
|
|
192
|
-
runtime.tools.register(createOpenAIImageGenerationTool());
|
|
193
|
-
}
|
|
194
|
-
function formatCreatedEnvNotice(path) {
|
|
195
|
-
return `Created default config file: ${path}\nSet MODEL_PROVIDER and the matching provider section (OPENAI_API_KEY or ANTHROPIC_API_KEY), then restart neo.`;
|
|
196
|
-
}
|
|
197
|
-
function parseResumeFlag(value) {
|
|
198
|
-
if (!value)
|
|
199
|
-
return false;
|
|
200
|
-
return ["1", "true", "yes", "latest"].includes(value.toLowerCase());
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=runtime.js.map
|
package/dist/repl/runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/repl/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAA0B,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5F,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAyB,MAAM,yBAAyB,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,eAAe,EAA0B,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAoE,MAAM,+BAA+B,CAAC;AACxI,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAqB,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAqBxE,MAAM,0BAA0B;IACD;IAAwC;IAArE,YAA6B,OAAqB,EAAmB,OAAuB,IAAI,qBAAqB,EAAE;QAA1F,YAAO,GAAP,OAAO,CAAc;QAAmB,SAAI,GAAJ,IAAI,CAA8C;IAAG,CAAC;IAE3H,KAAK,CAAC,KAAK,CAAC,KAAwB;QAClC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAM,8BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY;YAAE,OAAO,cAAc,CAAC;QACzC,MAAM,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACxE,OAAO;YACL,GAAG,cAAc;YACjB,cAAc;YACd,YAAY,EAAE,0BAA0B,CAAC,cAAc,EAAE,KAAK,CAAC;SAChE,CAAC;IACJ,CAAC;CACF;AAED,KAAK,UAAU,8BAA8B,CAAC,OAAqB;IACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,eAAe,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC;IAC/F,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,8DAA8D,CAAC,CAAC;IACtJ,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE;YACP,uFAAuF;YACvF,uJAAuJ;YACvJ,mHAAmH;YACnH,0BAA0B;YAC1B,GAAG,KAAK;SACT,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,SAAoB;IACxD,OAAO;QACL,4BAA4B;YAC1B,OAAO,SAAS,CAAC,4BAA4B,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC7D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;aAClD,CAAC,CAAC,CAAC;QACN,CAAC;QACD,YAAY,CAAC,MAAc;YACzB,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACpD,MAAM,oBAAoB,GAAG,IAAI,gCAAgC,EAAE,CAAC;IACpE,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAI,+BAA+B,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC;QACxC,KAAK,EAAE;YACL,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE;YAC/C,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;SAChE;QACD,UAAU,EAAE,kBAAkB;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1B,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;IAC9F,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAClC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3B,KAAK,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACtC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACtC,IAAI,WAAW,EAAE,QAAQ,KAAK,QAAQ;QAAE,KAAK,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC,CAAC;IAC1F,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE;QAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,0BAA0B,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE3H,MAAM,YAAY,GAAqB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAC9F,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAsB,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;QACnE,MAAM,YAAY,GAAG;YACnB,OAAO,EAAE,MAAM;YACf,KAAK;YACL,QAAQ,EAAE,IAAI,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC5E,OAAO,EAAE,WAAW;YACpB,gBAAgB;YAChB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;SACtB,CAAC;QACF,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC;QAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnF,MAAM,sBAAsB,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;QAC7B,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,WAAW,EAAE,KAAK;QACzB,aAAa,EAAE,WAAW,EAAE,aAAa;QACzC,SAAS,EAAE,WAAW,EAAE,gBAAgB;QACxC,YAAY;QACZ,KAAK;QACL,cAAc,EAAE,IAAI,0BAA0B,CAAC,MAAM,CAAC;QACtD,UAAU,EAAE,0BAA0B,CAAC,MAAM,CAAC;QAC9C,OAAO,EAAE,WAAW;QACpB,gBAAgB;QAChB,sBAAsB;QACtB,QAAQ,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG;YACrD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;YACvC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;YACtC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACzD,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC;gBACrE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBACvD,CAAC,CAAC,SAAS;SACd;KACF,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1B,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;IACrD,OAAO;QACL,MAAM;QACN,mBAAmB;QACnB,YAAY;QACZ,YAAY;QACZ,KAAK,EAAE,IAAI,mBAAmB,EAAE;QAChC,SAAS;QACT,kBAAkB;QAClB,oBAAoB;QACpB,KAAK;QACL,MAAM;QACN,WAAW;QACX,kBAAkB;QAClB,cAAc;QACd,gBAAgB,EAAE,WAAW,EAAE,gBAAgB;QAC/C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc;QAClH,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;KAClG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAoB,EAAE,QAAuC;IACnG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC,CAAC;AACvF,CAAC;AAGD,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,gCAAgC,IAAI,iHAAiH,CAAC;AAC/J,CAAC;AAED,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type ReplCommandArgumentSpec } from "./commands.js";
|
|
2
|
-
export interface SkillCompletionInfo {
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
execution?: string;
|
|
6
|
-
tags?: readonly string[];
|
|
7
|
-
}
|
|
8
|
-
export interface SecretCompletionInfo {
|
|
9
|
-
key: string;
|
|
10
|
-
status: string;
|
|
11
|
-
length: number;
|
|
12
|
-
requestReason?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface SlashCommandCompletion {
|
|
15
|
-
value: string;
|
|
16
|
-
insertText: string;
|
|
17
|
-
description: string;
|
|
18
|
-
arguments: ReplCommandArgumentSpec;
|
|
19
|
-
kind: "command" | "model" | "reasoning" | "skill" | "skill-action" | "secret-action" | "secret-key";
|
|
20
|
-
}
|
|
21
|
-
export declare function slashCommandCompletions(text: string, cursor: number, skills?: readonly SkillCompletionInfo[], secrets?: readonly SecretCompletionInfo[]): SlashCommandCompletion[];
|
|
22
|
-
export declare function slashCompletionPageCount(completions: SlashCommandCompletion[]): number;
|
|
23
|
-
export declare function slashCompletionPageStart(selectedIndex: number, completions: SlashCommandCompletion[]): number;
|
|
24
|
-
export declare function visibleSlashCompletions(completions: SlashCommandCompletion[], selectedIndex: number): SlashCommandCompletion[];
|
|
25
|
-
export declare function slashCompletionViewHeight(completions: SlashCommandCompletion[]): number;
|
|
26
|
-
export declare function slashCompletionSelectableCount(text: string, cursor: number, skills?: readonly SkillCompletionInfo[], secrets?: readonly SecretCompletionInfo[]): number;
|
|
27
|
-
export declare function selectedSlashCommandCompletion(text: string, cursor: number, selectedIndex: number, skills?: readonly SkillCompletionInfo[], secrets?: readonly SecretCompletionInfo[]): SlashCommandCompletion | undefined;
|
|
28
|
-
export declare const SLASH_COMPLETION_PAGE_SIZE = 10;
|
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
import { isModelReasoningArgument, replCommandDefinitions } from "./commands.js";
|
|
2
|
-
import { loadModelCatalog, reasoningEffortsForModel, resolveContextWindowTokens } from "../model/context-window.js";
|
|
3
|
-
export function slashCommandCompletions(text, cursor, skills = [], secrets = []) {
|
|
4
|
-
const safeCursor = Math.max(0, Math.min(cursor, text.length));
|
|
5
|
-
const prefix = text.slice(0, safeCursor);
|
|
6
|
-
if (!prefix.startsWith("/") || /\r|\n/.test(prefix))
|
|
7
|
-
return [];
|
|
8
|
-
if (/^\s/.test(prefix) || text.slice(0, 1) !== "/")
|
|
9
|
-
return [];
|
|
10
|
-
const suffix = text.slice(safeCursor);
|
|
11
|
-
if (/\S/.test(suffix))
|
|
12
|
-
return [];
|
|
13
|
-
if (prefix.startsWith("/model") && (prefix.length === "/model".length || prefix["/model".length] === " ")) {
|
|
14
|
-
return modelCommandCompletions(prefix);
|
|
15
|
-
}
|
|
16
|
-
if (prefix.startsWith("/skill") && (prefix.length === "/skill".length || prefix["/skill".length] === " ")) {
|
|
17
|
-
return skillCommandCompletions(prefix, skills);
|
|
18
|
-
}
|
|
19
|
-
if (prefix.startsWith("/secret") && (prefix.length === "/secret".length || prefix["/secret".length] === " ")) {
|
|
20
|
-
return secretCommandCompletions(prefix, secrets);
|
|
21
|
-
}
|
|
22
|
-
if (prefix.length > 1 && !/^\/[\w-]*$/.test(prefix))
|
|
23
|
-
return [];
|
|
24
|
-
const normalizedPrefix = prefix.toLowerCase();
|
|
25
|
-
return replCommandDefinitions
|
|
26
|
-
.flatMap((command) => [command.name, ...(command.aliases ?? [])].map((name) => ({ value: name, insertText: name, description: command.description, arguments: command.arguments, kind: "command" })))
|
|
27
|
-
.filter((command) => command.value.toLowerCase().startsWith(normalizedPrefix));
|
|
28
|
-
}
|
|
29
|
-
export function slashCompletionPageCount(completions) {
|
|
30
|
-
return Math.max(1, Math.ceil(completions.length / SLASH_COMPLETION_PAGE_SIZE));
|
|
31
|
-
}
|
|
32
|
-
export function slashCompletionPageStart(selectedIndex, completions) {
|
|
33
|
-
const page = Math.floor(Math.max(0, selectedIndex) / SLASH_COMPLETION_PAGE_SIZE);
|
|
34
|
-
return Math.min(page * SLASH_COMPLETION_PAGE_SIZE, Math.max(0, (slashCompletionPageCount(completions) - 1) * SLASH_COMPLETION_PAGE_SIZE));
|
|
35
|
-
}
|
|
36
|
-
export function visibleSlashCompletions(completions, selectedIndex) {
|
|
37
|
-
const start = slashCompletionPageStart(selectedIndex, completions);
|
|
38
|
-
return completions.slice(start, start + SLASH_COMPLETION_PAGE_SIZE);
|
|
39
|
-
}
|
|
40
|
-
export function slashCompletionViewHeight(completions) {
|
|
41
|
-
if (completions.length === 0)
|
|
42
|
-
return 0;
|
|
43
|
-
return Math.min(completions.length, SLASH_COMPLETION_PAGE_SIZE) + 2;
|
|
44
|
-
}
|
|
45
|
-
export function slashCompletionSelectableCount(text, cursor, skills = [], secrets = []) {
|
|
46
|
-
return slashCommandCompletions(text, cursor, skills, secrets).length;
|
|
47
|
-
}
|
|
48
|
-
export function selectedSlashCommandCompletion(text, cursor, selectedIndex, skills = [], secrets = []) {
|
|
49
|
-
const completions = slashCommandCompletions(text, cursor, skills, secrets);
|
|
50
|
-
if (completions.length === 0)
|
|
51
|
-
return undefined;
|
|
52
|
-
return completions[Math.max(0, Math.min(selectedIndex, completions.length - 1))];
|
|
53
|
-
}
|
|
54
|
-
function skillCommandCompletions(prefix, skills) {
|
|
55
|
-
const hasTrailingSpace = /\s$/.test(prefix);
|
|
56
|
-
const tokens = prefix.trim().split(/\s+/).filter(Boolean);
|
|
57
|
-
const argumentTokens = tokens.slice(1);
|
|
58
|
-
if (!hasTrailingSpace && argumentTokens.length === 0 && !"/skill".startsWith(prefix.toLowerCase()))
|
|
59
|
-
return [];
|
|
60
|
-
if (argumentTokens.length === 0)
|
|
61
|
-
return skillActionCompletions("");
|
|
62
|
-
const [first = "", second = ""] = argumentTokens;
|
|
63
|
-
if (first === "list" || first === "ls" || first === "import")
|
|
64
|
-
return [];
|
|
65
|
-
if (first === "delete" || first === "remove" || first === "rm") {
|
|
66
|
-
if (argumentTokens.length > 1 && hasTrailingSpace)
|
|
67
|
-
return [];
|
|
68
|
-
return skillNameCompletions(skills, hasTrailingSpace ? "" : second, "delete");
|
|
69
|
-
}
|
|
70
|
-
if (argumentTokens.length > 1 || hasTrailingSpace)
|
|
71
|
-
return [];
|
|
72
|
-
return skillActionCompletions(first);
|
|
73
|
-
}
|
|
74
|
-
function skillActionCompletions(current) {
|
|
75
|
-
return SKILL_COMMAND_ACTIONS
|
|
76
|
-
.flatMap((action) => [action.name, ...("aliases" in action ? action.aliases ?? [] : [])].map((name) => ({ name, description: action.description })))
|
|
77
|
-
.filter((action) => action.name.startsWith(current.toLowerCase()))
|
|
78
|
-
.map((action) => ({
|
|
79
|
-
value: action.name,
|
|
80
|
-
insertText: action.name === "list" || action.name === "ls" ? `/skill ${action.name}` : `/skill ${action.name} `,
|
|
81
|
-
description: action.description,
|
|
82
|
-
arguments: "optional",
|
|
83
|
-
kind: "skill-action",
|
|
84
|
-
}));
|
|
85
|
-
}
|
|
86
|
-
function skillNameCompletions(skills, current, action) {
|
|
87
|
-
return skills
|
|
88
|
-
.filter((skill) => skill.name.toLowerCase().includes(current.toLowerCase()))
|
|
89
|
-
.map((skill) => ({
|
|
90
|
-
value: skill.name,
|
|
91
|
-
insertText: action === "delete" ? `/skill delete ${skill.name}` : `/skill ${skill.name}`,
|
|
92
|
-
description: formatSkillCompletionDescription(skill),
|
|
93
|
-
arguments: "optional",
|
|
94
|
-
kind: "skill",
|
|
95
|
-
}));
|
|
96
|
-
}
|
|
97
|
-
function formatSkillCompletionDescription(skill) {
|
|
98
|
-
const tags = skill.tags?.length ? ` · ${skill.tags.join(",")}` : "";
|
|
99
|
-
return `${skill.description}${skill.execution ? ` · ${skill.execution}` : ""}${tags}`;
|
|
100
|
-
}
|
|
101
|
-
function secretCommandCompletions(prefix, secrets) {
|
|
102
|
-
const hasTrailingSpace = /\s$/.test(prefix);
|
|
103
|
-
const tokens = prefix.trim().split(/\s+/).filter(Boolean);
|
|
104
|
-
const argumentTokens = tokens.slice(1);
|
|
105
|
-
if (!hasTrailingSpace && argumentTokens.length === 0 && !"/secret".startsWith(prefix.toLowerCase()))
|
|
106
|
-
return [];
|
|
107
|
-
if (argumentTokens.length === 0)
|
|
108
|
-
return secretActionCompletions("");
|
|
109
|
-
const [action = "", key = "", newKey = ""] = argumentTokens;
|
|
110
|
-
const normalizedAction = secretCanonicalAction(action);
|
|
111
|
-
if (!normalizedAction) {
|
|
112
|
-
if (argumentTokens.length > 1 || hasTrailingSpace)
|
|
113
|
-
return [];
|
|
114
|
-
return secretActionCompletions(action);
|
|
115
|
-
}
|
|
116
|
-
if (normalizedAction === "list") {
|
|
117
|
-
if (argumentTokens.length === 1 && hasTrailingSpace)
|
|
118
|
-
return [{ value: "--show", insertText: "/secret list --show", description: "Print plaintext values in the REPL", arguments: "optional", kind: "secret-action" }];
|
|
119
|
-
if (argumentTokens.length === 2 && !hasTrailingSpace)
|
|
120
|
-
return "--show".startsWith(key) ? [{ value: "--show", insertText: "/secret list --show", description: "Print plaintext values in the REPL", arguments: "optional", kind: "secret-action" }] : [];
|
|
121
|
-
return [];
|
|
122
|
-
}
|
|
123
|
-
if (normalizedAction === "set" || normalizedAction === "request") {
|
|
124
|
-
if (argumentTokens.length <= 1 && hasTrailingSpace)
|
|
125
|
-
return [];
|
|
126
|
-
return [];
|
|
127
|
-
}
|
|
128
|
-
if (normalizedAction === "rename") {
|
|
129
|
-
if (argumentTokens.length <= 1)
|
|
130
|
-
return hasTrailingSpace ? secretKeyCompletions(secrets, "", normalizedAction) : [];
|
|
131
|
-
if (argumentTokens.length === 2 && !hasTrailingSpace)
|
|
132
|
-
return secretKeyCompletions(secrets, key, normalizedAction);
|
|
133
|
-
if (argumentTokens.length === 2 && hasTrailingSpace)
|
|
134
|
-
return [];
|
|
135
|
-
if (argumentTokens.length === 3 && !hasTrailingSpace && newKey)
|
|
136
|
-
return [];
|
|
137
|
-
return [];
|
|
138
|
-
}
|
|
139
|
-
if (normalizedAction === "get" || normalizedAction === "info" || normalizedAction === "delete") {
|
|
140
|
-
if (argumentTokens.length <= 1)
|
|
141
|
-
return hasTrailingSpace ? secretKeyCompletions(secrets, "", normalizedAction) : [];
|
|
142
|
-
if (argumentTokens.length === 2 && !hasTrailingSpace)
|
|
143
|
-
return secretKeyCompletions(secrets, key, normalizedAction);
|
|
144
|
-
return [];
|
|
145
|
-
}
|
|
146
|
-
return [];
|
|
147
|
-
}
|
|
148
|
-
function secretCanonicalAction(action) {
|
|
149
|
-
const lower = action.toLowerCase();
|
|
150
|
-
if (lower === "ls")
|
|
151
|
-
return "list";
|
|
152
|
-
if (lower === "show")
|
|
153
|
-
return "get";
|
|
154
|
-
if (lower === "empty")
|
|
155
|
-
return "request";
|
|
156
|
-
if (lower === "mv")
|
|
157
|
-
return "rename";
|
|
158
|
-
if (lower === "remove" || lower === "rm")
|
|
159
|
-
return "delete";
|
|
160
|
-
return ["list", "get", "set", "request", "info", "rename", "delete"].includes(lower) ? lower : undefined;
|
|
161
|
-
}
|
|
162
|
-
function secretActionCompletions(current) {
|
|
163
|
-
return SECRET_COMMAND_ACTIONS
|
|
164
|
-
.flatMap((action) => [action.name, ...("aliases" in action ? action.aliases ?? [] : [])].map((name) => ({ name, description: action.description })))
|
|
165
|
-
.filter((action) => action.name.startsWith(current.toLowerCase()))
|
|
166
|
-
.map((action) => ({
|
|
167
|
-
value: action.name,
|
|
168
|
-
insertText: `/secret ${action.name} `,
|
|
169
|
-
description: action.description,
|
|
170
|
-
arguments: "optional",
|
|
171
|
-
kind: "secret-action",
|
|
172
|
-
}));
|
|
173
|
-
}
|
|
174
|
-
function secretKeyCompletions(secrets, current, action) {
|
|
175
|
-
return secrets
|
|
176
|
-
.filter((secret) => secret.key.toLowerCase().includes(current.toLowerCase()))
|
|
177
|
-
.map((secret) => ({
|
|
178
|
-
value: secret.key,
|
|
179
|
-
insertText: `/secret ${action} ${secret.key}${action === "rename" ? " " : ""}`,
|
|
180
|
-
description: `${secret.status} · length=${secret.length}${secret.requestReason ? ` · ${secret.requestReason}` : ""}`,
|
|
181
|
-
arguments: "optional",
|
|
182
|
-
kind: "secret-key",
|
|
183
|
-
}));
|
|
184
|
-
}
|
|
185
|
-
function modelCommandCompletions(prefix) {
|
|
186
|
-
const hasTrailingSpace = /\s$/.test(prefix);
|
|
187
|
-
const tokens = prefix.trim().split(/\s+/).filter(Boolean);
|
|
188
|
-
const argumentTokens = tokens.slice(1);
|
|
189
|
-
if (!hasTrailingSpace && argumentTokens.length === 0 && !"/model".startsWith(prefix.toLowerCase()))
|
|
190
|
-
return [];
|
|
191
|
-
if (argumentTokens.length >= 2 && !hasTrailingSpace) {
|
|
192
|
-
const current = argumentTokens[1] ?? "";
|
|
193
|
-
return reasoningCompletions(argumentTokens[0] ?? "", current);
|
|
194
|
-
}
|
|
195
|
-
if (argumentTokens.length >= 2)
|
|
196
|
-
return [];
|
|
197
|
-
if (argumentTokens.length === 1 && hasTrailingSpace) {
|
|
198
|
-
const first = argumentTokens[0] ?? "";
|
|
199
|
-
return isModelReasoningArgument(first) ? [] : reasoningCompletions(first, "");
|
|
200
|
-
}
|
|
201
|
-
const current = argumentTokens[0] ?? "";
|
|
202
|
-
const modelCompletions = availableModelIds()
|
|
203
|
-
.filter((modelId) => modelId.toLowerCase().includes(current.toLowerCase()))
|
|
204
|
-
.map((modelId) => modelCompletion(modelId));
|
|
205
|
-
const reasoning = reasoningChoicesForModel(undefined)
|
|
206
|
-
.filter((choice) => choice.startsWith(current.toLowerCase()))
|
|
207
|
-
.map((choice) => reasoningCompletion("", choice));
|
|
208
|
-
return [...modelCompletions, ...reasoning];
|
|
209
|
-
}
|
|
210
|
-
function modelCompletion(modelId) {
|
|
211
|
-
const window = resolveContextWindowTokens(modelId);
|
|
212
|
-
const metadata = window.model;
|
|
213
|
-
const efforts = reasoningEffortsForModel(modelId);
|
|
214
|
-
const details = [
|
|
215
|
-
metadata?.provider,
|
|
216
|
-
metadata?.reasoning ? (efforts?.length ? `reasoning: ${efforts.join("/")}` : "reasoning") : undefined,
|
|
217
|
-
metadata?.imageInput ? "vision" : undefined,
|
|
218
|
-
window.tokens ? `${formatCompactNumber(window.tokens)} ctx` : undefined,
|
|
219
|
-
].filter(Boolean).join(" · ");
|
|
220
|
-
return {
|
|
221
|
-
value: modelId,
|
|
222
|
-
insertText: `/model ${modelId}`,
|
|
223
|
-
description: details || "model id",
|
|
224
|
-
arguments: "optional",
|
|
225
|
-
kind: "model",
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
function reasoningCompletions(modelId, current) {
|
|
229
|
-
return reasoningChoicesForModel(modelId || undefined)
|
|
230
|
-
.filter((choice) => choice.startsWith(current.toLowerCase()))
|
|
231
|
-
.map((choice) => reasoningCompletion(modelId, choice));
|
|
232
|
-
}
|
|
233
|
-
function reasoningChoicesForModel(modelId) {
|
|
234
|
-
if (!modelId)
|
|
235
|
-
return [...MODEL_REASONING_EFFORTS, ...MODEL_REASONING_CONTROL_CHOICES];
|
|
236
|
-
const efforts = reasoningEffortsForModel(modelId);
|
|
237
|
-
if (!efforts)
|
|
238
|
-
return MODEL_REASONING_CONTROL_CHOICES;
|
|
239
|
-
return [...efforts, ...MODEL_REASONING_CONTROL_CHOICES];
|
|
240
|
-
}
|
|
241
|
-
function reasoningCompletion(modelId, choice) {
|
|
242
|
-
return {
|
|
243
|
-
value: choice,
|
|
244
|
-
insertText: modelId ? `/model ${modelId} ${choice}` : `/model ${choice}`,
|
|
245
|
-
description: reasoningDescription(choice),
|
|
246
|
-
arguments: "optional",
|
|
247
|
-
kind: "reasoning",
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
function availableModelIds() {
|
|
251
|
-
const ids = loadModelCatalog().models.flatMap((model) => model.modelIds.length ? model.modelIds : [model.id]);
|
|
252
|
-
return [...new Set(ids)].sort((left, right) => left.localeCompare(right));
|
|
253
|
-
}
|
|
254
|
-
function reasoningDescription(choice) {
|
|
255
|
-
if (choice === "default")
|
|
256
|
-
return "Use provider/model default reasoning effort";
|
|
257
|
-
if (choice === "off")
|
|
258
|
-
return "Disable reasoning effort override";
|
|
259
|
-
return `Set reasoning effort to ${choice}`;
|
|
260
|
-
}
|
|
261
|
-
function formatCompactNumber(value) {
|
|
262
|
-
if (value === undefined)
|
|
263
|
-
return "?";
|
|
264
|
-
if (value >= 1_000_000)
|
|
265
|
-
return `${Number((value / 1_000_000).toFixed(1))}M`;
|
|
266
|
-
if (value >= 1_000)
|
|
267
|
-
return `${Number((value / 1_000).toFixed(1))}K`;
|
|
268
|
-
return String(Math.round(value));
|
|
269
|
-
}
|
|
270
|
-
export const SLASH_COMPLETION_PAGE_SIZE = 10;
|
|
271
|
-
const MODEL_REASONING_EFFORTS = ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
272
|
-
const MODEL_REASONING_CONTROL_CHOICES = ["default", "off"];
|
|
273
|
-
const SKILL_COMMAND_ACTIONS = [
|
|
274
|
-
{ name: "list", description: "Open the skill management browser", aliases: ["ls"] },
|
|
275
|
-
{ name: "import", description: "Import by linking a skill directory" },
|
|
276
|
-
{ name: "delete", description: "Delete a workspace skill link/directory", aliases: ["remove", "rm"] },
|
|
277
|
-
];
|
|
278
|
-
const SECRET_COMMAND_ACTIONS = [
|
|
279
|
-
{ name: "list", description: "List secret keys/status/length; add --show to print values" },
|
|
280
|
-
{ name: "get", description: "Print one secret value in the REPL" },
|
|
281
|
-
{ name: "set", description: "Set a plaintext secret value" },
|
|
282
|
-
{ name: "request", description: "Create an empty placeholder secret", aliases: ["empty"] },
|
|
283
|
-
{ name: "info", description: "Show one secret's metadata" },
|
|
284
|
-
{ name: "rename", description: "Rename a secret key", aliases: ["mv"] },
|
|
285
|
-
{ name: "delete", description: "Delete a secret", aliases: ["remove", "rm"] },
|
|
286
|
-
];
|
|
287
|
-
//# sourceMappingURL=slash-completion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slash-completion.js","sourceRoot":"","sources":["../../src/repl/slash-completion.ts"],"names":[],"mappings":"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"}
|