Skip to content

Commit 830b098

Browse files
committed
move defineAction to api types package
1 parent 0a8b5c2 commit 830b098

11 files changed

Lines changed: 44 additions & 42 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
import { SchemaTypes, InferDataFromSchema, RCEAction } from './types';
2+
13
export type * from './classes.d';
24
export * from './enums';
35
export type * from './types';
6+
7+
/**
8+
* Define an action with proper type inference for schema, input data, and event types.
9+
* @param action The action definition
10+
* @returns The same action with full type inference
11+
* @example
12+
* // Event type is inferred from cancelEvents
13+
* defineAction({
14+
* name: 'my_action',
15+
* schema: z.object({ file: z.string() }),
16+
* handler: (ctx) => actionHandlerSuccess(),
17+
* cancelEvents: [(ctx) => new RCECancelEvent<vscode.FileDeleteEvent>({ ... })],
18+
* // ...
19+
* });
20+
*/
21+
/* @__NO_SIDE_EFFECTS__ */
22+
export function defineAction<
23+
const TData extends object | undefined,
24+
const TSchema extends SchemaTypes,
25+
const TInput extends InferDataFromSchema<TSchema>,
26+
>(action: RCEAction<TData, TSchema, TInput>): RCEAction<TData, TSchema, TInput> {
27+
return action;
28+
}

src/changelog.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import * as vscode from 'vscode';
2-
import { ActionHandlerResult, PermissionLevel } from '@vsc-neuropilot/api-types';
2+
import { ActionHandlerResult, PermissionLevel, defineAction } from '@vsc-neuropilot/api-types';
33
import { z } from 'zod';
44

55
import { EXCEPTION_THROWN_STRING, NEURO } from '@/constants';
66
import { getFence, logOutput } from '@/utils/misc';
7-
import { actionHandlerFailure, actionHandlerSuccess, defineAction } from '@/utils/neuro_client';
7+
import { actionHandlerFailure, actionHandlerSuccess } from '@/utils/neuro_client';
88
import { CONNECTION } from '@/config';
99
import { addActions, CATEGORY_MISC } from './rce';
1010

src/chat.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import * as vscode from 'vscode';
22
import assert from 'node:assert';
3-
import { PermissionLevel } from '@vsc-neuropilot/api-types';
3+
import { defineAction, PermissionLevel } from '@vsc-neuropilot/api-types';
44
import { z } from 'zod';
55

66
import { NEURO } from '@/constants';
77
import { filterFileContents, logOutput, simpleFileName } from '@/utils/misc';
88
import { CONFIG, CONNECTION } from '@/config';
9-
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure, defineAction } from './utils/neuro_client';
9+
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure } from './utils/neuro_client';
1010
import { abortActionForce, addActions, registerAction, tryForceActions } from '@/rce';
1111

1212
let requestCancelled = false;

src/completions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import * as vscode from 'vscode';
22
// this doesn't work because types or smth idk
33
//import { ActionForcePriorityEnum } from 'neuro-game-sdk';
4-
import { PermissionLevel, ActionForcePriorityEnum } from '@vsc-neuropilot/api-types';
4+
import { PermissionLevel, ActionForcePriorityEnum, defineAction } from '@vsc-neuropilot/api-types';
55

66
import { z } from 'zod';
77

88
import { NEURO } from '@/constants';
99
import { logOutput, simpleFileName, getPositionContext, formatContext, NeuroPositionContext } from '@/utils/misc';
1010
import { CONFIG, CONNECTION } from '@/config';
11-
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure, actionValidationRetry, defineAction } from '@/utils/neuro_client';
11+
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure, actionValidationRetry } from '@/utils/neuro_client';
1212
import { abortActionForce, addActions, canForceActions, tryForceActions } from '@/rce';
1313

1414
let lastSuggestions: string[] = [];

src/edit_files.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as vscode from 'vscode';
22
import { z } from 'zod';
33
import type { ActionData } from 'neuro-game-sdk';
4-
import { RCEHandlerReturns, ActionValidationResult, RCEContext, DiffRangeType } from '@vsc-neuropilot/api-types';
4+
import { RCEHandlerReturns, ActionValidationResult, RCEContext, DiffRangeType, defineAction } from '@vsc-neuropilot/api-types';
55

66
import { NEURO } from '@/constants';
77
import { escapeRegExp, getDiffRanges, getFence, getPositionContext, getProperty, getVirtualCursor, showDiffRanges, isPathNeuroSafe, logOutput, setVirtualCursor, simpleFileName, substituteMatch, clearDecorations, formatContext, filterFileContents, positionFromIndex, indexFromPosition, NeuroPositionContext } from '@/utils/misc';
8-
import { actionValidationAccept, actionValidationFailure, actionValidationRetry, actionHandlerSuccess, actionHandlerFailure, defineAction } from '@/utils/neuro_client';
8+
import { actionValidationAccept, actionValidationFailure, actionValidationRetry, actionHandlerSuccess, actionHandlerFailure } from '@/utils/neuro_client';
99
import { CONFIG, CONNECTION } from '@/config';
1010
import { createCursorPositionChangedEvent } from '@events/cursor';
1111
import { RCECancelEvent } from '@events/utils';

src/file_operations.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as vscode from 'vscode';
2-
import { RCEContext, ActionValidationResult, RCEHandlerReturns, PermissionLevel } from '@vsc-neuropilot/api-types';
2+
import { RCEContext, ActionValidationResult, RCEHandlerReturns, PermissionLevel, defineAction } from '@vsc-neuropilot/api-types';
33
import assert from 'node:assert';
44
import { z } from 'zod';
55

66
import { EXCEPTION_THROWN_STRING, NEURO, PROMISE_REJECTION_STRING } from '@/constants';
77
import { getProperty, getWorkspacePath, getWorkspaceUri, isPathNeuroSafe, logOutput, normalizePath, notifyOnCaughtException, stripTailSlashes } from '@/utils/misc';
8-
import { actionValidationFailure, actionValidationAccept, actionValidationRetry, actionHandlerSuccess, actionHandlerFailure, defineAction } from '@/utils/neuro_client';
8+
import { actionValidationFailure, actionValidationAccept, actionValidationRetry, actionHandlerSuccess, actionHandlerFailure } from '@/utils/neuro_client';
99
import { getPermissionLevel } from '@/config';
1010
import { targetedFileCreatedEvent, targetedFileDeletedEvent } from '@events/files';
1111
import { RCECancelEvent } from '@events/utils';

src/lint_problems.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as vscode from 'vscode';
22
import assert from 'node:assert';
3-
import { RCEContext, ActionValidationResult, ActionHandlerResult } from '@vsc-neuropilot/api-types';
3+
import { RCEContext, ActionValidationResult, ActionHandlerResult, defineAction } from '@vsc-neuropilot/api-types';
44
import { z } from 'zod';
55

66
import { EXCEPTION_THROWN_STRING, NEURO } from '@/constants';
77
import { normalizePath, getWorkspacePath, logOutput, isPathNeuroSafe, getWorkspaceUri } from '@/utils/misc';
88
import { CONFIG } from '@/config';
99
import { filePreviewProvider } from '@/previews/files';
10-
import { actionValidationAccept, actionValidationFailure, actionValidationRetry, actionHandlerSuccess, actionHandlerFailure, defineAction } from '@/utils/neuro_client';
10+
import { actionValidationAccept, actionValidationFailure, actionValidationRetry, actionHandlerSuccess, actionHandlerFailure } from '@/utils/neuro_client';
1111
import { targetedFileLintingResolvedEvent, targetedFolderLintingResolvedEvent, workspaceLintingResolvedEvent } from '@events/linting';
1212
import { addActions } from '@/rce';
1313

src/pseudoterminal.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
import * as vscode from 'vscode';
88
import { spawn, ChildProcessWithoutNullStreams } from 'node:child_process';
9-
import { RCEContext, ActionValidationResult, RCEHandlerReturns, ActionHandlerResult } from '@vsc-neuropilot/api-types';
9+
import { RCEContext, ActionValidationResult, RCEHandlerReturns, ActionHandlerResult, defineAction } from '@vsc-neuropilot/api-types';
1010
import { z } from 'zod';
1111

1212
import { NEURO } from '@/constants';
1313
import { checkWorkspaceTrust, checkVirtualWorkspace, logOutput, delayAsync, getFence } from '@/utils/misc';
14-
import { actionValidationAccept, actionValidationFailure, actionHandlerFailure, actionHandlerSuccess, defineAction } from '@/utils/neuro_client';
14+
import { actionValidationAccept, actionValidationFailure, actionHandlerFailure, actionHandlerSuccess } from '@/utils/neuro_client';
1515
import { CONFIG } from '@/config';
1616
import { notifyOnTerminalClose } from '@events/shells';
1717
import { addActions } from '@/rce';

src/read_files.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import * as vscode from 'vscode';
2-
import { RCEContext, RCEHandlerReturns } from '@vsc-neuropilot/api-types';
2+
import { defineAction, RCEContext, RCEHandlerReturns } from '@vsc-neuropilot/api-types';
33
import assert from 'node:assert';
44
import { z } from 'zod';
55

66
import { EXCEPTION_THROWN_STRING, NEURO, PROMISE_REJECTION_STRING } from '@/constants';
77
import { previewCursorMovement, previewFindFunctions } from '@/edit_files';
88
import { isPathNeuroSafe, getVirtualCursor, setVirtualCursor, getPositionContext, logOutput, formatContext, getFence, escapeRegExp, filterFileContents, indexFromPosition, positionFromIndex, getWorkspacePath, getWorkspaceUri, NeuroPositionContext, normalizePath, notifyOnCaughtException, simpleFileName } from './utils/misc';
9-
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure, defineAction } from '@/utils/neuro_client';
9+
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure } from '@/utils/neuro_client';
1010
import { _LINE_RANGE_SCHEMA, _POSITION_SCHEMA, ACTION_FAIL_NOTES, binaryFileValidation, cancelOnDidChangeActiveTextEditor, checkCurrentFile, commonCancelEvents, commonCancelEventsWithCursor, CONTEXT_NO_ACCESS, CONTEXT_NO_ACTIVE_DOCUMENT, createLineRangeValidator, createPositionValidator, createStringValidator, findAndFilter, LineRange, MATCH_OPTIONS, MatchOptions, neuroSafeValidation, STATUS_NO_ACCESS, STATUS_NO_ACTIVE_DOCUMENT, STATUS_NO_MATCHES_FOUND, validateIsAFile, validateRegex } from './utils/action_components';
1111
import { CONFIG, CONNECTION } from '@/config';
1212
import { targetedFileDeletedEvent } from '@events/files';

src/tasks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
import * as vscode from 'vscode';
88

9-
import { RCEAction, RCEContext, RCEHandlerReturns, ActionHandlerResult } from '@vsc-neuropilot/api-types';
9+
import { RCEAction, RCEContext, RCEHandlerReturns, ActionHandlerResult, defineAction } from '@vsc-neuropilot/api-types';
1010

1111
import { NEURO } from '@/constants';
1212
import { logOutput, formatActionID, getFence, checkWorkspaceTrust, checkVirtualWorkspace } from '@/utils/misc';
13-
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure, defineAction } from '@/utils/neuro_client';
13+
import { actionHandlerFailure, actionHandlerSuccess, actionValidationAccept, actionValidationFailure } from '@/utils/neuro_client';
1414
import { ACTIONS } from '@/config';
1515
import { notifyOnTaskFinish } from '@events/shells';
1616
import { addActions, getActions, removeActions } from './rce';

0 commit comments

Comments
 (0)