@pocketcoder/shared 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/LICENSE +53 -0
  2. package/dist/constants/__tests__/limits.test.d.ts +2 -0
  3. package/dist/constants/__tests__/limits.test.d.ts.map +1 -0
  4. package/dist/constants/__tests__/limits.test.js +68 -0
  5. package/dist/constants/__tests__/limits.test.js.map +1 -0
  6. package/dist/constants/errors.d.ts +48 -0
  7. package/dist/constants/errors.d.ts.map +1 -0
  8. package/dist/constants/errors.js +61 -0
  9. package/dist/constants/errors.js.map +1 -0
  10. package/dist/constants/index.d.ts +3 -0
  11. package/dist/constants/index.d.ts.map +1 -0
  12. package/dist/constants/index.js +4 -0
  13. package/dist/constants/index.js.map +1 -0
  14. package/dist/constants/limits.d.ts +41 -0
  15. package/dist/constants/limits.d.ts.map +1 -0
  16. package/dist/constants/limits.js +46 -0
  17. package/dist/constants/limits.js.map +1 -0
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/types/__tests__/auth-messages.test.d.ts +2 -0
  23. package/dist/types/__tests__/auth-messages.test.d.ts.map +1 -0
  24. package/dist/types/__tests__/auth-messages.test.js +94 -0
  25. package/dist/types/__tests__/auth-messages.test.js.map +1 -0
  26. package/dist/types/__tests__/messages.test.d.ts +2 -0
  27. package/dist/types/__tests__/messages.test.d.ts.map +1 -0
  28. package/dist/types/__tests__/messages.test.js +329 -0
  29. package/dist/types/__tests__/messages.test.js.map +1 -0
  30. package/dist/types/__tests__/relay-types.test.d.ts +2 -0
  31. package/dist/types/__tests__/relay-types.test.d.ts.map +1 -0
  32. package/dist/types/__tests__/relay-types.test.js +69 -0
  33. package/dist/types/__tests__/relay-types.test.js.map +1 -0
  34. package/dist/types/auth-messages.d.ts +49 -0
  35. package/dist/types/auth-messages.d.ts.map +1 -0
  36. package/dist/types/auth-messages.js +9 -0
  37. package/dist/types/auth-messages.js.map +1 -0
  38. package/dist/types/database.d.ts +259 -0
  39. package/dist/types/database.d.ts.map +1 -0
  40. package/dist/types/database.js +6 -0
  41. package/dist/types/database.js.map +1 -0
  42. package/dist/types/index.d.ts +5 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +6 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/types/messages.d.ts +821 -0
  47. package/dist/types/messages.d.ts.map +1 -0
  48. package/dist/types/messages.js +122 -0
  49. package/dist/types/messages.js.map +1 -0
  50. package/dist/types/relay.d.ts +62 -0
  51. package/dist/types/relay.d.ts.map +1 -0
  52. package/dist/types/relay.js +8 -0
  53. package/dist/types/relay.js.map +1 -0
  54. package/package.json +49 -0
  55. package/src/constants/__tests__/limits.test.ts +93 -0
  56. package/src/constants/errors.ts +71 -0
  57. package/src/constants/index.ts +3 -0
  58. package/src/constants/limits.ts +53 -0
  59. package/src/index.ts +3 -0
  60. package/src/types/__tests__/auth-messages.test.ts +108 -0
  61. package/src/types/__tests__/messages.test.ts +382 -0
  62. package/src/types/__tests__/relay-types.test.ts +82 -0
  63. package/src/types/auth-messages.ts +66 -0
  64. package/src/types/database.ts +320 -0
  65. package/src/types/index.ts +5 -0
  66. package/src/types/messages.ts +1310 -0
  67. package/src/types/relay.ts +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/types/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * WebSocket message types for communication between daemon, relay, and client.
3
+ * All types match the PRD exactly.
4
+ */
5
+ // ---------------------------------------------------------------------------
6
+ // Type guards
7
+ // ---------------------------------------------------------------------------
8
+ function isObject(value) {
9
+ return typeof value === "object" && value !== null;
10
+ }
11
+ function hasType(value) {
12
+ return isObject(value) && typeof value.type === "string";
13
+ }
14
+ function hasRequestId(value) {
15
+ return isObject(value) && typeof value.requestId === "string";
16
+ }
17
+ function hasSessionId(value) {
18
+ return isObject(value) && typeof value.sessionId === "string";
19
+ }
20
+ function hasPayload(value) {
21
+ return isObject(value) && isObject(value.payload);
22
+ }
23
+ /** Validate that value looks like an fs_list request */
24
+ export function isFsListRequest(value) {
25
+ return (hasType(value) &&
26
+ value.type === "fs_list" &&
27
+ hasRequestId(value) &&
28
+ hasSessionId(value) &&
29
+ hasPayload(value) &&
30
+ typeof value.payload.path === "string");
31
+ }
32
+ /** Validate that value looks like an fs_read request */
33
+ export function isFsReadRequest(value) {
34
+ return (hasType(value) &&
35
+ value.type === "fs_read" &&
36
+ hasRequestId(value) &&
37
+ hasSessionId(value) &&
38
+ hasPayload(value) &&
39
+ typeof value.payload.path === "string");
40
+ }
41
+ /** Validate that value looks like a git_status request */
42
+ export function isGitStatusRequest(value) {
43
+ return (hasType(value) && value.type === "git_status" && hasRequestId(value) && hasSessionId(value));
44
+ }
45
+ /** Validate that value looks like an agent_message request */
46
+ export function isAgentMessageRequest(value) {
47
+ return (hasType(value) &&
48
+ value.type === "agent_message" &&
49
+ hasRequestId(value) &&
50
+ hasSessionId(value) &&
51
+ hasPayload(value) &&
52
+ typeof value.payload.agentSessionId === "string" &&
53
+ typeof value.payload.content === "string");
54
+ }
55
+ /** Validate that value looks like an error response */
56
+ export function isErrorResponse(value) {
57
+ if (!hasType(value) || value.type !== "error" || !hasRequestId(value)) {
58
+ return false;
59
+ }
60
+ const v = value;
61
+ return isObject(v.error) && typeof v.error.code === "string";
62
+ }
63
+ /** Validate that value is a valid message (has at least a type field) */
64
+ export function isMessage(value) {
65
+ return hasType(value);
66
+ }
67
+ /** Validate that value is a request message (has type, requestId, and usually sessionId) */
68
+ export function isRequestMessage(value) {
69
+ return hasType(value) && hasRequestId(value);
70
+ }
71
+ /** Validate that value is an AgentEvent with type 'init' */
72
+ export function isAgentInitEvent(value) {
73
+ return (isObject(value) &&
74
+ value.type === "init" &&
75
+ typeof value.sessionId === "string" &&
76
+ Array.isArray(value.tools) &&
77
+ typeof value.model === "string");
78
+ }
79
+ /** Validate that value is an AgentEvent with type 'done' */
80
+ export function isAgentDoneEvent(value) {
81
+ if (!isObject(value) || value.type !== "done") {
82
+ return false;
83
+ }
84
+ const v = value;
85
+ // usage is optional but must be correct shape if present
86
+ if (v.usage !== undefined) {
87
+ if (!isObject(v.usage) ||
88
+ typeof v.usage.input_tokens !== "number" ||
89
+ typeof v.usage.output_tokens !== "number") {
90
+ return false;
91
+ }
92
+ }
93
+ // error is optional but must be string if present
94
+ if (v.error !== undefined && typeof v.error !== "string") {
95
+ return false;
96
+ }
97
+ // cancelled is optional but must be boolean if present
98
+ if (v.cancelled !== undefined && typeof v.cancelled !== "boolean") {
99
+ return false;
100
+ }
101
+ return true;
102
+ }
103
+ /** Validate that value is any valid AgentEvent (has a recognized type) */
104
+ export function isAgentEvent(value) {
105
+ if (!isObject(value) || typeof value.type !== "string") {
106
+ return false;
107
+ }
108
+ const validTypes = [
109
+ "init",
110
+ "thinking",
111
+ "text",
112
+ "tool_use",
113
+ "tool_complete",
114
+ "file_edit",
115
+ "file_create",
116
+ "file_delete",
117
+ "prompt",
118
+ "done",
119
+ ];
120
+ return validTypes.includes(value.type);
121
+ }
122
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/types/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Relay-specific types shared between relay, daemon, and client.
3
+ * Covers connection state, authentication handshake, and daemon status messages.
4
+ *
5
+ * See PRD.md: "Client Handshake Flow", "Daemon Registration", and "Connection Status" sections.
6
+ */
7
+ import type { MessageError } from "./messages.js";
8
+ /**
9
+ * Represents a connected daemon's state in the relay.
10
+ * Registry key: `${userId}:${machineKey}`
11
+ *
12
+ * The `ws` field is typed as `unknown` since the shared package doesn't
13
+ * depend on the `ws` library. The relay casts it to `WebSocket` at runtime.
14
+ */
15
+ export interface DaemonConnection {
16
+ ws: unknown;
17
+ userId: string;
18
+ machineKey: string;
19
+ projects: Set<string>;
20
+ connectedAt: Date;
21
+ lastPongAt: Date;
22
+ }
23
+ /** Client sends to authenticate on connect */
24
+ export interface ClientAuthMessage {
25
+ type: "client_auth";
26
+ payload: {
27
+ token: string;
28
+ };
29
+ }
30
+ /** Relay responds with auth result */
31
+ export interface ClientAuthResponse {
32
+ type: "client_auth_response";
33
+ payload: {
34
+ userId?: string;
35
+ authenticated: boolean;
36
+ };
37
+ error?: MessageError;
38
+ }
39
+ /** Relay pushes to clients when a daemon connects or disconnects */
40
+ export interface DaemonStatusMessage {
41
+ type: "daemon_status";
42
+ payload: {
43
+ machineKey: string;
44
+ connected: boolean;
45
+ lastSeen?: string;
46
+ };
47
+ }
48
+ /**
49
+ * Initial daemon status pushed after client_auth, containing all user's machines.
50
+ * Uses `machines` array format instead of single machine.
51
+ */
52
+ export interface DaemonStatusBatchMessage {
53
+ type: "daemon_status";
54
+ payload: {
55
+ machines: Array<{
56
+ machineKey: string;
57
+ connected: boolean;
58
+ lastSeen?: string;
59
+ }>;
60
+ };
61
+ }
62
+ //# sourceMappingURL=relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/types/relay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;CAClB;AAMD,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAMD,oEAAoE;AACpE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE;QACP,QAAQ,EAAE,KAAK,CAAC;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,OAAO,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;CACH"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Relay-specific types shared between relay, daemon, and client.
3
+ * Covers connection state, authentication handshake, and daemon status messages.
4
+ *
5
+ * See PRD.md: "Client Handshake Flow", "Daemon Registration", and "Connection Status" sections.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=relay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../src/types/relay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@pocketcoder/shared",
3
+ "version": "0.0.2",
4
+ "description": "Shared types and constants for PocketCoder",
5
+ "type": "module",
6
+ "license": "Elastic-2.0",
7
+ "author": "PocketCoder",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/gpuente/pocketcoder.git",
11
+ "directory": "packages/shared"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "types": "./src/index.ts",
16
+ "import": "./dist/index.js"
17
+ },
18
+ "./types": {
19
+ "types": "./src/types/index.ts",
20
+ "import": "./dist/types/index.js"
21
+ },
22
+ "./constants": {
23
+ "types": "./src/constants/index.ts",
24
+ "import": "./dist/constants/index.js"
25
+ }
26
+ },
27
+ "typesVersions": {
28
+ "*": {
29
+ "*": [
30
+ "./src/*"
31
+ ]
32
+ }
33
+ },
34
+ "files": [
35
+ "src",
36
+ "dist"
37
+ ],
38
+ "devDependencies": {
39
+ "typescript": "^5.7.3",
40
+ "vitest": "^4.0.18"
41
+ },
42
+ "scripts": {
43
+ "build": "tsc",
44
+ "typecheck": "tsc --noEmit",
45
+ "lint": "eslint src/",
46
+ "test": "vitest",
47
+ "clean": "rm -rf dist"
48
+ }
49
+ }
@@ -0,0 +1,93 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import {
3
+ MAX_FILE_SIZE,
4
+ MAX_WRITE_SIZE,
5
+ MAX_FS_ENTRIES,
6
+ MAX_TREE_DEPTH,
7
+ MAX_SEARCH_RESULTS,
8
+ MAX_CHANGES_PER_EVENT,
9
+ FS_DEBOUNCE_MIN_MS,
10
+ FS_DEBOUNCE_MAX_MS,
11
+ COMMAND_TIMEOUT_MS,
12
+ MAX_COMMAND_OUTPUT,
13
+ MAX_QUEUE_PER_PROJECT,
14
+ MAX_AGENT_MESSAGE_SIZE,
15
+ CONTROL_PLANE_PORT,
16
+ CONTROL_PLANE_HOST,
17
+ HEARTBEAT_INTERVAL_MS,
18
+ HEARTBEAT_TIMEOUT_MS,
19
+ RPC_REQUEST_TIMEOUT_MS,
20
+ LIMITS,
21
+ } from "../limits.js";
22
+
23
+ describe("Limit constants", () => {
24
+ it("should export all limit constants", () => {
25
+ expect(MAX_FILE_SIZE).toBeDefined();
26
+ expect(MAX_WRITE_SIZE).toBeDefined();
27
+ expect(MAX_FS_ENTRIES).toBeDefined();
28
+ expect(MAX_TREE_DEPTH).toBeDefined();
29
+ expect(MAX_SEARCH_RESULTS).toBeDefined();
30
+ expect(MAX_CHANGES_PER_EVENT).toBeDefined();
31
+ expect(FS_DEBOUNCE_MIN_MS).toBeDefined();
32
+ expect(FS_DEBOUNCE_MAX_MS).toBeDefined();
33
+ expect(COMMAND_TIMEOUT_MS).toBeDefined();
34
+ expect(MAX_COMMAND_OUTPUT).toBeDefined();
35
+ expect(MAX_QUEUE_PER_PROJECT).toBeDefined();
36
+ expect(MAX_AGENT_MESSAGE_SIZE).toBeDefined();
37
+ expect(CONTROL_PLANE_PORT).toBeDefined();
38
+ expect(CONTROL_PLANE_HOST).toBeDefined();
39
+ expect(HEARTBEAT_INTERVAL_MS).toBeDefined();
40
+ expect(HEARTBEAT_TIMEOUT_MS).toBeDefined();
41
+ expect(RPC_REQUEST_TIMEOUT_MS).toBeDefined();
42
+ expect(LIMITS).toBeDefined();
43
+ });
44
+
45
+ it("should have correct values", () => {
46
+ // Filesystem limits (PRD § 6)
47
+ expect(MAX_FILE_SIZE).toBe(10 * 1024 * 1024); // 10 MB
48
+ expect(MAX_WRITE_SIZE).toBe(1 * 1024 * 1024); // 1 MB
49
+ expect(MAX_FS_ENTRIES).toBe(10_000);
50
+ expect(MAX_TREE_DEPTH).toBe(20);
51
+ expect(MAX_SEARCH_RESULTS).toBe(1_000);
52
+ expect(MAX_CHANGES_PER_EVENT).toBe(500);
53
+ expect(FS_DEBOUNCE_MIN_MS).toBe(250);
54
+ expect(FS_DEBOUNCE_MAX_MS).toBe(500);
55
+
56
+ // Command runner limits (PRD § 7)
57
+ expect(COMMAND_TIMEOUT_MS).toBe(120_000); // 120s
58
+ expect(MAX_COMMAND_OUTPUT).toBe(300 * 1024); // 300 KB
59
+
60
+ // Agent / queue limits (PRD § 9)
61
+ expect(MAX_QUEUE_PER_PROJECT).toBe(50);
62
+ expect(MAX_AGENT_MESSAGE_SIZE).toBe(32 * 1024); // 32 KB
63
+
64
+ // Control plane (PRD § 4)
65
+ expect(CONTROL_PLANE_PORT).toBe(17_333);
66
+ expect(CONTROL_PLANE_HOST).toBe("127.0.0.1");
67
+
68
+ // Heartbeat / connection
69
+ expect(HEARTBEAT_INTERVAL_MS).toBe(30_000); // 30s
70
+ expect(HEARTBEAT_TIMEOUT_MS).toBe(60_000); // 60s
71
+ expect(RPC_REQUEST_TIMEOUT_MS).toBe(60_000); // 60s
72
+ });
73
+
74
+ it("should expose all values through the LIMITS object", () => {
75
+ expect(LIMITS.MAX_FILE_SIZE).toBe(MAX_FILE_SIZE);
76
+ expect(LIMITS.MAX_WRITE_SIZE).toBe(MAX_WRITE_SIZE);
77
+ expect(LIMITS.MAX_FS_ENTRIES).toBe(MAX_FS_ENTRIES);
78
+ expect(LIMITS.MAX_TREE_DEPTH).toBe(MAX_TREE_DEPTH);
79
+ expect(LIMITS.MAX_SEARCH_RESULTS).toBe(MAX_SEARCH_RESULTS);
80
+ expect(LIMITS.MAX_CHANGES_PER_EVENT).toBe(MAX_CHANGES_PER_EVENT);
81
+ expect(LIMITS.FS_DEBOUNCE_MIN_MS).toBe(FS_DEBOUNCE_MIN_MS);
82
+ expect(LIMITS.FS_DEBOUNCE_MAX_MS).toBe(FS_DEBOUNCE_MAX_MS);
83
+ expect(LIMITS.COMMAND_TIMEOUT_MS).toBe(COMMAND_TIMEOUT_MS);
84
+ expect(LIMITS.MAX_COMMAND_OUTPUT).toBe(MAX_COMMAND_OUTPUT);
85
+ expect(LIMITS.MAX_QUEUE_PER_PROJECT).toBe(MAX_QUEUE_PER_PROJECT);
86
+ expect(LIMITS.MAX_AGENT_MESSAGE_SIZE).toBe(MAX_AGENT_MESSAGE_SIZE);
87
+ expect(LIMITS.CONTROL_PLANE_PORT).toBe(CONTROL_PLANE_PORT);
88
+ expect(LIMITS.CONTROL_PLANE_HOST).toBe(CONTROL_PLANE_HOST);
89
+ expect(LIMITS.HEARTBEAT_INTERVAL_MS).toBe(HEARTBEAT_INTERVAL_MS);
90
+ expect(LIMITS.HEARTBEAT_TIMEOUT_MS).toBe(HEARTBEAT_TIMEOUT_MS);
91
+ expect(LIMITS.RPC_REQUEST_TIMEOUT_MS).toBe(RPC_REQUEST_TIMEOUT_MS);
92
+ });
93
+ });
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Error codes used across the application.
3
+ * Matches PRD § Error Codes - uses UPPERCASE values.
4
+ */
5
+
6
+ export enum ErrorCode {
7
+ // General
8
+ UNKNOWN_ERROR = "UNKNOWN_ERROR",
9
+ INVALID_REQUEST = "INVALID_REQUEST",
10
+ UNAUTHORIZED = "UNAUTHORIZED",
11
+ FORBIDDEN = "FORBIDDEN",
12
+ NOT_FOUND = "NOT_FOUND",
13
+ TIMEOUT = "TIMEOUT",
14
+
15
+ // Session
16
+ SESSION_NOT_FOUND = "SESSION_NOT_FOUND",
17
+ SESSION_ALREADY_EXISTS = "SESSION_ALREADY_EXISTS",
18
+ SESSION_NOT_RUNNING = "SESSION_NOT_RUNNING",
19
+
20
+ // Filesystem
21
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
22
+ FILE_EXISTS = "FILE_EXISTS",
23
+ FILE_TOO_LARGE = "FILE_TOO_LARGE",
24
+ PERMISSION_DENIED = "PERMISSION_DENIED",
25
+ OUTSIDE_PROJECT_ROOT = "OUTSIDE_PROJECT_ROOT",
26
+ UNSUPPORTED_FORMAT = "UNSUPPORTED_FORMAT",
27
+ MAX_DEPTH_EXCEEDED = "MAX_DEPTH_EXCEEDED",
28
+ INVALID_FILENAME = "INVALID_FILENAME",
29
+ INSUFFICIENT_STORAGE = "INSUFFICIENT_STORAGE",
30
+ PATH_NOT_FOUND = "PATH_NOT_FOUND",
31
+
32
+ // Search
33
+ INVALID_REGEX = "INVALID_REGEX",
34
+ QUERY_TOO_SHORT = "QUERY_TOO_SHORT",
35
+
36
+ // Terminal
37
+ TERMINAL_NOT_FOUND = "TERMINAL_NOT_FOUND",
38
+ TERMINAL_SPAWN_FAILED = "TERMINAL_SPAWN_FAILED",
39
+
40
+ // Command
41
+ COMMAND_TIMEOUT = "COMMAND_TIMEOUT",
42
+ COMMAND_TRUNCATED = "COMMAND_TRUNCATED",
43
+
44
+ // Git
45
+ GIT_NOT_INITIALIZED = "GIT_NOT_INITIALIZED",
46
+ GIT_CONFLICT = "GIT_CONFLICT",
47
+ GIT_PUSH_REJECTED = "GIT_PUSH_REJECTED",
48
+ GIT_NOTHING_TO_COMMIT = "GIT_NOTHING_TO_COMMIT",
49
+
50
+ // OpenCode
51
+ OPENCODE_NOT_INSTALLED = "OPENCODE_NOT_INSTALLED",
52
+ OPENCODE_UNREACHABLE = "OPENCODE_UNREACHABLE",
53
+ OPENCODE_SESSION_NOT_FOUND = "OPENCODE_SESSION_NOT_FOUND",
54
+
55
+ // Claude (legacy - kept for backward compatibility)
56
+ CLAUDE_NOT_INSTALLED = "CLAUDE_NOT_INSTALLED",
57
+ CLAUDE_AUTH_REQUIRED = "CLAUDE_AUTH_REQUIRED",
58
+ CLAUDE_RATE_LIMITED = "CLAUDE_RATE_LIMITED",
59
+
60
+ // Gateway
61
+ HOST_OFFLINE = "HOST_OFFLINE",
62
+ GATEWAY_UNREACHABLE = "GATEWAY_UNREACHABLE",
63
+
64
+ // Project
65
+ INVALID_PATH = "INVALID_PATH",
66
+ PROJECT_ALREADY_EXISTS = "PROJECT_ALREADY_EXISTS",
67
+ PROJECT_NOT_FOUND = "PROJECT_NOT_FOUND",
68
+
69
+ // Daemon
70
+ DAEMON_BUSY = "DAEMON_BUSY",
71
+ }
@@ -0,0 +1,3 @@
1
+ // Re-export all constants
2
+ export * from "./errors.js";
3
+ export * from "./limits.js";
@@ -0,0 +1,53 @@
1
+ /**
2
+ * System limits and constraints from PRD
3
+ */
4
+
5
+ // Filesystem limits (PRD § 6 - Filesystem > Limits and Truncation)
6
+ export const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB - max read size
7
+ export const MAX_WRITE_SIZE = 1 * 1024 * 1024; // 1 MB - max write size
8
+ export const MAX_FS_ENTRIES = 10_000; // max entries in fs_list response
9
+ export const MAX_TREE_DEPTH = 20; // max tree depth levels
10
+ export const MAX_SEARCH_RESULTS = 1_000; // max search result matches
11
+ export const MAX_CHANGES_PER_EVENT = 500; // max changes per fs_changed event
12
+ export const FS_DEBOUNCE_MIN_MS = 250; // min debounce window for file watcher
13
+ export const FS_DEBOUNCE_MAX_MS = 500; // max debounce window for file watcher
14
+
15
+ // Command runner limits (PRD § 7 - Command Runner > Limits)
16
+ export const COMMAND_TIMEOUT_MS = 120 * 1000; // 120s default timeout
17
+ export const MAX_COMMAND_OUTPUT = 300 * 1024; // 300 KB max output (stdout+stderr)
18
+
19
+ // Agent / message queue limits (PRD § 9 - Claude Code Integration)
20
+ export const MAX_QUEUE_PER_PROJECT = 50; // max queued agent requests per project
21
+ export const MAX_AGENT_MESSAGE_SIZE = 32 * 1024; // 32 KB max user message to agent
22
+
23
+ // Control plane (PRD § 4 - Control Plane HTTP > Configuration)
24
+ export const CONTROL_PLANE_PORT = 17_333;
25
+ export const CONTROL_PLANE_HOST = "127.0.0.1";
26
+
27
+ // Heartbeat / connection (PRD § Limits and Timeouts)
28
+ export const HEARTBEAT_INTERVAL_MS = 30 * 1000; // 30s ping frequency
29
+ export const HEARTBEAT_TIMEOUT_MS = 60 * 1000; // 60s connection dead if no pong
30
+ export const RPC_REQUEST_TIMEOUT_MS = 60 * 1000; // 60s timeout for request-response
31
+
32
+ // Legacy LIMITS object for backwards compatibility
33
+ export const LIMITS = {
34
+ MAX_FILE_SIZE,
35
+ MAX_WRITE_SIZE,
36
+ MAX_FS_ENTRIES,
37
+ MAX_TREE_DEPTH,
38
+ MAX_SEARCH_RESULTS,
39
+ MAX_CHANGES_PER_EVENT,
40
+ FS_DEBOUNCE_MIN_MS,
41
+ FS_DEBOUNCE_MAX_MS,
42
+ COMMAND_TIMEOUT_MS,
43
+ MAX_COMMAND_OUTPUT,
44
+ MAX_QUEUE_PER_PROJECT,
45
+ MAX_AGENT_MESSAGE_SIZE,
46
+ CONTROL_PLANE_PORT,
47
+ CONTROL_PLANE_HOST,
48
+ HEARTBEAT_INTERVAL_MS,
49
+ HEARTBEAT_TIMEOUT_MS,
50
+ RPC_REQUEST_TIMEOUT_MS,
51
+ } as const;
52
+
53
+ export type Limits = typeof LIMITS;
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ // Re-export all types and constants
2
+ export * from "./types/index.js";
3
+ export * from "./constants/index.js";
@@ -0,0 +1,108 @@
1
+ import { describe, expect, it } from "vitest";
2
+
3
+ import type {
4
+ AuthExchangeRequest,
5
+ AuthExchangeResponse,
6
+ AuthUser,
7
+ TokenRefreshRequest,
8
+ TokenRefreshResponse,
9
+ } from "../auth-messages.js";
10
+
11
+ describe("auth message types", () => {
12
+ it("should export AuthExchangeRequest type", () => {
13
+ const msg: AuthExchangeRequest = {
14
+ type: "auth_exchange",
15
+ requestId: "req_123",
16
+ payload: {
17
+ code: "oauth_code_from_supabase",
18
+ },
19
+ };
20
+ expect(msg.type).toBe("auth_exchange");
21
+ expect(msg.requestId).toBe("req_123");
22
+ expect(msg.payload.code).toBe("oauth_code_from_supabase");
23
+ });
24
+
25
+ it("should export AuthExchangeResponse type", () => {
26
+ const msg: AuthExchangeResponse = {
27
+ type: "auth_exchange_response",
28
+ requestId: "req_123",
29
+ payload: {
30
+ access_token: "eyJ...",
31
+ refresh_token: "eyJ...",
32
+ expires_at: 1707666000,
33
+ user: {
34
+ id: "user_123",
35
+ email: "user@example.com",
36
+ github_username: "username",
37
+ },
38
+ },
39
+ };
40
+ expect(msg.type).toBe("auth_exchange_response");
41
+ expect(msg.payload?.access_token).toBe("eyJ...");
42
+ expect(msg.payload?.user.id).toBe("user_123");
43
+ });
44
+
45
+ it("should export AuthExchangeResponse with error", () => {
46
+ const msg: AuthExchangeResponse = {
47
+ type: "auth_exchange_response",
48
+ requestId: "req_123",
49
+ error: {
50
+ code: "invalid_code",
51
+ message: "OAuth code is invalid or expired",
52
+ },
53
+ };
54
+ expect(msg.error?.code).toBe("invalid_code");
55
+ expect(msg.payload).toBeUndefined();
56
+ });
57
+
58
+ it("should export TokenRefreshRequest type", () => {
59
+ const msg: TokenRefreshRequest = {
60
+ type: "token_refresh",
61
+ requestId: "req_124",
62
+ payload: {
63
+ refresh_token: "eyJ...",
64
+ },
65
+ };
66
+ expect(msg.type).toBe("token_refresh");
67
+ expect(msg.payload.refresh_token).toBe("eyJ...");
68
+ });
69
+
70
+ it("should export TokenRefreshResponse type", () => {
71
+ const msg: TokenRefreshResponse = {
72
+ type: "token_refresh_response",
73
+ requestId: "req_124",
74
+ payload: {
75
+ access_token: "eyJ_new...",
76
+ refresh_token: "eyJ_rotated...",
77
+ expires_at: 1707752400,
78
+ },
79
+ };
80
+ expect(msg.type).toBe("token_refresh_response");
81
+ expect(msg.payload?.access_token).toBe("eyJ_new...");
82
+ expect(msg.payload?.expires_at).toBe(1707752400);
83
+ });
84
+
85
+ it("should export TokenRefreshResponse with error", () => {
86
+ const msg: TokenRefreshResponse = {
87
+ type: "token_refresh_response",
88
+ requestId: "req_124",
89
+ error: {
90
+ code: "invalid_refresh_token",
91
+ message: "Refresh token is invalid or expired",
92
+ },
93
+ };
94
+ expect(msg.error?.code).toBe("invalid_refresh_token");
95
+ expect(msg.payload).toBeUndefined();
96
+ });
97
+
98
+ it("should export AuthUser type", () => {
99
+ const user: AuthUser = {
100
+ id: "user_123",
101
+ email: "user@example.com",
102
+ github_username: "username",
103
+ };
104
+ expect(user.id).toBe("user_123");
105
+ expect(user.email).toBe("user@example.com");
106
+ expect(user.github_username).toBe("username");
107
+ });
108
+ });