pty-auto 0.3.6

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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +515 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/plugin/constants.d.ts +5 -0
  8. package/dist/src/plugin/constants.d.ts.map +1 -0
  9. package/dist/src/plugin/constants.js +7 -0
  10. package/dist/src/plugin/constants.js.map +1 -0
  11. package/dist/src/plugin/pty/buffer.d.ts +19 -0
  12. package/dist/src/plugin/pty/buffer.d.ts.map +1 -0
  13. package/dist/src/plugin/pty/buffer.js +61 -0
  14. package/dist/src/plugin/pty/buffer.js.map +1 -0
  15. package/dist/src/plugin/pty/formatters.d.ts +4 -0
  16. package/dist/src/plugin/pty/formatters.d.ts.map +1 -0
  17. package/dist/src/plugin/pty/formatters.js +22 -0
  18. package/dist/src/plugin/pty/formatters.js.map +1 -0
  19. package/dist/src/plugin/pty/manager.d.ts +33 -0
  20. package/dist/src/plugin/pty/manager.d.ts.map +1 -0
  21. package/dist/src/plugin/pty/manager.js +108 -0
  22. package/dist/src/plugin/pty/manager.js.map +1 -0
  23. package/dist/src/plugin/pty/notification-manager.d.ts +9 -0
  24. package/dist/src/plugin/pty/notification-manager.d.ts.map +1 -0
  25. package/dist/src/plugin/pty/notification-manager.js +69 -0
  26. package/dist/src/plugin/pty/notification-manager.js.map +1 -0
  27. package/dist/src/plugin/pty/output-manager.d.ts +7 -0
  28. package/dist/src/plugin/pty/output-manager.d.ts.map +1 -0
  29. package/dist/src/plugin/pty/output-manager.js +26 -0
  30. package/dist/src/plugin/pty/output-manager.js.map +1 -0
  31. package/dist/src/plugin/pty/permissions.d.ts +27 -0
  32. package/dist/src/plugin/pty/permissions.d.ts.map +1 -0
  33. package/dist/src/plugin/pty/permissions.js +54 -0
  34. package/dist/src/plugin/pty/permissions.js.map +1 -0
  35. package/dist/src/plugin/pty/session-lifecycle.d.ts +20 -0
  36. package/dist/src/plugin/pty/session-lifecycle.d.ts.map +1 -0
  37. package/dist/src/plugin/pty/session-lifecycle.js +177 -0
  38. package/dist/src/plugin/pty/session-lifecycle.js.map +1 -0
  39. package/dist/src/plugin/pty/tools/kill.d.ts +12 -0
  40. package/dist/src/plugin/pty/tools/kill.d.ts.map +1 -0
  41. package/dist/src/plugin/pty/tools/kill.js +37 -0
  42. package/dist/src/plugin/pty/tools/kill.js.map +1 -0
  43. package/dist/src/plugin/pty/tools/kill.txt +25 -0
  44. package/dist/src/plugin/pty/tools/list.d.ts +6 -0
  45. package/dist/src/plugin/pty/tools/list.d.ts.map +1 -0
  46. package/dist/src/plugin/pty/tools/list.js +22 -0
  47. package/dist/src/plugin/pty/tools/list.js.map +1 -0
  48. package/dist/src/plugin/pty/tools/list.txt +22 -0
  49. package/dist/src/plugin/pty/tools/read.d.ts +18 -0
  50. package/dist/src/plugin/pty/tools/read.d.ts.map +1 -0
  51. package/dist/src/plugin/pty/tools/read.js +165 -0
  52. package/dist/src/plugin/pty/tools/read.js.map +1 -0
  53. package/dist/src/plugin/pty/tools/read.txt +39 -0
  54. package/dist/src/plugin/pty/tools/spawn.d.ts +24 -0
  55. package/dist/src/plugin/pty/tools/spawn.d.ts.map +1 -0
  56. package/dist/src/plugin/pty/tools/spawn.js +75 -0
  57. package/dist/src/plugin/pty/tools/spawn.js.map +1 -0
  58. package/dist/src/plugin/pty/tools/spawn.txt +52 -0
  59. package/dist/src/plugin/pty/tools/write.d.ts +12 -0
  60. package/dist/src/plugin/pty/tools/write.d.ts.map +1 -0
  61. package/dist/src/plugin/pty/tools/write.js +62 -0
  62. package/dist/src/plugin/pty/tools/write.js.map +1 -0
  63. package/dist/src/plugin/pty/tools/write.txt +28 -0
  64. package/dist/src/plugin/pty/types.d.ts +70 -0
  65. package/dist/src/plugin/pty/types.d.ts.map +1 -0
  66. package/dist/src/plugin/pty/types.js +1 -0
  67. package/dist/src/plugin/pty/types.js.map +1 -0
  68. package/dist/src/plugin/pty/utils.d.ts +12 -0
  69. package/dist/src/plugin/pty/utils.d.ts.map +1 -0
  70. package/dist/src/plugin/pty/utils.js +17 -0
  71. package/dist/src/plugin/pty/utils.js.map +1 -0
  72. package/dist/src/plugin/pty/wildcard.d.ts +7 -0
  73. package/dist/src/plugin/pty/wildcard.d.ts.map +1 -0
  74. package/dist/src/plugin/pty/wildcard.js +51 -0
  75. package/dist/src/plugin/pty/wildcard.js.map +1 -0
  76. package/dist/src/plugin/types.d.ts +5 -0
  77. package/dist/src/plugin/types.d.ts.map +1 -0
  78. package/dist/src/plugin/types.js +1 -0
  79. package/dist/src/plugin/types.js.map +1 -0
  80. package/dist/src/plugin.d.ts +3 -0
  81. package/dist/src/plugin.d.ts.map +1 -0
  82. package/dist/src/plugin.js +71 -0
  83. package/dist/src/plugin.js.map +1 -0
  84. package/dist/src/shared/constants.d.ts +5 -0
  85. package/dist/src/shared/constants.d.ts.map +1 -0
  86. package/dist/src/shared/constants.js +7 -0
  87. package/dist/src/shared/constants.js.map +1 -0
  88. package/dist/src/web/server/callback-manager.d.ts +8 -0
  89. package/dist/src/web/server/callback-manager.d.ts.map +1 -0
  90. package/dist/src/web/server/callback-manager.js +23 -0
  91. package/dist/src/web/server/callback-manager.js.map +1 -0
  92. package/dist/src/web/server/handlers/health.d.ts +3 -0
  93. package/dist/src/web/server/handlers/health.d.ts.map +1 -0
  94. package/dist/src/web/server/handlers/health.js +33 -0
  95. package/dist/src/web/server/handlers/health.js.map +1 -0
  96. package/dist/src/web/server/handlers/responses.d.ts +10 -0
  97. package/dist/src/web/server/handlers/responses.d.ts.map +1 -0
  98. package/dist/src/web/server/handlers/responses.js +26 -0
  99. package/dist/src/web/server/handlers/responses.js.map +1 -0
  100. package/dist/src/web/server/handlers/sessions.d.ts +13 -0
  101. package/dist/src/web/server/handlers/sessions.d.ts.map +1 -0
  102. package/dist/src/web/server/handlers/sessions.js +96 -0
  103. package/dist/src/web/server/handlers/sessions.js.map +1 -0
  104. package/dist/src/web/server/handlers/static.d.ts +2 -0
  105. package/dist/src/web/server/handlers/static.d.ts.map +1 -0
  106. package/dist/src/web/server/handlers/static.js +38 -0
  107. package/dist/src/web/server/handlers/static.js.map +1 -0
  108. package/dist/src/web/server/handlers/upgrade.d.ts +2 -0
  109. package/dist/src/web/server/handlers/upgrade.d.ts.map +1 -0
  110. package/dist/src/web/server/handlers/upgrade.js +11 -0
  111. package/dist/src/web/server/handlers/upgrade.js.map +1 -0
  112. package/dist/src/web/server/handlers/websocket.d.ts +3 -0
  113. package/dist/src/web/server/handlers/websocket.d.ts.map +1 -0
  114. package/dist/src/web/server/handlers/websocket.js +119 -0
  115. package/dist/src/web/server/handlers/websocket.js.map +1 -0
  116. package/dist/src/web/server/server.d.ts +12 -0
  117. package/dist/src/web/server/server.d.ts.map +1 -0
  118. package/dist/src/web/server/server.js +73 -0
  119. package/dist/src/web/server/server.js.map +1 -0
  120. package/dist/src/web/shared/api-client.d.ts +132 -0
  121. package/dist/src/web/shared/api-client.d.ts.map +1 -0
  122. package/dist/src/web/shared/api-client.js +79 -0
  123. package/dist/src/web/shared/api-client.js.map +1 -0
  124. package/dist/src/web/shared/constants.d.ts +11 -0
  125. package/dist/src/web/shared/constants.d.ts.map +1 -0
  126. package/dist/src/web/shared/constants.js +23 -0
  127. package/dist/src/web/shared/constants.js.map +1 -0
  128. package/dist/src/web/shared/route-builder.d.ts +30 -0
  129. package/dist/src/web/shared/route-builder.d.ts.map +1 -0
  130. package/dist/src/web/shared/route-builder.js +42 -0
  131. package/dist/src/web/shared/route-builder.js.map +1 -0
  132. package/dist/src/web/shared/routes.d.ts +37 -0
  133. package/dist/src/web/shared/routes.d.ts.map +1 -0
  134. package/dist/src/web/shared/routes.js +39 -0
  135. package/dist/src/web/shared/routes.js.map +1 -0
  136. package/dist/src/web/shared/types.d.ts +87 -0
  137. package/dist/src/web/shared/types.d.ts.map +1 -0
  138. package/dist/src/web/shared/types.js +15 -0
  139. package/dist/src/web/shared/types.js.map +1 -0
  140. package/dist/web/assets/index-CYWtqpTG.js +24 -0
  141. package/dist/web/assets/index-DDGTF8rc.css +1 -0
  142. package/dist/web/index.html +204 -0
  143. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ .xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}
@@ -0,0 +1,204 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>PTY Sessions Monitor</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+ body {
14
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
15
+ background: #0d1117;
16
+ color: #c9d1d9;
17
+ height: 100vh;
18
+ display: flex;
19
+ flex-direction: column;
20
+ }
21
+ #root {
22
+ height: 100%;
23
+ }
24
+ .container {
25
+ display: flex;
26
+ height: 100%;
27
+ overflow: hidden;
28
+ }
29
+ .sidebar {
30
+ width: 300px;
31
+ background: #161b22;
32
+ border-right: 1px solid #30363d;
33
+ display: flex;
34
+ flex-direction: column;
35
+ overflow: hidden;
36
+ }
37
+ .sidebar-header {
38
+ padding: 16px;
39
+ border-bottom: 1px solid #30363d;
40
+ background: #161b22;
41
+ }
42
+ .sidebar-header h1 {
43
+ font-size: 18px;
44
+ font-weight: 600;
45
+ color: #58a6ff;
46
+ }
47
+ .session-list {
48
+ flex: 1;
49
+ overflow-y: auto;
50
+ padding: 8px;
51
+ }
52
+ .session-item {
53
+ padding: 12px;
54
+ margin-bottom: 8px;
55
+ background: #21262d;
56
+ border: 1px solid #30363d;
57
+ border-radius: 6px;
58
+ cursor: pointer;
59
+ transition: all 0.2s;
60
+ }
61
+ .session-item:hover {
62
+ background: #30363d;
63
+ }
64
+ .session-item.active {
65
+ border-color: #58a6ff;
66
+ background: #1f6feb1a;
67
+ }
68
+ .session-title {
69
+ font-weight: 600;
70
+ margin-bottom: 4px;
71
+ color: #c9d1d9;
72
+ }
73
+ .session-info {
74
+ font-size: 12px;
75
+ color: #8b949e;
76
+ display: flex;
77
+ justify-content: space-between;
78
+ }
79
+ .status-badge {
80
+ padding: 2px 8px;
81
+ border-radius: 12px;
82
+ font-size: 11px;
83
+ font-weight: 600;
84
+ }
85
+ .status-running {
86
+ background: #238636;
87
+ color: #fff;
88
+ }
89
+ .status-exited {
90
+ background: #da3633;
91
+ color: #fff;
92
+ }
93
+ .status-killed {
94
+ background: #8957e5;
95
+ color: #fff;
96
+ }
97
+ .main {
98
+ flex: 1;
99
+ display: flex;
100
+ flex-direction: column;
101
+ overflow: hidden;
102
+ }
103
+ .output-header {
104
+ padding: 16px;
105
+ border-bottom: 1px solid #30363d;
106
+ background: #161b22;
107
+ display: flex;
108
+ justify-content: space-between;
109
+ align-items: center;
110
+ }
111
+ .output-title {
112
+ font-size: 16px;
113
+ font-weight: 600;
114
+ }
115
+ .kill-btn {
116
+ padding: 8px 16px;
117
+ background: #da3633;
118
+ color: #fff;
119
+ border: none;
120
+ border-radius: 6px;
121
+ cursor: pointer;
122
+ font-weight: 600;
123
+ font-size: 14px;
124
+ }
125
+ .kill-btn:hover {
126
+ background: #f85149;
127
+ }
128
+ .output-container {
129
+ flex: 1;
130
+ overflow: auto;
131
+ background: #0d1117;
132
+ padding: 16px;
133
+ font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
134
+ font-size: 13px;
135
+ line-height: 1.5;
136
+ white-space: pre-wrap;
137
+ word-break: break-all;
138
+ }
139
+ .output-line {
140
+ margin-bottom: 2px;
141
+ }
142
+ .input-container {
143
+ padding: 16px;
144
+ border-top: 1px solid #30363d;
145
+ background: #161b22;
146
+ display: flex;
147
+ gap: 8px;
148
+ }
149
+ .input-field {
150
+ flex: 1;
151
+ padding: 10px 14px;
152
+ background: #0d1117;
153
+ border: 1px solid #30363d;
154
+ border-radius: 6px;
155
+ color: #c9d1d9;
156
+ font-family: inherit;
157
+ font-size: 14px;
158
+ }
159
+ .input-field:focus {
160
+ outline: none;
161
+ border-color: #58a6ff;
162
+ }
163
+ .send-btn {
164
+ padding: 10px 20px;
165
+ background: #238636;
166
+ color: #fff;
167
+ border: none;
168
+ border-radius: 6px;
169
+ cursor: pointer;
170
+ font-weight: 600;
171
+ font-size: 14px;
172
+ }
173
+ .send-btn:hover {
174
+ background: #2ea043;
175
+ }
176
+ .empty-state {
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ height: 100%;
181
+ color: #8b949e;
182
+ font-size: 16px;
183
+ }
184
+ .connection-status {
185
+ padding: 8px 16px;
186
+ background: #161b22;
187
+ border-bottom: 1px solid #30363d;
188
+ font-size: 12px;
189
+ color: #8b949e;
190
+ }
191
+ .connection-status.connected {
192
+ color: #238636;
193
+ }
194
+ .connection-status.disconnected {
195
+ color: #da3633;
196
+ }
197
+ </style>
198
+ <script type="module" crossorigin src="/assets/index-CYWtqpTG.js"></script>
199
+ <link rel="stylesheet" crossorigin href="/assets/index-DDGTF8rc.css">
200
+ </head>
201
+ <body>
202
+ <div id="root"></div>
203
+ </body>
204
+ </html>
package/package.json ADDED
@@ -0,0 +1,107 @@
1
+ {
2
+ "name": "pty-auto",
3
+ "main": "dist/index.js",
4
+ "types": "dist/index.d.ts",
5
+ "module": "dist/index.js",
6
+ "version": "0.3.6",
7
+ "description": "OpenCode plugin for interactive PTY management - run background processes, send input, read output with regex filtering",
8
+ "author": "shekohex",
9
+ "keywords": [
10
+ "opencode",
11
+ "opencode-plugin",
12
+ "pty",
13
+ "pseudo-terminal",
14
+ "terminal",
15
+ "background-process",
16
+ "interactive",
17
+ "cli",
18
+ "shell",
19
+ "dev-server",
20
+ "bun"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/zjm54321/pty-auto.git"
25
+ },
26
+ "bugs": {
27
+ "url": "https://github.com/zjm54321/pty-auto/issues"
28
+ },
29
+ "homepage": "https://github.com/zjm54321/pty-auto#readme",
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "license": "MIT",
34
+ "type": "module",
35
+ "exports": {
36
+ "./server": {
37
+ "types": "./dist/index.d.ts",
38
+ "default": "./dist/index.js"
39
+ },
40
+ ".": {
41
+ "types": "./dist/index.d.ts",
42
+ "default": "./dist/index.js"
43
+ },
44
+ "./*": {
45
+ "types": "./dist/src/*.d.ts",
46
+ "default": "./dist/src/*.js"
47
+ },
48
+ "./*/*": {
49
+ "types": "./dist/src/*/*.d.ts",
50
+ "default": "./dist/src/*/*.js"
51
+ },
52
+ "./*/*/*": {
53
+ "types": "./dist/src/*/*/*.d.ts",
54
+ "default": "./dist/src/*/*/*.js"
55
+ },
56
+ "./*/*/*/*": {
57
+ "types": "./dist/src/*/*/*/*.d.ts",
58
+ "default": "./dist/src/*/*/*/*.js"
59
+ }
60
+ },
61
+ "scripts": {
62
+ "typecheck": "tsc --noEmit",
63
+ "unittest": "bun test",
64
+ "test:e2e": "PW_DISABLE_TS_ESM=1 NODE_ENV=test bun --bun playwright test",
65
+ "test:all": "bun unittest && bun test:e2e",
66
+ "build:plugin": "tsc -p tsconfig.build.json && bun x copyfiles -u 0 \"src/**/*.txt\" dist",
67
+ "build:dev": "bun clean && bun build:plugin && vite build --mode development",
68
+ "build:prod": "bun clean && bun build:plugin && vite build --mode production",
69
+ "prepack": "bun build:prod",
70
+ "clean": "rm -rf dist playwright-report test-results",
71
+ "lint": "biome lint .",
72
+ "lint:fix": "biome lint --write .",
73
+ "format": "biome format .",
74
+ "format:fix": "biome format --write ."
75
+ },
76
+ "devDependencies": {
77
+ "@biomejs/biome": "2.3.13",
78
+ "@playwright/test": "1.57.0",
79
+ "@types/bun": "^1.3.8",
80
+ "@types/jsdom": "^27.0.0",
81
+ "@types/react": "^18.3.27",
82
+ "@types/react-dom": "^18.3.7",
83
+ "@vitejs/plugin-react": "^4.7.0",
84
+ "@xterm/addon-fit": "^0.11.0",
85
+ "@xterm/addon-serialize": "^0.14.0",
86
+ "@xterm/xterm": "^6.0.0",
87
+ "happy-dom": "^20.5.0",
88
+ "jsdom": "^27.4.0",
89
+ "playwright-core": "1.57.0",
90
+ "react": "^18.3.1",
91
+ "react-dom": "^18.3.1",
92
+ "typescript": "^5.9.3",
93
+ "vite": "^7.3.1"
94
+ },
95
+ "peerDependencies": {
96
+ "typescript": "^5"
97
+ },
98
+ "engines": {
99
+ "opencode": ">=1.3.13"
100
+ },
101
+ "dependencies": {
102
+ "@opencode-ai/plugin": "^1.3.13",
103
+ "@opencode-ai/sdk": "^1.3.13",
104
+ "bun-pty": "^0.4.10",
105
+ "open": "^11.0.0"
106
+ }
107
+ }