neoctl 0.2.2 → 0.2.3

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.
Files changed (51) hide show
  1. package/dist/repl/index.js +2 -2
  2. package/dist/repl/index.js.map +1 -1
  3. package/package.json +3 -2
  4. package/dist/core/commands.d.ts +0 -66
  5. package/dist/core/commands.js +0 -151
  6. package/dist/core/commands.js.map +0 -1
  7. package/dist/core/runtime.d.ts +0 -59
  8. package/dist/core/runtime.js +0 -161
  9. package/dist/core/runtime.js.map +0 -1
  10. package/dist/repl/render.d.ts +0 -2
  11. package/dist/repl/render.js +0 -45
  12. package/dist/repl/render.js.map +0 -1
  13. package/dist/repl/status-line.d.ts +0 -19
  14. package/dist/repl/status-line.js +0 -160
  15. package/dist/repl/status-line.js.map +0 -1
  16. package/dist/repl/transcript-flush.d.ts +0 -6
  17. package/dist/repl/transcript-flush.js +0 -54
  18. package/dist/repl/transcript-flush.js.map +0 -1
  19. package/dist/repl/transcript-format.d.ts +0 -16
  20. package/dist/repl/transcript-format.js +0 -199
  21. package/dist/repl/transcript-format.js.map +0 -1
  22. package/dist/server/agent-manager.d.ts +0 -56
  23. package/dist/server/agent-manager.js +0 -171
  24. package/dist/server/agent-manager.js.map +0 -1
  25. package/dist/server/connection-manager.d.ts +0 -18
  26. package/dist/server/connection-manager.js +0 -52
  27. package/dist/server/connection-manager.js.map +0 -1
  28. package/dist/server/event-mapper.d.ts +0 -4
  29. package/dist/server/event-mapper.js +0 -31
  30. package/dist/server/event-mapper.js.map +0 -1
  31. package/dist/server/query-runtime.d.ts +0 -29
  32. package/dist/server/query-runtime.js +0 -61
  33. package/dist/server/query-runtime.js.map +0 -1
  34. package/dist/server/rpc-router.d.ts +0 -24
  35. package/dist/server/rpc-router.js +0 -165
  36. package/dist/server/rpc-router.js.map +0 -1
  37. package/dist/server/rpc-types.d.ts +0 -92
  38. package/dist/server/rpc-types.js +0 -2
  39. package/dist/server/rpc-types.js.map +0 -1
  40. package/dist/server/ws-server.d.ts +0 -22
  41. package/dist/server/ws-server.js +0 -84
  42. package/dist/server/ws-server.js.map +0 -1
  43. package/dist/tasks/task-record.d.ts +0 -50
  44. package/dist/tasks/task-record.js +0 -50
  45. package/dist/tasks/task-record.js.map +0 -1
  46. package/dist/tools/builtins/echo-tool.d.ts +0 -4
  47. package/dist/tools/builtins/echo-tool.js +0 -26
  48. package/dist/tools/builtins/echo-tool.js.map +0 -1
  49. package/dist/tools/builtins/vision-tool.d.ts +0 -38
  50. package/dist/tools/builtins/vision-tool.js +0 -351
  51. package/dist/tools/builtins/vision-tool.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neoctl",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "TypeScript scaffold for a streaming agent runtime with a REPL UI layer.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -27,7 +27,8 @@
27
27
  "scripts": {
28
28
  "postinstall": "node scripts/install-ripgrep.cjs --optional",
29
29
  "vendor:rg": "node scripts/install-ripgrep.cjs",
30
- "build": "tsc -p tsconfig.json && node scripts/copy-model-metadata.mjs",
30
+ "build": "node -e \"import('node:fs/promises').then(fs => fs.rm('dist', { recursive: true, force: true })).catch(() => process.exit(1))\" && tsc -p tsconfig.json && node scripts/copy-model-metadata.mjs",
31
+ "prepack": "npm run build",
31
32
  "standalone": "npm run build && node scripts/build-standalone.mjs",
32
33
  "standalone:clean": "node -e \"require('node:fs').rmSync('standalone',{recursive:true,force:true});require('node:fs').rmSync('.standalone-build',{recursive:true,force:true})\"",
33
34
  "typecheck": "tsc -p tsconfig.json --noEmit",
@@ -1,66 +0,0 @@
1
- export type ModelReasoningArgument = "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | "default" | "off";
2
- export type RuntimeCommand = {
3
- type: "help";
4
- } | {
5
- type: "cost";
6
- } | {
7
- type: "compact";
8
- } | {
9
- type: "pure";
10
- } | {
11
- type: "env";
12
- } | {
13
- type: "exit";
14
- } | {
15
- type: "export";
16
- path: string;
17
- } | {
18
- type: "login";
19
- } | {
20
- type: "log";
21
- path?: string;
22
- off?: boolean;
23
- } | {
24
- type: "model";
25
- model?: string;
26
- reasoning?: ModelReasoningArgument;
27
- } | {
28
- type: "new";
29
- } | {
30
- type: "reset";
31
- } | {
32
- type: "sessions";
33
- } | {
34
- type: "state";
35
- } | {
36
- type: "input";
37
- text: string;
38
- };
39
- export type RuntimeCommandArgumentSpec = "none" | "required" | "optional" | "log";
40
- export interface RuntimeCommandDefinition {
41
- name: string;
42
- usage: string;
43
- description: string;
44
- arguments: RuntimeCommandArgumentSpec;
45
- aliases?: string[];
46
- }
47
- export declare const runtimeCommandDefinitions: RuntimeCommandDefinition[];
48
- export declare const commandUsages: string[];
49
- export declare function parseRuntimeCommand(line: string): RuntimeCommand;
50
- export declare function isValidRuntimeCommandLine(line: string): boolean;
51
- export declare function isModelReasoningArgument(value: string): value is ModelReasoningArgument;
52
- export declare const runtimeHelpText: string;
53
- export interface CliRuntimeCommandParseResult {
54
- line: string;
55
- definition: RuntimeCommandDefinition;
56
- }
57
- export declare function parseCliRuntimeCommandArgs(argv: string[]): CliRuntimeCommandParseResult | undefined;
58
- export declare function cliHelpText(binaryName?: string): string;
59
- export type ReplCommand = RuntimeCommand;
60
- export type ReplCommandArgumentSpec = RuntimeCommandArgumentSpec;
61
- export type ReplCommandDefinition = RuntimeCommandDefinition;
62
- export declare const replCommandDefinitions: RuntimeCommandDefinition[];
63
- export declare const helpText: string;
64
- export declare const parseReplCommand: typeof parseRuntimeCommand;
65
- export declare const isValidReplCommandLine: typeof isValidRuntimeCommandLine;
66
- export declare const parseCliReplCommandArgs: typeof parseCliRuntimeCommandArgs;
@@ -1,151 +0,0 @@
1
- export const runtimeCommandDefinitions = [
2
- { name: "/help", usage: "/help", description: "Show commands", arguments: "none" },
3
- { name: "/cost", usage: "/cost", description: "Show total token usage for this session", arguments: "none" },
4
- { name: "/compact", usage: "/compact", description: "Manually compact earlier context", arguments: "none" },
5
- { name: "/pure", usage: "/pure", description: "Sanitize context after WAF/risk blocks without resetting", arguments: "none" },
6
- { name: "/export", usage: "/export <absolute-md-path>", description: "Export the current session transcript as detailed Markdown", arguments: "required" },
7
- { name: "/env", usage: "/env", description: "Open the neoctl configuration directory", arguments: "none" },
8
- { name: "/login", usage: "/login", description: "Configure and save a model provider to the env file", arguments: "none" },
9
- { name: "/model", usage: "/model [model-id] [effort|default|off]", description: "Show or switch model and supported reasoning effort", arguments: "optional" },
10
- { name: "/new", usage: "/new", description: "Start a new session; running current session continues in background", arguments: "none" },
11
- { name: "/log", usage: "/log <dir>", description: "Write model communication logs to an absolute directory", arguments: "required" },
12
- { name: "/log off", usage: "/log off", description: "Disable model communication logs", arguments: "none" },
13
- { name: "/sessions", usage: "/sessions", description: "Browse saved sessions", arguments: "none" },
14
- { name: "/state", usage: "/state", description: "Show query engine state", arguments: "none" },
15
- { name: "/reset", usage: "/reset", description: "Clear current transcript and add a reset marker", arguments: "none" },
16
- { name: "/exit", usage: "/exit", description: "Quit", arguments: "none", aliases: ["/quit"] },
17
- ];
18
- export const commandUsages = runtimeCommandDefinitions.map((command) => command.usage);
19
- export function parseRuntimeCommand(line) {
20
- const parsed = parseSlashCommandLine(line);
21
- if (!parsed.valid)
22
- return { type: "input", text: line };
23
- const { name, argument } = parsed;
24
- if (name === "/help")
25
- return { type: "help" };
26
- if (name === "/cost")
27
- return { type: "cost" };
28
- if (name === "/compact")
29
- return { type: "compact" };
30
- if (name === "/pure")
31
- return { type: "pure" };
32
- if (name === "/export")
33
- return { type: "export", path: argument };
34
- if (name === "/env")
35
- return { type: "env" };
36
- if (name === "/login")
37
- return { type: "login" };
38
- if (name === "/exit" || name === "/quit")
39
- return { type: "exit" };
40
- if (name === "/model")
41
- return parseModelCommand(argument) ?? { type: "input", text: line };
42
- if (name === "/new")
43
- return { type: "new" };
44
- if (name === "/log") {
45
- if (argument.toLowerCase() === "off")
46
- return { type: "log", off: true };
47
- return { type: "log", path: argument };
48
- }
49
- if (name === "/reset")
50
- return { type: "reset" };
51
- if (name === "/sessions")
52
- return { type: "sessions" };
53
- if (name === "/state")
54
- return { type: "state" };
55
- return { type: "input", text: line };
56
- }
57
- export function isValidRuntimeCommandLine(line) {
58
- return parseSlashCommandLine(line).valid && parseRuntimeCommand(line).type !== "input";
59
- }
60
- export function isModelReasoningArgument(value) {
61
- return value === "none" || value === "minimal" || value === "low" || value === "medium" || value === "high" || value === "xhigh" || value === "max" || value === "default" || value === "off";
62
- }
63
- function parseModelCommand(argument) {
64
- const tokens = argument.split(/\s+/).filter(Boolean);
65
- if (tokens.length === 0)
66
- return { type: "model" };
67
- if (tokens.length > 2)
68
- return undefined;
69
- if (tokens.length === 1) {
70
- const [single] = tokens;
71
- return isModelReasoningArgument(single)
72
- ? { type: "model", reasoning: single }
73
- : { type: "model", model: single };
74
- }
75
- const [model, reasoning] = tokens;
76
- if (!isModelReasoningArgument(reasoning))
77
- return undefined;
78
- return { type: "model", model, reasoning };
79
- }
80
- function parseSlashCommandLine(line) {
81
- if (!line.startsWith("/"))
82
- return { valid: false };
83
- const trimmed = line.trimEnd();
84
- const match = /^(\/\S+)(?:\s+(.*))?$/.exec(trimmed);
85
- if (!match)
86
- return { valid: false };
87
- const typedName = match[1].toLowerCase();
88
- const argument = match[2]?.trim() ?? "";
89
- const definition = runtimeCommandDefinitions.find((command) => command.name.toLowerCase() === typedName || command.aliases?.some((alias) => alias.toLowerCase() === typedName));
90
- if (!definition)
91
- return { valid: false };
92
- if (definition.arguments === "none" && argument.length > 0)
93
- return { valid: false };
94
- if (definition.arguments === "required" && argument.length === 0)
95
- return { valid: false };
96
- if (definition.arguments === "log" && argument.length === 0)
97
- return { valid: false };
98
- return { valid: true, name: typedName, argument };
99
- }
100
- const helpUsageWidth = Math.max(...runtimeCommandDefinitions.map((command) => command.usage.length));
101
- export const runtimeHelpText = [
102
- "Commands:",
103
- ...runtimeCommandDefinitions.map((command) => ` ${command.usage.padEnd(helpUsageWidth)} ${command.description}`),
104
- ].join("\n");
105
- export function parseCliRuntimeCommandArgs(argv) {
106
- if (argv.length === 0)
107
- return undefined;
108
- const first = argv[0];
109
- const match = /^--?([^=\s]+)(?:=(.*))?$/.exec(first);
110
- if (!match)
111
- return undefined;
112
- const commandName = `/${match[1].toLowerCase()}`;
113
- const definition = runtimeCommandDefinitions.find((command) => command.name.toLowerCase() === commandName || command.aliases?.some((alias) => alias.toLowerCase() === commandName));
114
- if (!definition)
115
- return undefined;
116
- const inlineArgument = match[2];
117
- const rest = inlineArgument === undefined ? argv.slice(1) : [inlineArgument, ...argv.slice(1)];
118
- if (definition.arguments === "none" && rest.length > 0)
119
- return undefined;
120
- if ((definition.arguments === "required" || definition.arguments === "log") && rest.length === 0)
121
- return undefined;
122
- const line = rest.length === 0 ? definition.name : `${definition.name} ${rest.join(" ")}`;
123
- return { line, definition };
124
- }
125
- export function cliHelpText(binaryName = "neo") {
126
- const cliCommandUsages = runtimeCommandDefinitions.map((command) => command.usage.replace(/^\//, "-"));
127
- const cliUsageWidth = Math.max(...cliCommandUsages.map((usage) => usage.length));
128
- return [
129
- `Usage: ${binaryName} [command]`,
130
- "",
131
- "CLI commands mirror slash commands; use '-' or '--' in place of '/'.",
132
- "",
133
- "Commands:",
134
- ...runtimeCommandDefinitions.map((command) => {
135
- const usage = command.usage.replace(/^\//, "-");
136
- return ` ${usage.padEnd(cliUsageWidth)} ${command.description}`;
137
- }),
138
- "",
139
- "Examples:",
140
- ` ${binaryName} -help`,
141
- ` ${binaryName} -model`,
142
- ` ${binaryName} -model gpt-5.5 high`,
143
- ` ${binaryName} -new`,
144
- ].join("\n");
145
- }
146
- export const replCommandDefinitions = runtimeCommandDefinitions;
147
- export const helpText = runtimeHelpText;
148
- export const parseReplCommand = parseRuntimeCommand;
149
- export const isValidReplCommandLine = isValidRuntimeCommandLine;
150
- export const parseCliReplCommandArgs = parseCliRuntimeCommandArgs;
151
- //# sourceMappingURL=commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import { TaskStore } from "../tasks/task-store.js";
2
- import { type ModelProviderName } from "../model/config.js";
3
- import { CommunicationLogger, LoggingModelGateway } from "../model/communication-logger.js";
4
- import type { ModelUsage, ReasoningConfig } from "../model/model-gateway.js";
5
- import { ToolRegistry } from "../tools/registry.js";
6
- import type { ContextMetrics } from "../types/events.js";
7
- import type { TaskNotificationSource } from "./query.js";
8
- import { QueryEngine } from "./query-engine.js";
9
- export interface CoreRuntime {
10
- engine: QueryEngine;
11
- communicationLogger: CommunicationLogger;
12
- modelGateway: LoggingModelGateway;
13
- usage: SessionUsageTracker;
14
- taskStore: TaskStore;
15
- tools: ToolRegistry;
16
- initialMetrics: ContextMetrics;
17
- defaultReasoning?: ReasoningConfig | null;
18
- envPath: string;
19
- envNotice?: string;
20
- }
21
- export interface CreateCoreRuntimeOptions {
22
- agentId?: string;
23
- queryOrigin?: string;
24
- sessionId?: string;
25
- sessionCwd?: string;
26
- resume?: boolean;
27
- }
28
- export interface CoreServices {
29
- communicationLogger: CommunicationLogger;
30
- modelGateway: LoggingModelGateway;
31
- taskStore: TaskStore;
32
- tools: ToolRegistry;
33
- defaultReasoning?: ReasoningConfig | null;
34
- envPath: string;
35
- envNotice?: string;
36
- }
37
- export interface UsageTotals {
38
- inputTokens: number;
39
- outputTokens: number;
40
- totalTokens: number;
41
- reasoningTokens: number;
42
- cachedTokens: number;
43
- requests: number;
44
- computedTotalTokens: boolean;
45
- }
46
- export declare class SessionUsageTracker {
47
- private totals;
48
- private lastUsage?;
49
- add(usage: ModelUsage): void;
50
- reset(): void;
51
- snapshot(): UsageTotals;
52
- }
53
- export declare function createCoreServices(): CoreServices;
54
- export declare function createQueryEngineRuntime(services: CoreServices, options?: CreateCoreRuntimeOptions): Promise<CoreRuntime>;
55
- export declare function createCoreRuntime(options?: CreateCoreRuntimeOptions): Promise<CoreRuntime>;
56
- export declare function createTaskNotificationSource(taskStore: TaskStore): TaskNotificationSource;
57
- export declare function syncImageGenerationTool(runtime: Pick<CoreRuntime, "tools">, provider: ModelProviderName | undefined): void;
58
- export declare function formatCreatedEnvNotice(dotEnvPath: string): string;
59
- export declare function parseResumeFlag(value: string | undefined): boolean;
@@ -1,161 +0,0 @@
1
- import path from "node:path";
2
- import { TaskStore } from "../tasks/task-store.js";
3
- import { createTaskTools } from "../tasks/task-tools.js";
4
- import { loadDefaultDotEnvFiles } from "../model/env.js";
5
- import { readModelProviderConfig } from "../model/config.js";
6
- import { CommunicationLogger, LoggingModelGateway } from "../model/communication-logger.js";
7
- import { createModelGatewayFromProcessEnv } from "../model/provider-factory.js";
8
- import { ToolRegistry } from "../tools/registry.js";
9
- import { editTool, writeTool } from "../tools/builtins/edit-tool.js";
10
- import { createExecTool } from "../tools/builtins/exec-tool.js";
11
- import { listDirectoryTool, readFileTool } from "../tools/builtins/filesystem-tools.js";
12
- import { grepTool } from "../tools/builtins/grep-tool.js";
13
- import { searchTool } from "../tools/builtins/search-tool.js";
14
- import { planTool } from "../tools/builtins/plan-tool.js";
15
- import { createOpenAIImageGenerationTool } from "../tools/builtins/image-generation-tool.js";
16
- import { createLoadImageTool } from "../tools/builtins/image-loader-tool.js";
17
- import { QueryEngine } from "./query-engine.js";
18
- import { commandUsages } from "./commands.js";
19
- export class SessionUsageTracker {
20
- totals = emptyUsageTotals();
21
- lastUsage;
22
- add(usage) {
23
- if (usage === this.lastUsage)
24
- return;
25
- this.lastUsage = usage;
26
- const inputTokens = usageTokenValue(usage.inputTokens);
27
- const outputTokens = usageTokenValue(usage.outputTokens);
28
- const reportedTotalTokens = usageTokenValue(usage.totalTokens);
29
- const computedTotalTokens = reportedTotalTokens ?? sumUsageTokens(inputTokens, outputTokens);
30
- const reasoningTokens = usageTokenValue(usage.reasoningTokens);
31
- const cachedTokens = usageTokenValue(usage.cachedTokens);
32
- if (inputTokens === undefined && outputTokens === undefined && computedTotalTokens === undefined && reasoningTokens === undefined && cachedTokens === undefined)
33
- return;
34
- this.totals = {
35
- inputTokens: this.totals.inputTokens + (inputTokens ?? 0),
36
- outputTokens: this.totals.outputTokens + (outputTokens ?? 0),
37
- totalTokens: this.totals.totalTokens + (computedTotalTokens ?? 0),
38
- reasoningTokens: this.totals.reasoningTokens + (reasoningTokens ?? 0),
39
- cachedTokens: this.totals.cachedTokens + (cachedTokens ?? 0),
40
- requests: this.totals.requests + 1,
41
- computedTotalTokens: this.totals.computedTotalTokens || (reportedTotalTokens === undefined && computedTotalTokens !== undefined),
42
- };
43
- }
44
- reset() {
45
- this.totals = emptyUsageTotals();
46
- this.lastUsage = undefined;
47
- }
48
- snapshot() {
49
- return { ...this.totals };
50
- }
51
- }
52
- function emptyUsageTotals() {
53
- return { inputTokens: 0, outputTokens: 0, totalTokens: 0, reasoningTokens: 0, cachedTokens: 0, requests: 0, computedTotalTokens: false };
54
- }
55
- function usageTokenValue(value) {
56
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : undefined;
57
- }
58
- function sumUsageTokens(left, right) {
59
- if (left === undefined && right === undefined)
60
- return undefined;
61
- return (left ?? 0) + (right ?? 0);
62
- }
63
- export function createCoreServices() {
64
- const envLoad = loadDefaultDotEnvFiles({ override: true });
65
- const modelConfig = readModelProviderConfig(process.env);
66
- const communicationLogger = new CommunicationLogger();
67
- const modelGateway = new LoggingModelGateway(createModelGatewayFromProcessEnv(process.env), communicationLogger);
68
- const taskStore = new TaskStore();
69
- const tools = new ToolRegistry();
70
- tools.register(editTool);
71
- tools.register(writeTool);
72
- tools.register(createExecTool({ taskStore }));
73
- tools.register(listDirectoryTool);
74
- tools.register(readFileTool);
75
- tools.register(grepTool);
76
- tools.register(searchTool);
77
- tools.register(createLoadImageTool());
78
- if (modelConfig?.provider === "openai")
79
- tools.register(createOpenAIImageGenerationTool());
80
- tools.register(planTool);
81
- for (const tool of createTaskTools(taskStore))
82
- tools.register(tool);
83
- return {
84
- communicationLogger,
85
- modelGateway,
86
- taskStore,
87
- tools,
88
- defaultReasoning: modelConfig?.defaultReasoning,
89
- envPath: process.env.NEO_ENV_FILE?.trim() ? path.resolve(process.env.NEO_ENV_FILE.trim()) : envLoad.userDotEnvPath,
90
- envNotice: envLoad.createdUserDotEnv ? formatCreatedEnvNotice(envLoad.userDotEnvPath) : undefined,
91
- };
92
- }
93
- export async function createQueryEngineRuntime(services, options = {}) {
94
- const modelConfig = readModelProviderConfig(process.env);
95
- const engine = new QueryEngine({
96
- agentId: options.agentId ?? "main",
97
- model: modelConfig?.model,
98
- fallbackModel: modelConfig?.fallbackModel,
99
- reasoning: modelConfig?.defaultReasoning,
100
- queryOrigin: options.queryOrigin,
101
- modelGateway: services.modelGateway,
102
- tools: services.tools,
103
- taskNotificationSource: createTaskNotificationSource(services.taskStore),
104
- commands: commandUsages,
105
- session: {
106
- enabled: process.env.AGENT_SESSION_TRANSCRIPT !== "0",
107
- sessionId: options.sessionId ?? process.env.AGENT_SESSION_ID,
108
- rootDir: process.env.AGENT_SESSION_DIR,
109
- cwd: options.sessionCwd,
110
- resume: options.resume ?? parseResumeFlag(process.env.AGENT_SESSION_RESUME),
111
- toolResultThresholdChars: process.env.AGENT_TOOL_RESULT_THRESHOLD_CHARS ? Number(process.env.AGENT_TOOL_RESULT_THRESHOLD_CHARS) : undefined,
112
- },
113
- });
114
- await engine.initialize();
115
- const initialMetrics = await engine.contextMetrics();
116
- return {
117
- engine,
118
- communicationLogger: services.communicationLogger,
119
- modelGateway: services.modelGateway,
120
- usage: new SessionUsageTracker(),
121
- taskStore: services.taskStore,
122
- tools: services.tools,
123
- initialMetrics,
124
- defaultReasoning: services.defaultReasoning,
125
- envPath: services.envPath,
126
- envNotice: services.envNotice,
127
- };
128
- }
129
- export async function createCoreRuntime(options = {}) {
130
- return createQueryEngineRuntime(createCoreServices(), options);
131
- }
132
- export function createTaskNotificationSource(taskStore) {
133
- return {
134
- collectUnnotifiedCompletions() {
135
- return taskStore.collectUnnotifiedCompletions().map((task) => ({
136
- taskId: task.taskId,
137
- agentId: task.agentId,
138
- status: task.status,
139
- type: task.type,
140
- content: task.result?.content ?? task.error ?? "",
141
- }));
142
- },
143
- markNotified(taskId) {
144
- taskStore.markNotified(taskId);
145
- },
146
- };
147
- }
148
- export function syncImageGenerationTool(runtime, provider) {
149
- runtime.tools.unregister("image2");
150
- if (provider === "openai")
151
- runtime.tools.register(createOpenAIImageGenerationTool());
152
- }
153
- export function formatCreatedEnvNotice(dotEnvPath) {
154
- return `Created default config file: ${dotEnvPath}\nSet MODEL_PROVIDER and the matching provider section (for example OPENAI_API_KEY, ANTHROPIC_API_KEY, or KIMI_API_KEY), then restart neo.`;
155
- }
156
- export function parseResumeFlag(value) {
157
- if (!value)
158
- return false;
159
- return ["1", "true", "yes", "latest"].includes(value.toLowerCase());
160
- }
161
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { AgentEvent } from "../types/events.js";
2
- export declare function renderEvent(event: AgentEvent): string | undefined;
@@ -1,45 +0,0 @@
1
- export function renderEvent(event) {
2
- switch (event.type) {
3
- case "state":
4
- return `${titleCaseMeta(event.phase)}${event.detail ? ` · ${event.detail}` : ""}`;
5
- case "context.metrics":
6
- return undefined;
7
- case "assistant.delta":
8
- return event.text;
9
- case "thinking.delta":
10
- return `thinking> ${event.text}`;
11
- case "message":
12
- return event.message.blocks
13
- .map((block) => {
14
- const prefix = event.message.isMeta ? undefined : event.message.role;
15
- if (block.type === "text")
16
- return prefix ? `${prefix}> ${block.text}` : block.text;
17
- if (block.type === "thinking")
18
- return `thinking> ${block.text}`;
19
- if (block.type === "tool_result")
20
- return `tool_result:${block.name}> ${JSON.stringify(block.output)}`;
21
- return `tool_use:${block.name}> ${JSON.stringify(block.input)}`;
22
- })
23
- .join("\n");
24
- case "tool.started":
25
- return `tool started: ${event.toolUse.name}`;
26
- case "tool.finished":
27
- return `tool finished: ${event.toolUse.name} (${event.ok ? "ok" : "failed"})`;
28
- case "usage":
29
- return undefined;
30
- case "retrying":
31
- return `retrying model request: attempt ${event.attempt}, delay ${event.delayMs}ms, ${event.error.message}`;
32
- case "terminal":
33
- return `Stopped · ${event.reason}${event.detail ? ` · ${event.detail}` : ""}`;
34
- case "error":
35
- return `error: ${event.error.message}`;
36
- }
37
- }
38
- function titleCaseMeta(value) {
39
- return value
40
- .split(/[_\s-]+/u)
41
- .filter(Boolean)
42
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
43
- .join(" ");
44
- }
45
- //# sourceMappingURL=render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/repl/render.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpF,KAAK,iBAAiB;YACpB,OAAO,SAAS,CAAC;QACnB,KAAK,iBAAiB;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM;iBACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACrE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnF,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;oBAAE,OAAO,aAAa,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;oBAAE,OAAO,eAAe,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtG,OAAO,YAAY,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,cAAc;YACjB,OAAO,iBAAiB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/C,KAAK,eAAe;YAClB,OAAO,kBAAkB,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC;QAChF,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,mCAAmC,KAAK,CAAC,OAAO,WAAW,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9G,KAAK,UAAU;YACb,OAAO,aAAa,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChF,KAAK,OAAO;YACV,OAAO,UAAU,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,KAAK,CAAC,UAAU,CAAC;SACjB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -1,19 +0,0 @@
1
- import type { Writable } from "node:stream";
2
- import type { AgentEvent } from "../types/events.js";
3
- export declare class ReplStatusLine {
4
- private readonly output;
5
- private phase;
6
- private lastDetail;
7
- private metrics?;
8
- private lastUsage?;
9
- private outputTokensStreamed;
10
- private visible;
11
- private pulseFrame;
12
- constructor(output: Writable & {
13
- isTTY?: boolean;
14
- });
15
- handle(event: AgentEvent): void;
16
- clear(): void;
17
- render(): void;
18
- renderLine(): string;
19
- }