🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@josxa/opencode-pty

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@josxa/opencode-pty - npm Package Compare versions

Comparing version
0.5.1
to
0.6.0
+1
-1
dist/src/plugin/pty/notification-manager.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"notification-manager.d.ts","sourceRoot":"","sources":["../../../../src/plugin/pty/notification-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AA0BtD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAE5C,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI5B,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhF,OAAO,CAAC,qBAAqB;CA+C9B"}
{"version":3,"file":"notification-manager.d.ts","sourceRoot":"","sources":["../../../../src/plugin/pty/notification-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AA4DtD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAA8B;IAE5C,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI5B,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhF,OAAO,CAAC,qBAAqB;CAqD9B"}
import { NOTIFICATION_LINE_TRUNCATE, NOTIFICATION_TITLE_TRUNCATE } from "../constants.js";
const FAST_EXIT_INTERRUPT_MS = 2_000;
// biome-ignore lint/complexity/useRegexLiterals: string form avoids control-character regex lint for ANSI sequences.

@@ -21,2 +22,26 @@ const OSC_SEQUENCE_REGEX = new RegExp('\\u001b\\][^\\u0007\\u001b]*(?:\\u0007|\\u001b\\\\)', 'g');

}
function getElapsedMs(session) {
return Math.max(0, Date.now() - session.createdAt.getTime());
}
function isQuickInterrupt(elapsedMs) {
return elapsedMs <= FAST_EXIT_INTERRUPT_MS;
}
function formatElapsed(elapsedMs) {
if (elapsedMs < 1_000) {
return `${Math.round(elapsedMs)}ms`;
}
if (elapsedMs < 10_000) {
return `${(elapsedMs / 1_000).toFixed(3)}s`;
}
if (elapsedMs < 60_000) {
return `${(elapsedMs / 1_000).toFixed(2)}s`;
}
if (elapsedMs < 600_000) {
return `${(elapsedMs / 1_000).toFixed(1)}s`;
}
const totalSeconds = Math.round(elapsedMs / 1_000);
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
return `${minutes}m ${seconds}s`;
}
export class NotificationManager {

@@ -32,3 +57,7 @@ client = null;

try {
const message = this.buildExitNotification(session, exitCode);
const elapsedMs = getElapsedMs(session);
if (isQuickInterrupt(elapsedMs)) {
await this.client.session.abort({ path: { id: session.parentSessionId } });
}
const message = this.buildExitNotification(session, exitCode, elapsedMs);
await this.client.session.promptAsync({

@@ -46,3 +75,3 @@ path: { id: session.parentSessionId },

}
buildExitNotification(session, exitCode) {
buildExitNotification(session, exitCode, elapsedMs) {
const lineCount = session.buffer.length;

@@ -67,2 +96,3 @@ let lastLine = '';

: displayTitle;
const quickInterrupt = isQuickInterrupt(elapsedMs);
const lines = [

@@ -72,2 +102,3 @@ '<pty_exited>',

`Description: ${truncatedTitle}`,
`Elapsed: ${formatElapsed(elapsedMs)}`,
`Exit Code: ${exitCode}`,

@@ -78,4 +109,7 @@ `Output Lines: ${lineCount}`,

];
if (quickInterrupt) {
lines.splice(3, 0, 'Quick Interrupt: yes');
}
if (lastLine !== '') {
lines.splice(5, 0, `Last Line: ${lastLine}`);
lines.splice(quickInterrupt ? 6 : 5, 0, `Last Line: ${lastLine}`);
}

@@ -82,0 +116,0 @@ if (exitCode === 0) {

@@ -1,1 +0,1 @@

{"version":3,"file":"notification-manager.js","sourceRoot":"","sources":["../../../../src/plugin/pty/notification-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAEzF,qHAAqH;AACrH,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,qDAAqD,EAAE,GAAG,CAAC,CAAA;AACjG,0HAA0H;AAC1H,MAAM,mBAAmB,GAAG,IAAI,MAAM,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAA;AAC9F,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAE/B,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;SAClC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,IAAI,EAAE,CAAA;IAET,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,GAAG,0BAA0B;QAClD,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,KAAK;QACxD,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,MAAM,OAAO,mBAAmB;IACtB,MAAM,GAA0B,IAAI,CAAA;IAE5C,IAAI,CAAC,MAAsB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,OAAmB,EAAE,QAAgB;QAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAC7D,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;gBACpC,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE;gBACrC,IAAI,EAAE;oBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oBACxC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D;aACF,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,6BAA6B;QAC/B,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,OAAmB,EAAE,QAAgB;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA;QACvC,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;gBAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC7C,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;oBACzC,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;wBACpB,SAAQ;oBACV,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAA;QACzD,MAAM,cAAc,GAClB,YAAY,CAAC,MAAM,GAAG,2BAA2B;YAC/C,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,KAAK;YAC5D,CAAC,CAAC,YAAY,CAAA;QAElB,MAAM,KAAK,GAAG;YACZ,cAAc;YACd,OAAO,OAAO,CAAC,EAAE,EAAE;YACnB,gBAAgB,cAAc,EAAE;YAChC,cAAc,QAAQ,EAAE;YACxB,iBAAiB,SAAS,EAAE;YAC5B,eAAe;YACf,EAAE;SACH,CAAA;QAED,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACpB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,QAAQ,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CACR,6FAA6F,CAC9F,CAAA;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;CACF"}
{"version":3,"file":"notification-manager.js","sourceRoot":"","sources":["../../../../src/plugin/pty/notification-manager.ts"],"names":[],"mappings":"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"}

@@ -13,7 +13,7 @@ import { tool } from '@opencode-ai/plugin';

.optional()
.describe('Regex pattern to match against screen text. Resolves on first match.'),
.describe('Regex tested against the full rendered screen text. Resolves on first match.'),
hashStableMs: tool.schema
.number()
.optional()
.describe('Wait until the screen content hash is unchanged for this many milliseconds (e.g., 2000 for "screen settled").'),
.describe('Resolve when the rendered screen hash is unchanged for this many ms (e.g., 2000 for "screen settled"). If combined with search, the first match wins.'),
timeout: tool.schema

@@ -26,3 +26,3 @@ .number()

.optional()
.describe('Sequence number to diff against. When provided, returns only changed lines since that seq instead of full screen.'),
.describe('Sequence number used only to format the returned snapshot as a diff against that seq. Does not affect when the wait resolves.'),
},

@@ -29,0 +29,0 @@ async execute(args) {

@@ -1,1 +0,1 @@

{"version":3,"file":"snapshot-wait.js","sourceRoot":"","sources":["../../../../../src/plugin/pty/tools/snapshot-wait.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"snapshot-wait.js","sourceRoot":"","sources":["../../../../../src/plugin/pty/tools/snapshot-wait.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,7 @@

Blocks until the PTY screen matches a condition: text search (regex) or screen stability (hash unchanged for N ms). Returns the matching snapshot. Use instead of polling pty_snapshot in a loop.
Block until the PTY screen matches a condition, then return a snapshot. Use instead of polling `pty_snapshot`.
Provide at least one condition. If both are given, the first to match wins:
- `search`: regex tested against the full rendered screen text
- `hashStableMs`: rendered screen hash unchanged for N ms
Returns on match, timeout, or PTY exit. `since` only formats the returned output as a diff and does not affect the wait condition.
Spawns a new interactive PTY (pseudo-terminal) session that runs in the background.
Unlike the built-in bash tool which runs commands synchronously and waits for completion, PTY sessions persist and allow you to:
- Run long-running processes (dev servers, watch modes, etc.)
- Run long-running or timing-sensitive processes (dev servers, watch modes, quick timing checks, etc.)
- Send interactive input (including Ctrl+C, arrow keys, etc.)

@@ -6,0 +6,0 @@ - Read output at any time

@@ -6,3 +6,3 @@ {

"module": "./dist/index.js",
"version": "0.5.1",
"version": "0.6.0",
"publishConfig": {

@@ -9,0 +9,0 @@ "access": "public",

@@ -245,13 +245,13 @@ # opencode-pty

Instead of polling in a loop, use `pty_snapshot_wait` to block until a condition is met:
Use `pty_snapshot_wait` to block until a condition is met instead of polling:
```
pty_snapshot_wait: id="pty_a1b2c3d4", search="error|Error", timeout=30000
→ Blocks until "error" or "Error" appears on screen, or times out
→ Resolves when the regex matches the full rendered screen text
pty_snapshot_wait: id="pty_a1b2c3d4", hashStableMs=2000, timeout=30000
→ Blocks until screen content is unchanged for 2 seconds (useful for "wait until done")
→ Resolves when screen content is unchanged for 2 seconds
```
Both parameters can be combined with `since` to get a diff on return.
When both `search` and `hashStableMs` are given, the first to match wins. `since` only changes the response to a diff against that seq and does not affect when the wait resolves.

@@ -258,0 +258,0 @@ ### Example: Debugging OpenCode itself