remodex-cli 1.0.0

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 (99) hide show
  1. package/LICENSE +12 -0
  2. package/README.md +105 -0
  3. package/dist/archive-store.d.ts +28 -0
  4. package/dist/archive-store.js +68 -0
  5. package/dist/archive-store.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +88 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/codex-process.d.ts +186 -0
  10. package/dist/codex-process.js +2111 -0
  11. package/dist/codex-process.js.map +1 -0
  12. package/dist/debug-trace-store.d.ts +15 -0
  13. package/dist/debug-trace-store.js +78 -0
  14. package/dist/debug-trace-store.js.map +1 -0
  15. package/dist/doctor.d.ts +58 -0
  16. package/dist/doctor.js +670 -0
  17. package/dist/doctor.js.map +1 -0
  18. package/dist/firebase-auth.d.ts +35 -0
  19. package/dist/firebase-auth.js +132 -0
  20. package/dist/firebase-auth.js.map +1 -0
  21. package/dist/gallery-store.d.ts +67 -0
  22. package/dist/gallery-store.js +333 -0
  23. package/dist/gallery-store.js.map +1 -0
  24. package/dist/git-assist.d.ts +7 -0
  25. package/dist/git-assist.js +51 -0
  26. package/dist/git-assist.js.map +1 -0
  27. package/dist/git-operations.d.ts +63 -0
  28. package/dist/git-operations.js +292 -0
  29. package/dist/git-operations.js.map +1 -0
  30. package/dist/image-store.d.ts +23 -0
  31. package/dist/image-store.js +142 -0
  32. package/dist/image-store.js.map +1 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +198 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/mdns.d.ts +7 -0
  37. package/dist/mdns.js +49 -0
  38. package/dist/mdns.js.map +1 -0
  39. package/dist/parser.d.ts +620 -0
  40. package/dist/parser.js +423 -0
  41. package/dist/parser.js.map +1 -0
  42. package/dist/path-utils.d.ts +4 -0
  43. package/dist/path-utils.js +34 -0
  44. package/dist/path-utils.js.map +1 -0
  45. package/dist/project-history.d.ts +10 -0
  46. package/dist/project-history.js +73 -0
  47. package/dist/project-history.js.map +1 -0
  48. package/dist/prompt-history-backup.d.ts +15 -0
  49. package/dist/prompt-history-backup.js +46 -0
  50. package/dist/prompt-history-backup.js.map +1 -0
  51. package/dist/proxy.d.ts +15 -0
  52. package/dist/proxy.js +95 -0
  53. package/dist/proxy.js.map +1 -0
  54. package/dist/push-i18n.d.ts +7 -0
  55. package/dist/push-i18n.js +75 -0
  56. package/dist/push-i18n.js.map +1 -0
  57. package/dist/push-relay.d.ts +29 -0
  58. package/dist/push-relay.js +70 -0
  59. package/dist/push-relay.js.map +1 -0
  60. package/dist/recording-store.d.ts +51 -0
  61. package/dist/recording-store.js +158 -0
  62. package/dist/recording-store.js.map +1 -0
  63. package/dist/screenshot.d.ts +28 -0
  64. package/dist/screenshot.js +98 -0
  65. package/dist/screenshot.js.map +1 -0
  66. package/dist/sdk-process.d.ts +180 -0
  67. package/dist/sdk-process.js +960 -0
  68. package/dist/sdk-process.js.map +1 -0
  69. package/dist/session.d.ts +144 -0
  70. package/dist/session.js +687 -0
  71. package/dist/session.js.map +1 -0
  72. package/dist/sessions-index.d.ts +130 -0
  73. package/dist/sessions-index.js +1817 -0
  74. package/dist/sessions-index.js.map +1 -0
  75. package/dist/setup-launchd.d.ts +9 -0
  76. package/dist/setup-launchd.js +115 -0
  77. package/dist/setup-launchd.js.map +1 -0
  78. package/dist/setup-systemd.d.ts +9 -0
  79. package/dist/setup-systemd.js +122 -0
  80. package/dist/setup-systemd.js.map +1 -0
  81. package/dist/startup-info.d.ts +9 -0
  82. package/dist/startup-info.js +116 -0
  83. package/dist/startup-info.js.map +1 -0
  84. package/dist/usage.d.ts +69 -0
  85. package/dist/usage.js +545 -0
  86. package/dist/usage.js.map +1 -0
  87. package/dist/version.d.ts +13 -0
  88. package/dist/version.js +43 -0
  89. package/dist/version.js.map +1 -0
  90. package/dist/websocket.d.ts +132 -0
  91. package/dist/websocket.js +3551 -0
  92. package/dist/websocket.js.map +1 -0
  93. package/dist/worktree-store.d.ts +26 -0
  94. package/dist/worktree-store.js +61 -0
  95. package/dist/worktree-store.js.map +1 -0
  96. package/dist/worktree.d.ts +47 -0
  97. package/dist/worktree.js +330 -0
  98. package/dist/worktree.js.map +1 -0
  99. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../src/screenshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ import { EventEmitter } from "node:events";
2
+ import { type SDKMessage } from "@anthropic-ai/claude-agent-sdk";
3
+ import { type ServerMessage, type ProcessStatus, type PermissionMode } from "./parser.js";
4
+ export declare const ACCEPT_EDITS_AUTO_APPROVE: Set<string>;
5
+ export declare function isFileEditToolName(toolName: string): boolean;
6
+ export declare function extractTokenUsage(usage: unknown): {
7
+ inputTokens?: number;
8
+ cachedInputTokens?: number;
9
+ outputTokens?: number;
10
+ };
11
+ /**
12
+ * Parse a permission rule in ToolName(ruleContent) format.
13
+ * Matches the CLI's internal pzT() function: /^([^(]+)\(([^)]+)\)$/
14
+ */
15
+ export declare function parseRule(rule: string): {
16
+ toolName: string;
17
+ ruleContent?: string;
18
+ };
19
+ /**
20
+ * Check if a tool invocation matches any session allow rule.
21
+ */
22
+ export declare function matchesSessionRule(toolName: string, input: Record<string, unknown>, rules: Set<string>): boolean;
23
+ /**
24
+ * Build a session allow rule string from a tool name and input.
25
+ * Bash: uses first word as prefix (e.g., "Bash(npm:*)")
26
+ * Others: tool name only (e.g., "Edit")
27
+ */
28
+ export declare function buildSessionRule(toolName: string, input: Record<string, unknown>): string;
29
+ export type AuthErrorCode = "auth_login_required" | "auth_token_expired" | "auth_api_error";
30
+ export interface AuthCheckResult {
31
+ authenticated: boolean;
32
+ message?: string;
33
+ errorCode?: AuthErrorCode;
34
+ }
35
+ /**
36
+ * Build a user-friendly auth error result.
37
+ * The `message` field is designed to be helpful even without errorCode parsing
38
+ * (i.e. for older app versions that only display the raw message text).
39
+ */
40
+ export declare function buildAuthError(reason: "no_credentials" | "no_access_token" | "token_expired" | "general", detail?: string): AuthCheckResult;
41
+ export interface StartOptions {
42
+ sessionId?: string;
43
+ continueMode?: boolean;
44
+ permissionMode?: PermissionMode;
45
+ model?: string;
46
+ effort?: "low" | "medium" | "high" | "max";
47
+ maxTurns?: number;
48
+ maxBudgetUsd?: number;
49
+ fallbackModel?: string;
50
+ forkSession?: boolean;
51
+ persistSession?: boolean;
52
+ /** When resuming, only resume messages up to this UUID (for conversation rewind). */
53
+ resumeSessionAt?: string;
54
+ /** Text to send as the first user message immediately after session starts. */
55
+ initialInput?: string;
56
+ /** Enable OS-level sandbox for Claude Code. Details configured via .claude/settings.json. */
57
+ sandboxEnabled?: boolean;
58
+ }
59
+ export interface RewindFilesResult {
60
+ canRewind: boolean;
61
+ error?: string;
62
+ filesChanged?: string[];
63
+ insertions?: number;
64
+ deletions?: number;
65
+ }
66
+ /**
67
+ * Convert SDK messages to the ServerMessage format used by the WebSocket protocol.
68
+ * Exported for testing.
69
+ */
70
+ export declare function sdkMessageToServerMessage(msg: SDKMessage): ServerMessage | null;
71
+ export interface SdkProcessEvents {
72
+ message: [ServerMessage];
73
+ status: [ProcessStatus];
74
+ exit: [number | null];
75
+ /** Fired just before "exit" to allow re-persisting session metadata. */
76
+ session_end: [];
77
+ }
78
+ export declare class SdkProcess extends EventEmitter<SdkProcessEvents> {
79
+ private queryInstance;
80
+ private _status;
81
+ private _sessionId;
82
+ private pendingPermissions;
83
+ private _permissionMode;
84
+ get permissionMode(): PermissionMode | undefined;
85
+ private _model;
86
+ get model(): string | undefined;
87
+ private sessionAllowRules;
88
+ private initTimeoutId;
89
+ private sessionEndEmitted;
90
+ private userMessageResolve;
91
+ private stopped;
92
+ private pendingInputQueue;
93
+ private _projectPath;
94
+ private toolCallsSinceLastResult;
95
+ private fileEditsSinceLastResult;
96
+ get status(): ProcessStatus;
97
+ get isWaitingForInput(): boolean;
98
+ get sessionId(): string | null;
99
+ get isRunning(): boolean;
100
+ start(projectPath: string, options?: StartOptions): void;
101
+ private startAfterAuthCheck;
102
+ private startSdkQuery;
103
+ stop(): void;
104
+ interrupt(): void;
105
+ /**
106
+ * Returns true when the SDK async generator is blocked waiting for the
107
+ * next user message (i.e. the agent is idle between turns).
108
+ * When false, the agent is mid-turn and input will be queued.
109
+ */
110
+ get hasInputQueue(): boolean;
111
+ sendInput(text: string): boolean;
112
+ /**
113
+ * Send a message with one or more image attachments.
114
+ * @param text - The text message
115
+ * @param images - Array of base64-encoded image data with mime types
116
+ */
117
+ sendInputWithImages(text: string, images: Array<{
118
+ base64: string;
119
+ mimeType: string;
120
+ }>): boolean;
121
+ /**
122
+ * Approve a pending permission request.
123
+ * With the SDK, this actually blocks tool execution until approved.
124
+ */
125
+ approve(toolUseId?: string, updatedInput?: Record<string, unknown>): void;
126
+ /**
127
+ * Approve a pending permission request and add a session-scoped allow rule.
128
+ */
129
+ approveAlways(toolUseId?: string): void;
130
+ /**
131
+ * Reject a pending permission request.
132
+ * The SDK's canUseTool will return deny, which tells Claude the tool was rejected.
133
+ */
134
+ reject(toolUseId?: string, message?: string): void;
135
+ /**
136
+ * Answer an AskUserQuestion tool call.
137
+ * The SDK handles this through canUseTool with updatedInput.
138
+ */
139
+ answer(toolUseId: string, result: string): void;
140
+ /**
141
+ * Update permission mode for the current session.
142
+ * Only available while the query instance is active.
143
+ */
144
+ setPermissionMode(mode: PermissionMode): Promise<void>;
145
+ /**
146
+ * Rewind files to their state at the specified user message.
147
+ * Requires enableFileCheckpointing to be enabled (done in start()).
148
+ */
149
+ rewindFiles(userMessageId: string, dryRun?: boolean): Promise<RewindFilesResult>;
150
+ /**
151
+ * Proactively fetch supported commands from the SDK.
152
+ * This may resolve before the first user input, providing slash commands
153
+ * without waiting for system/init.
154
+ */
155
+ private fetchSupportedCommands;
156
+ private firstPendingId;
157
+ /**
158
+ * Returns a snapshot of a pending permission request.
159
+ * Used by the bridge to support Clear & Accept flows.
160
+ */
161
+ getPendingPermission(toolUseId?: string): {
162
+ toolUseId: string;
163
+ toolName: string;
164
+ input: Record<string, unknown>;
165
+ } | undefined;
166
+ private createUserMessageStream;
167
+ private processMessages;
168
+ /**
169
+ * Core permission handler: called by SDK before each tool execution.
170
+ * Returns a Promise that resolves when the user approves/rejects.
171
+ */
172
+ private handleCanUseTool;
173
+ private waitForPermission;
174
+ private updateStatusFromMessage;
175
+ private handlePostToolUseHook;
176
+ private setStatus;
177
+ /** Emit session_end at most once per session lifecycle. */
178
+ private emitSessionEnd;
179
+ private emitMessage;
180
+ }