@dmsdc-ai/aigentry-telepty 0.3.5 → 0.4.1

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 (40) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/cli.js +41 -16
  3. package/daemon.js +355 -5
  4. package/package.json +28 -4
  5. package/session-state.js +23 -0
  6. package/src/prompt-symbol-registry.js +43 -1
  7. package/src/win-resolve-executable.js +87 -0
  8. package/.claude/commands/telepty-allow.md +0 -58
  9. package/.claude/commands/telepty-attach.md +0 -22
  10. package/.claude/commands/telepty-inject.md +0 -72
  11. package/.claude/commands/telepty-list.md +0 -22
  12. package/.claude/commands/telepty-manual-test.md +0 -73
  13. package/.claude/commands/telepty-start.md +0 -25
  14. package/.claude/commands/telepty-test.md +0 -25
  15. package/.claude/commands/telepty.md +0 -82
  16. package/AGENTS.md +0 -97
  17. package/BOUNDARY.md +0 -31
  18. package/BUS_EVENT_SCHEMA.md +0 -206
  19. package/CLAUDE.md +0 -100
  20. package/GEMINI.md +0 -10
  21. package/URGENT_ISSUES.resolved.md +0 -1
  22. package/docs/reports/2026-05-05-issue-8-claude-review.md +0 -194
  23. package/docs/specs/2026-05-05-issue-8-telepty-init.md +0 -477
  24. package/docs/superpowers/specs/2026-04-26-inject-submit-enter-reliability.md +0 -447
  25. package/docs/superpowers/specs/2026-04-26-prompt-symbol-render-gate.md +0 -571
  26. package/docs/superpowers/specs/2026-04-26-submit-gate-fixes-v2.md +0 -608
  27. package/docs/superpowers/specs/2026-05-02-submit-force-and-retry.md +0 -139
  28. package/protocol/mailbox.md +0 -244
  29. package/scripts/regen-snippet-fixtures.js +0 -42
  30. package/specs/codex-inject-spec.md +0 -201
  31. package/specs/enforce-report-spec.md +0 -237
  32. package/templates/AGENTS.md +0 -71
  33. package/tests/snippet-protocol/v1/golden-agents.json +0 -1
  34. package/tests/snippet-protocol/v1/golden-agents.md +0 -17
  35. package/tests/snippet-protocol/v1/golden-all.json +0 -3
  36. package/tests/snippet-protocol/v1/golden-all.md +0 -53
  37. package/tests/snippet-protocol/v1/golden-claude.json +0 -1
  38. package/tests/snippet-protocol/v1/golden-claude.md +0 -17
  39. package/tests/snippet-protocol/v1/golden-gemini.json +0 -1
  40. package/tests/snippet-protocol/v1/golden-gemini.md +0 -17
@@ -1,237 +0,0 @@
1
- # SPEC: Enforce result-summary REPORT when sessions go idle
2
-
3
- **Source:** orchestrator inject d94c9990...
4
- **Session:** aigentry-telepty
5
- **Status:** SPEC — awaiting orchestrator approval
6
- **Topic:** REPORT enforcement after inject-driven idle transitions
7
-
8
- ---
9
-
10
- ## 1. Design options & recommendation
11
-
12
- ### Option A — Gate idle transition until REPORT arrives
13
- Prevent `idle` transition from firing for N seconds until content REPORT
14
- detected as sent by the session.
15
-
16
- - ❌ Violates invariant: "Do NOT break existing idle detection"
17
- - ❌ Requires invasive state machine changes
18
- - **Rejected.**
19
-
20
- ### Option B — Auto-summarize PTY output
21
- Scrape last X lines of session PTY output, strip ANSI, attach as
22
- `auto_summary` field on `TASK_COMPLETE`.
23
-
24
- - ✅ Zero session-side changes
25
- - ✅ Always provides content payload
26
- - ❌ PTY scraping is noisy (progress bars, status lines, spinner remnants)
27
- - ❌ Masks the root cause — sessions still forget to REPORT
28
- - **Keep as fallback, not primary.**
29
-
30
- ### Option C — Two-stage notification
31
- On idle transition, fire `TASK_IDLE_NO_REPORT` (not `TASK_COMPLETE`).
32
- Watch for content REPORT inject BACK to the source session for N seconds.
33
- If REPORT detected → emit `TASK_COMPLETE_WITH_REPORT`. Else → emit
34
- `TASK_TIMEOUT_NO_REPORT` with `auto_summary` fallback (Option B).
35
-
36
- - ✅ Observable from orchestrator without code changes (richer events)
37
- - ✅ Doesn't break existing idle detection (fires AFTER idle transition)
38
- - ✅ No session-side changes required
39
- - ✅ Backward-compat (old consumers see bus event, just with new `type`)
40
- - ✅ Provides clear state difference between "REPORTed" and "idled silently"
41
- - **Recommended primary.**
42
-
43
- ### Option D — Prompt-injection reminder
44
- When session about to go idle after inject, auto-inject reminder text.
45
-
46
- - ❌ Interferes with active work
47
- - ❌ Doesn't guarantee compliance
48
- - ❌ Session might be in final cleanup — inject causes confusion
49
- - **Rejected.**
50
-
51
- ### Recommendation: **Option C + Option B fallback**
52
-
53
- Two-stage notification with PTY-scrape auto-summary as timeout fallback.
54
- Minimal blast radius, maximal observability, preserves all invariants.
55
-
56
- ---
57
-
58
- ## 2. Content REPORT schema
59
-
60
- Parse from inject body text via prefix. Structured envelope would require
61
- session-side library; free-text prefix keeps all LLMs compatible.
62
-
63
- **Detection rule:** An inject from session X BACK to session Y (where Y was
64
- the original `--from` source for X's last inject) whose prompt text starts
65
- with one of:
66
- - `REPORT:` (completed / partial result)
67
- - `STATUS:` (blocked / dismissed / error)
68
- - `ENFORCE-SPEC:`, `SPEC:`, `OWNER-DIAGNOSIS:` — recognized REPORT variants
69
-
70
- Required fields (parsed from pipe-separated text):
71
- - `source_session` — auto (sender of the reply inject)
72
- - `target_session` — auto (recipient, i.e. the original orchestrator)
73
- - `inject_ref` — auto (matched via pendingReports tracking)
74
- - `status` — parsed from prefix: `REPORT:` → completed; `STATUS: blocked` → blocked; etc.
75
- - `summary` — the full prompt text (20-500 chars recommended, not enforced)
76
- - `artifacts` — optional, parsed from `files={...}` pipe-field
77
- - `next_action` — optional, parsed from `next={...}` pipe-field
78
-
79
- **Non-breaking:** If the reply inject doesn't match any REPORT prefix, it's
80
- treated as a regular inject (current behavior preserved).
81
-
82
- ---
83
-
84
- ## 3. Timeout + failure handling
85
-
86
- | Condition | Action | Notification |
87
- |---|---|---|
88
- | REPORT arrives within `reportTimeoutSecs` (default 120s) | Cancel timer, mark as reported | `TASK_COMPLETE_WITH_REPORT` (rich payload) |
89
- | No REPORT within `reportTimeoutSecs` | Fire timeout | `TASK_TIMEOUT_NO_REPORT` with `auto_summary` (last 40 non-blank stripAnsi lines from `session.outputRing`) |
90
- | Session sends `STATUS: blocked` explicitly | Immediate settlement | `TASK_BLOCKED_WITH_REASON` |
91
- | Session dies before REPORT | Detected via `dead` transition | `TASK_DEAD_NO_REPORT` with `auto_summary` |
92
-
93
- **Interaction with existing 60s deliberation timeout:** Orthogonal. Deliberation
94
- timeout is a separate orchestrator-level concept. This daemon-level REPORT
95
- timeout fires AFTER idle but BEFORE any orchestrator follow-up. Default 120s
96
- gives orchestrator time to see `TASK_IDLE_NO_REPORT` and follow up before
97
- auto-summary fires.
98
-
99
- ---
100
-
101
- ## 4. Back-compat
102
-
103
- - Legacy `TASK_COMPLETE: {session} is now idle after processing inject ({N}s)`
104
- text format: **deprecated but kept emitting** for 1 minor version. Emit BOTH
105
- the new `TASK_IDLE_NO_REPORT` bus event AND the legacy text-inject-to-source
106
- during transition period.
107
- - New bus event types: `TASK_IDLE_NO_REPORT`, `TASK_COMPLETE_WITH_REPORT`,
108
- `TASK_TIMEOUT_NO_REPORT`, `TASK_BLOCKED_WITH_REASON`, `TASK_DEAD_NO_REPORT`.
109
- - Sessions that never send REPORT: grandfathered — they get
110
- `TASK_TIMEOUT_NO_REPORT` with auto-summary fallback (no hard failure).
111
- - Orchestrator code that parses legacy `TASK_COMPLETE: ...` text: still works
112
- (text still emitted during transition).
113
-
114
- ---
115
-
116
- ## 5. Scope boundaries
117
-
118
- | Work source | Require REPORT? | How distinguished |
119
- |---|---|---|
120
- | Inject with `--from X` | ✅ Yes (track in `pendingReports[sessionId]`) | `pendingReports` map populated on inject |
121
- | Inject without `--from` | ❌ No (no one to report to) | `pendingReports` key absent |
122
- | User typed directly | ❌ No | No inject event, no pendingReport entry |
123
- | Self-initiated REPORT inject | ❌ No (it IS the report) | prefix match: `REPORT:` etc. |
124
-
125
- **Key rule:** Only sessions with a `pendingReports[id]` entry are subject to
126
- enforcement. User-driven work naturally doesn't populate this map.
127
-
128
- ---
129
-
130
- ## 6. Files to modify
131
-
132
- | File | Change |
133
- |---|---|
134
- | `daemon.js` — sessionStateManager.onTransition (lines 37-57) | Replace direct auto-report with two-stage notification. Fire `TASK_IDLE_NO_REPORT`, start REPORT watch timer. |
135
- | `daemon.js` — inject endpoint (lines 1547-1550) | Extend `pendingReports[id]` with `awaitingReport: true`, `reportWatchUntil: ts`. |
136
- | `daemon.js` — inject endpoint (new detection) | Check incoming inject prompt for REPORT prefix + reverse-match to originating pendingReport. If matched: cancel timer, fire `TASK_COMPLETE_WITH_REPORT`. |
137
- | `daemon.js` — state machine `dead` transition handler | Fire `TASK_DEAD_NO_REPORT` with auto-summary. |
138
- | `daemon.js` — new helper `buildAutoSummary(session)` | Read `session.outputRing`, strip ANSI, filter blanks, take last 40 lines, max 4KB. |
139
- | `src/mailbox/config.js` or similar config | Add `reportTimeoutSecs: 120`, `autoSummaryLines: 40`, `autoSummaryMaxBytes: 4096`. |
140
- | `daemon.js` — legacy auto-report removal (lines 2131-2147, 2328-2346) | Retire duplicate legacy paths (or keep with deprecation flag). |
141
- | `test/daemon.test.js` | New tests: REPORT-detected path, timeout path, dead-before-report path, no-inject-source ignored path. |
142
-
143
- No new files. No new ports. No new process spawning.
144
-
145
- ---
146
-
147
- ## 7. Test plan
148
-
149
- **Unit tests (test/daemon.test.js additions):**
150
- 1. Idle after inject → emits `TASK_IDLE_NO_REPORT` bus event (NOT `TASK_COMPLETE`)
151
- 2. REPORT-prefixed inject reply within timeout → emits `TASK_COMPLETE_WITH_REPORT` with parsed fields
152
- 3. No REPORT within timeout → emits `TASK_TIMEOUT_NO_REPORT` with auto_summary containing last session output
153
- 4. `STATUS: blocked` reply → immediate `TASK_BLOCKED_WITH_REASON`
154
- 5. Session dies before report → `TASK_DEAD_NO_REPORT` with auto_summary
155
- 6. Idle WITHOUT pendingReports entry (user-driven work) → no enforcement events
156
- 7. `buildAutoSummary()`: strips ANSI, drops blanks, truncates to 40 lines / 4KB
157
- 8. Legacy text-inject to source still fires (back-compat grandfathering)
158
-
159
- **E2E tests:**
160
- 1. Full cycle: `inject --from A B "task"` → B works → B sends `telepty inject --from B A "REPORT: ..."` → A receives REPORT → bus emits `TASK_COMPLETE_WITH_REPORT`
161
- 2. Timeout cycle: same but B never replies → after 120s → A receives `TASK_TIMEOUT_NO_REPORT` with auto_summary
162
-
163
- **Regression:**
164
- - All 131 existing tests pass unchanged
165
- - Existing `TASK_COMPLETE:` text format still emitted (grandfather)
166
-
167
- ---
168
-
169
- ## 8. Semver
170
-
171
- **Minor bump → 0.2.0.**
172
-
173
- Justification:
174
- - New bus event types (additive, not breaking)
175
- - New config keys (additive with defaults)
176
- - Legacy notification text preserved (back-compat)
177
- - No breaking API changes
178
- - Observable new behavior that consumers may opt into
179
-
180
- Not a patch because it introduces new observable event types.
181
- Not major because nothing is removed or renamed.
182
-
183
- ---
184
-
185
- ## 9. Risks — top 3
186
-
187
- 1. **REPORT detection false positives** — an inject back to source that
188
- happens to start with "REPORT:" but is actually a new task request gets
189
- miscategorized. Mitigation: REPORT detection requires BOTH prefix match
190
- AND reverse-match to `pendingReports[senderSession]` with matching
191
- `inject_ref`. If no pending outbound report tracked, treat as new inject.
192
- 2. **Auto-summary leaks sensitive output** — PTY output may contain secrets
193
- (tokens, passwords echoed). Mitigation: honor a denylist regex
194
- (`api[_-]?key|password|token=\\S+`) before attaching; truncate aggressive.
195
- Document that auto_summary is best-effort preview, not full transcript.
196
- 3. **Timeout storm on orchestrator** — if many sessions timeout simultaneously,
197
- orchestrator receives a flurry of `TASK_TIMEOUT_NO_REPORT` events.
198
- Mitigation: rate-limit timeout emissions per-orchestrator via mailbox
199
- coalescing (existing `notifyCoalesceMs`).
200
-
201
- ---
202
-
203
- ## 10. Open questions
204
-
205
- 1. **Should `TASK_IDLE_NO_REPORT` be delivered as an inject (legacy) or ONLY
206
- as a bus event?** Recommendation: bus event only during transition — legacy
207
- text-inject preserved unchanged. Rich event flows via bus where consumers
208
- can subscribe.
209
- 2. **Cross-machine:** Does the REPORT watch timer survive tailnet peer relay?
210
- Current `pendingReports` is in-memory on the daemon handling the inject.
211
- If orchestrator is on a different machine, does the remote peer also track?
212
- Recommendation: timer stays on the daemon that accepted the original
213
- inject; remote orchestrator gets events via existing bus relay. No
214
- cross-machine state sync needed.
215
- 3. **Should `dismissed` be session-initiated or orchestrator-initiated?**
216
- Proposed: session sends `STATUS: dismissed` (I decided not to do this);
217
- orchestrator can also mark via `DELETE /api/pendingReports/{id}`
218
- (new endpoint). Both clear the watch.
219
- 4. **Two injects in quick succession from same orchestrator:** First inject
220
- creates pendingReport; second inject arrives before REPORT for first.
221
- Does second inject overwrite or queue? Recommendation: overwrite (only
222
- latest inject expects REPORT). Log `[AUTO-REPORT] overwritten pending`
223
- warning for observability.
224
- 5. **reportTimeoutSecs default (120s):** Is this the right baseline? Evidence
225
- table shows tasks ranging 7.5s → 649s. 120s too short for long tasks.
226
- Alternative: no default timer — only fire fallback when `dead` detected
227
- or explicit orchestrator-side query. Needs orchestrator input.
228
-
229
- ---
230
-
231
- ## Invariants honored
232
-
233
- - ✅ Existing idle detection unchanged (state machine onTransition fires as before)
234
- - ✅ Orchestrator needs no code changes to benefit (bus events flow passively)
235
- - ✅ No new process spawning / no new network ports
236
- - ✅ Cross-machine sync via existing mailbox unchanged
237
- - ✅ Scoped to REPORT enforcement — no inject rewrite
@@ -1,71 +0,0 @@
1
- # telepty Session Communication / 세션 통신
2
-
3
- AI CLI sessions use `telepty` to communicate with other sessions.
4
-
5
- ## Environment Detection / 환경 감지
6
-
7
- ```bash
8
- # Check if telepty is available
9
- echo "$TELEPTY_AVAILABLE" # "true" if telepty is installed and daemon running
10
-
11
- # Get current session ID
12
- echo "$TELEPTY_SESSION_ID" # e.g., "aigentry-brain-claude"
13
- ```
14
-
15
- If `$TELEPTY_AVAILABLE` is not set, telepty commands are unavailable.
16
-
17
- ## Commands / 명령어
18
-
19
- | English action | 한국어 동작 | Command |
20
- |----------------|------------|---------|
21
- | List sessions | 세션 목록 보기 | `telepty list` |
22
- | Send to session | 세션에 메시지 보내기 | `telepty inject <session> 'message'` |
23
- | Send with return address | 발신자 포함 전송 | `telepty inject --from $TELEPTY_SESSION_ID <session> 'message'` |
24
- | Send without enter | 엔터 없이 전송 | `telepty inject --no-enter <session> 'message'` |
25
- | Broadcast to all | 전체 브로드캐스트 | `telepty broadcast 'message'` |
26
- | Multicast to group | 그룹 멀티캐스트 | `telepty multicast <id1,id2> 'message'` |
27
- | Reply to last sender | 마지막 발신자에게 답장 | `telepty reply 'message'` |
28
- | Check session status | 세션 상태 확인 | `telepty list` (check connected/stale) |
29
- | Read session screen | 세션 화면 읽기 | `curl -s http://127.0.0.1:3848/api/sessions/<id>/screen -H "x-telepty-token: $TOKEN"` |
30
- | Kill session | 세션 종료 | `telepty delete <session>` |
31
- | Clean stale sessions | 비활성 세션 정리 | `telepty clean` |
32
- | Rename session | 세션 이름 변경 | `telepty rename <old> <new>` |
33
- | Listen to event bus | 이벤트 버스 수신 | `telepty listen` |
34
- | Attach to session | 세션에 접속 | `telepty attach <session>` |
35
-
36
- ## Natural Language → Command / 자연어 → 명령어
37
-
38
- | English request | 한국어 요청 | Command |
39
- |----------------|------------|---------|
40
- | `list sessions` | `세션 목록 보여줘` | `telepty list` |
41
- | `send to brain` | `brain에 메시지 보내줘` | `telepty inject aigentry-brain-claude 'msg'` |
42
- | `broadcast message` | `전체에 메시지 보내줘` | `telepty broadcast 'msg'` |
43
- | `reply to sender` | `답장해줘` | `telepty reply 'msg'` |
44
- | `kill session` | `세션 종료해줘` | `telepty delete <session>` |
45
- | `clean stale` | `비활성 정리해줘` | `telepty clean` |
46
- | `check status` | `상태 확인해줘` | `telepty list` |
47
- | `rename session` | `세션 이름 바꿔줘` | `telepty rename <old> <new>` |
48
- | `read screen` | `화면 읽어줘` | REST API `/api/sessions/<id>/screen` |
49
-
50
- ## Cross-Machine Sessions / 크로스 머신 세션
51
-
52
- When the same session ID exists on multiple hosts, use `session_id@host`:
53
-
54
- ```bash
55
- telepty inject brain-claude@macbook 'message'
56
- ```
57
-
58
- ## Rules / 규칙
59
-
60
- 1. **Return address**: Always include `--from $TELEPTY_SESSION_ID` when expecting a reply.
61
- 2. **Submit method**: Never rely on PTY `\r` directly. Use `telepty inject` which handles submit automatically.
62
- 3. **Env detection**: Check `$TELEPTY_AVAILABLE` before using telepty commands.
63
- 4. **Session ID format**: Use `<project>-<cli>` pattern (e.g., `aigentry-brain-claude`).
64
-
65
- ## Reporting / 보고
66
-
67
- On task completion, report to orchestrator:
68
-
69
- ```bash
70
- telepty inject --from $TELEPTY_SESSION_ID aigentry-orchestrator-claude 'REPORT: <summary>'
71
- ```
@@ -1 +0,0 @@
1
- {"version":"telepty-snippet/v1","target":"agents","sha256":"f5a0986a29a334ab0a12e672f4f3428c0c6f1458d35d6d0263a5ec3c33721195","body":"## telepty-snippet:agents\n\n**telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.\n\nQuick-start (5 commands):\n\n telepty daemon\n telepty allow --id <name> claude\n telepty list\n telepty inject <name> \"<prompt>\"\n telepty attach <name>\n\n`telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.\n\nRun `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.\n"}
@@ -1,17 +0,0 @@
1
- <!-- telepty-snippet/v1 BEGIN target=agents sha256=f5a0986a -->
2
- ## telepty-snippet:agents
3
-
4
- **telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.
5
-
6
- Quick-start (5 commands):
7
-
8
- telepty daemon
9
- telepty allow --id <name> claude
10
- telepty list
11
- telepty inject <name> "<prompt>"
12
- telepty attach <name>
13
-
14
- `telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.
15
-
16
- Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
17
- <!-- telepty-snippet/v1 END target=agents -->
@@ -1,3 +0,0 @@
1
- {"version":"telepty-snippet/v1","target":"claude","sha256":"305aad8181c1e75bb94589386cbc34f2b5103d6b5c1f6a7f01c99f1fbf6ed8c3","body":"## telepty-snippet:claude\n\n**telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.\n\nQuick-start (5 commands):\n\n telepty daemon\n telepty allow --id <name> claude\n telepty list\n telepty inject <name> \"<prompt>\"\n telepty attach <name>\n\n`telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.\n\nRun `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.\n"}
2
- {"version":"telepty-snippet/v1","target":"agents","sha256":"f5a0986a29a334ab0a12e672f4f3428c0c6f1458d35d6d0263a5ec3c33721195","body":"## telepty-snippet:agents\n\n**telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.\n\nQuick-start (5 commands):\n\n telepty daemon\n telepty allow --id <name> claude\n telepty list\n telepty inject <name> \"<prompt>\"\n telepty attach <name>\n\n`telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.\n\nRun `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.\n"}
3
- {"version":"telepty-snippet/v1","target":"gemini","sha256":"c97635b0d684552aa060a969981c2be11cf49b60f5a6237d52f5214e9ecc1a07","body":"## telepty-snippet:gemini\n\n**telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.\n\nQuick-start (5 commands):\n\n telepty daemon\n telepty allow --id <name> claude\n telepty list\n telepty inject <name> \"<prompt>\"\n telepty attach <name>\n\n`telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.\n\nRun `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.\n"}
@@ -1,53 +0,0 @@
1
- <!-- telepty-snippet/v1 BEGIN target=claude sha256=305aad81 -->
2
- ## telepty-snippet:claude
3
-
4
- **telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.
5
-
6
- Quick-start (5 commands):
7
-
8
- telepty daemon
9
- telepty allow --id <name> claude
10
- telepty list
11
- telepty inject <name> "<prompt>"
12
- telepty attach <name>
13
-
14
- `telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.
15
-
16
- Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
17
- <!-- telepty-snippet/v1 END target=claude -->
18
-
19
- <!-- telepty-snippet/v1 BEGIN target=agents sha256=f5a0986a -->
20
- ## telepty-snippet:agents
21
-
22
- **telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.
23
-
24
- Quick-start (5 commands):
25
-
26
- telepty daemon
27
- telepty allow --id <name> claude
28
- telepty list
29
- telepty inject <name> "<prompt>"
30
- telepty attach <name>
31
-
32
- `telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.
33
-
34
- Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
35
- <!-- telepty-snippet/v1 END target=agents -->
36
-
37
- <!-- telepty-snippet/v1 BEGIN target=gemini sha256=c97635b0 -->
38
- ## telepty-snippet:gemini
39
-
40
- **telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.
41
-
42
- Quick-start (5 commands):
43
-
44
- telepty daemon
45
- telepty allow --id <name> claude
46
- telepty list
47
- telepty inject <name> "<prompt>"
48
- telepty attach <name>
49
-
50
- `telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.
51
-
52
- Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
53
- <!-- telepty-snippet/v1 END target=gemini -->
@@ -1 +0,0 @@
1
- {"version":"telepty-snippet/v1","target":"claude","sha256":"305aad8181c1e75bb94589386cbc34f2b5103d6b5c1f6a7f01c99f1fbf6ed8c3","body":"## telepty-snippet:claude\n\n**telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.\n\nQuick-start (5 commands):\n\n telepty daemon\n telepty allow --id <name> claude\n telepty list\n telepty inject <name> \"<prompt>\"\n telepty attach <name>\n\n`telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.\n\nRun `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.\n"}
@@ -1,17 +0,0 @@
1
- <!-- telepty-snippet/v1 BEGIN target=claude sha256=305aad81 -->
2
- ## telepty-snippet:claude
3
-
4
- **telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.
5
-
6
- Quick-start (5 commands):
7
-
8
- telepty daemon
9
- telepty allow --id <name> claude
10
- telepty list
11
- telepty inject <name> "<prompt>"
12
- telepty attach <name>
13
-
14
- `telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.
15
-
16
- Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
17
- <!-- telepty-snippet/v1 END target=claude -->
@@ -1 +0,0 @@
1
- {"version":"telepty-snippet/v1","target":"gemini","sha256":"c97635b0d684552aa060a969981c2be11cf49b60f5a6237d52f5214e9ecc1a07","body":"## telepty-snippet:gemini\n\n**telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.\n\nQuick-start (5 commands):\n\n telepty daemon\n telepty allow --id <name> claude\n telepty list\n telepty inject <name> \"<prompt>\"\n telepty attach <name>\n\n`telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.\n\nRun `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.\n"}
@@ -1,17 +0,0 @@
1
- <!-- telepty-snippet/v1 BEGIN target=gemini sha256=c97635b0 -->
2
- ## telepty-snippet:gemini
3
-
4
- **telepty** is the aigentry ecosystem's PTY multiplexer and session orchestrator. It allows wrapping AI CLI sessions under stable IDs and addressing them across local and cross-machine boundaries via a daemon-mediated transport.
5
-
6
- Quick-start (5 commands):
7
-
8
- telepty daemon
9
- telepty allow --id <name> claude
10
- telepty list
11
- telepty inject <name> "<prompt>"
12
- telepty attach <name>
13
-
14
- `telepty allow` wraps a CLI under the chosen `<name>`; `telepty list` enumerates known sessions; `telepty inject` sends a prompt to a wrapped session; `telepty attach` interactively connects to one.
15
-
16
- Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
17
- <!-- telepty-snippet/v1 END target=gemini -->