@dmsdc-ai/aigentry-telepty 0.3.3 → 0.3.5

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 (34) hide show
  1. package/AGENTS.md +23 -0
  2. package/CHANGELOG.md +110 -0
  3. package/README.md +67 -1
  4. package/cli.js +125 -39
  5. package/cross-machine.js +132 -0
  6. package/docs/reports/2026-05-05-issue-8-claude-review.md +194 -0
  7. package/docs/specs/2026-05-05-issue-8-telepty-init.md +477 -0
  8. package/host-spec.js +60 -0
  9. package/mcp-server/index.mjs +24 -3
  10. package/package.json +6 -5
  11. package/scripts/regen-snippet-fixtures.js +42 -0
  12. package/skill-installer.js +42 -6
  13. package/skills/telepty/SKILL.md +1 -1
  14. package/skills/telepty-allow/SKILL.md +1 -1
  15. package/skills/telepty-attach/SKILL.md +1 -1
  16. package/skills/telepty-broadcast/SKILL.md +1 -1
  17. package/skills/telepty-daemon/SKILL.md +1 -1
  18. package/skills/telepty-inject/SKILL.md +76 -4
  19. package/skills/telepty-list/SKILL.md +1 -1
  20. package/skills/telepty-listen/SKILL.md +1 -1
  21. package/skills/telepty-rename/SKILL.md +1 -1
  22. package/skills/telepty-session/SKILL.md +1 -1
  23. package/src/init/print-snippet.js +114 -0
  24. package/src/init/snippets/agents.md +15 -0
  25. package/src/init/snippets/claude.md +15 -0
  26. package/src/init/snippets/gemini.md +15 -0
  27. package/tests/snippet-protocol/v1/golden-agents.json +1 -0
  28. package/tests/snippet-protocol/v1/golden-agents.md +17 -0
  29. package/tests/snippet-protocol/v1/golden-all.json +3 -0
  30. package/tests/snippet-protocol/v1/golden-all.md +53 -0
  31. package/tests/snippet-protocol/v1/golden-claude.json +1 -0
  32. package/tests/snippet-protocol/v1/golden-claude.md +17 -0
  33. package/tests/snippet-protocol/v1/golden-gemini.json +1 -0
  34. package/tests/snippet-protocol/v1/golden-gemini.md +17 -0
@@ -1,8 +1,10 @@
1
+ // LEGACY: grandfathered by ADR 2026-05-05-telepty-devkit-boundary §6.2.1. New installer behavior MUST land in @dmsdc-ai/aigentry-devkit. Bugfixes only.
1
2
  'use strict';
2
3
 
3
4
  const fs = require('fs');
4
5
  const os = require('os');
5
6
  const path = require('path');
7
+ const { execSync } = require('child_process');
6
8
  const prompts = require('prompts');
7
9
 
8
10
  const TARGET_CLIENTS = {
@@ -10,22 +12,44 @@ const TARGET_CLIENTS = {
10
12
  label: 'Claude Code',
11
13
  globalDir: () => path.join(os.homedir(), '.claude', 'skills'),
12
14
  projectDir: (cwd) => path.join(cwd, '.claude', 'skills'),
13
- defaultScope: 'global'
15
+ defaultScope: 'global',
16
+ homeDir: () => path.join(os.homedir(), '.claude'),
17
+ binary: 'claude'
14
18
  },
15
19
  codex: {
16
20
  label: 'Codex',
17
21
  globalDir: () => path.join(os.homedir(), '.codex', 'skills'),
18
22
  projectDir: (cwd) => path.join(cwd, '.codex', 'skills'),
19
- defaultScope: 'global'
23
+ defaultScope: 'global',
24
+ homeDir: () => path.join(os.homedir(), '.codex'),
25
+ binary: 'codex'
20
26
  },
21
27
  gemini: {
22
28
  label: 'Gemini',
23
29
  globalDir: () => path.join(os.homedir(), '.gemini', 'skills'),
24
30
  projectDir: (cwd) => path.join(cwd, '.gemini', 'skills'),
25
- defaultScope: 'project'
31
+ defaultScope: 'project',
32
+ homeDir: () => path.join(os.homedir(), '.gemini'),
33
+ binary: 'gemini'
26
34
  }
27
35
  };
28
36
 
37
+ function hasCliBinary(cmd) {
38
+ try {
39
+ execSync(`command -v ${cmd}`, { stdio: 'ignore', shell: '/bin/sh' });
40
+ return true;
41
+ } catch {
42
+ return false;
43
+ }
44
+ }
45
+
46
+ function detectInstalledClients() {
47
+ return Object.keys(TARGET_CLIENTS).filter((key) => {
48
+ const client = TARGET_CLIENTS[key];
49
+ return fs.existsSync(client.homeDir()) || hasCliBinary(client.binary);
50
+ });
51
+ }
52
+
29
53
  function resolveSkillsSourceRoot(packageRoot = __dirname) {
30
54
  return path.join(packageRoot, 'skills');
31
55
  }
@@ -163,13 +187,23 @@ async function runInteractiveSkillInstaller(options = {}) {
163
187
  console.log(`Installing packaged skill: ${packagedSkills[0].name}`);
164
188
  }
165
189
 
190
+ const installedClients = options.detectClients
191
+ ? options.detectClients()
192
+ : detectInstalledClients();
193
+ const installedSet = new Set(installedClients);
194
+ const detectedLabel = installedClients.length
195
+ ? `Detected: ${installedClients.join(', ')}`
196
+ : 'No AI CLI detected — manual selection required';
197
+ console.log(detectedLabel);
198
+
166
199
  const selectedClientsAnswer = await promptImpl({
167
200
  type: 'multiselect',
168
201
  name: 'clients',
169
- message: 'Select target clients',
202
+ message: 'Select target clients (detected CLIs pre-selected)',
170
203
  choices: Object.entries(TARGET_CLIENTS).map(([key, value]) => ({
171
- title: value.label,
172
- value: key
204
+ title: `${value.label}${installedSet.has(key) ? ' ✓ detected' : ' (not detected)'}`,
205
+ value: key,
206
+ selected: installedSet.has(key)
173
207
  })),
174
208
  min: 1
175
209
  });
@@ -262,6 +296,8 @@ async function runInteractiveSkillInstaller(options = {}) {
262
296
  module.exports = {
263
297
  TARGET_CLIENTS,
264
298
  copySkillDirectory,
299
+ detectInstalledClients,
300
+ hasCliBinary,
265
301
  installSkillsWithPlan,
266
302
  listPackagedSkills,
267
303
  resolveTargetDirectory,
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty
3
- description: Overview of telepty — PTY multiplexer for AI session orchestration. Use this when user asks "what is telepty" or needs a getting-started guide.
3
+ description: Overview of telepty — PTY multiplexer for AI session orchestration. Use this when user asks "what is telepty" or needs a getting-started guide. 키워드: 텔레프티, 텔레프티 개요, 시작하기, telepty 소개, 사용법, 가이드
4
4
  ---
5
5
 
6
6
  # telepty — Overview
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-allow
3
- description: Create telepty sessions by wrapping CLI processes. Covers the allow/enable/wrap command for session creation and PTY management.
3
+ description: Create telepty sessions by wrapping CLI processes. Covers the allow/enable/wrap command for session creation and PTY management. 키워드: 세션 생성, 세션 래핑, CLI 래핑, allow, 세션 만들기, PTY
4
4
  ---
5
5
 
6
6
  # telepty-allow — Create and Manage Sessions
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-attach
3
- description: Attach interactively to a telepty session to view output and send input in real-time.
3
+ description: Attach interactively to a telepty session to view output and send input in real-time. 키워드: 세션 접속, 세션 연결, 세션 들어가기, 어태치, attach, 실시간 보기
4
4
  ---
5
5
 
6
6
  # telepty-attach — Interactive Session Attachment
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-broadcast
3
- description: Send messages to multiple telepty sessions at once. Covers broadcast (all sessions) and multicast (selected targets).
3
+ description: Send messages to multiple telepty sessions at once. Covers broadcast (all sessions) and multicast (selected targets). 키워드: 전체 공지, 모든 세션에, 일괄 전송, 브로드캐스트, 멀티캐스트, 다중 주입
4
4
  ---
5
5
 
6
6
  # telepty-broadcast — Multi-Target Messaging
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-daemon
3
- description: Manage the telepty daemon — start, stop, repair, update, and TUI dashboard. Use when daemon is broken or needs maintenance.
3
+ description: Manage the telepty daemon — start, stop, repair, update, and TUI dashboard. Use when daemon is broken or needs maintenance. 키워드: 데몬 시작, 데몬 재시작, 데몬 종료, TUI, 대시보드, 데몬 상태, daemon
4
4
  ---
5
5
 
6
6
  # telepty-daemon — Daemon Management
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-inject
3
- description: Send messages, commands, and keystrokes to telepty sessions. Covers inject, enter, send-key, and reply commands.
3
+ description: Send messages, commands, and keystrokes to telepty sessions. Covers inject, enter, send-key, and reply commands. 키워드: 세션에 메시지, 메시지 보내기, 전달, 주입, inject, 응답, 답장, 키 입력
4
4
  ---
5
5
 
6
6
  # telepty-inject — Send Messages to Sessions
@@ -51,14 +51,34 @@ If you expect a reply, ALWAYS include `--from` so the target knows where to resp
51
51
  telepty inject <target> "your message" --from $(echo $TELEPTY_SESSION_ID)
52
52
  ```
53
53
 
54
- ### Cross-host inject
54
+ ### Cross-host inject — `<id>@<host>` syntax
55
55
 
56
- When the same session ID exists on multiple hosts:
56
+ To inject into a session running on a different machine, append `@<host>` to
57
+ the session ID. `<host>` can be a hostname, LAN IP, or Tailnet name.
57
58
 
58
59
  ```bash
59
- telepty inject session_id@remote-host "message"
60
+ # Hostname
61
+ telepty inject session_id@worker-01 "message"
62
+
63
+ # LAN IP (daemon must be reachable on port 3848)
64
+ telepty inject orchestrator-claude@172.28.4.165 "PING from build server"
65
+
66
+ # With return address (recommended for cross-host)
67
+ telepty inject orchestrator-claude@192.168.1.10 "task done" \
68
+ --from "$TELEPTY_SESSION_ID"
60
69
  ```
61
70
 
71
+ **Requirements**:
72
+ - The remote daemon must be reachable on port `3848` from the calling host
73
+ (firewall / LAN routing / Tailscale).
74
+ - No SSH or sshd is required on either side — the call hits the remote
75
+ daemon's HTTP API directly.
76
+ - Use the same `<id>@<host>` syntax for `attach`, `read-screen`, `enter`,
77
+ and `multicast` targets.
78
+
79
+ Use this when the same session ID exists on multiple hosts, or when the
80
+ calling host has no local daemon discovery (no Tailnet, mixed LAN, etc.).
81
+
62
82
  ## enter — Send Enter keystroke only
63
83
 
64
84
  ```bash
@@ -83,6 +103,58 @@ telepty reply "<message>"
83
103
 
84
104
  Automatically targets the session that last injected into yours (uses stored `lastInjectFrom`).
85
105
 
106
+ ## Report Convention (REPORT to orchestrator)
107
+
108
+ When a sub-session finishes a task or needs to escalate state, it reports to the
109
+ **orchestrator** session using the `REPORT:` prefix.
110
+
111
+ ### Hard rule: NEVER hardcode the orchestrator session ID
112
+
113
+ Session IDs are volatile runtime identifiers — they may change across hosts,
114
+ restarts, or topology shifts. Resolve the orchestrator ID at runtime from
115
+ `telepty list --json` instead.
116
+
117
+ ### Standard pattern (telepty 0.3.3+)
118
+
119
+ ```bash
120
+ # 1. Resolve orchestrator session ID at runtime (filter out role-suffixed peers)
121
+ ORCH_ID=$(telepty list --json | python3 -c "import json,sys; \
122
+ print(next(s['id'] for s in json.load(sys.stdin) \
123
+ if 'orchestrator' in s['id'] \
124
+ and not any(x in s['id'] for x in ('coder','reviewer','architect','runner','tester','analyst','builder'))))")
125
+
126
+ # 2. Inject the REPORT (retry-safe submit; --ref keeps payload short)
127
+ telepty inject --ref --submit --submit-retry 2 \
128
+ --from "$TELEPTY_SESSION_ID" "$ORCH_ID" \
129
+ "REPORT: <one-line summary> | evidence: <commit/test/etc> | next: <handoff>"
130
+ ```
131
+
132
+ ### Convention rules
133
+
134
+ - **Prefix**: messages MUST start with `REPORT:` so the orchestrator's event
135
+ classifier can route them.
136
+ - **Return address**: include `--from "$TELEPTY_SESSION_ID"` so the orchestrator
137
+ knows which sub-session reported.
138
+ - **Retry**: pass `--submit-retry 2` (telepty 0.3.3+). The retry is idempotent
139
+ on safe gate-timeout 504s (`gated_dispatch_unconsumed`, `gate_timeout`,
140
+ `no_prompt_symbol_seen`); hard-fail reasons (`session_dead`, `error`,
141
+ `restarting`, `no_state`) are not retried.
142
+ - **Long payloads**: store the full body in a file and use `--ref <file>` so the
143
+ inject prompt itself stays short.
144
+ - **Self-report (idempotent)**: a session reporting on its own behalf may use
145
+ `--submit-force` to bypass the render gate. Do NOT use `--submit-force` for
146
+ general inject — it can clobber in-flight user input.
147
+
148
+ ### Anti-patterns (DO NOT)
149
+
150
+ - `telepty inject orchestrator-claude "..."` — hardcoded session ID; breaks the
151
+ moment the orchestrator is renamed or runs under a different CLI (codex,
152
+ gemini).
153
+ - Embedding `aigentry-orchestrator-claude` in spec templates, scripts, or
154
+ docs as a literal target.
155
+ - Reporting without the `REPORT:` prefix — the orchestrator cannot distinguish
156
+ a status report from a peer-to-peer message.
157
+
86
158
  ## Common Errors
87
159
 
88
160
  | Error | Cause | Fix |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-list
3
- description: Discover telepty sessions, check status and health. Covers list, session info, and status commands.
3
+ description: Discover telepty sessions, check status and health. Covers list, session info, and status commands. 키워드: 세션 목록, 활성 세션, 세션 조회, 세션 상태, 세션 확인, 리스트
4
4
  ---
5
5
 
6
6
  # telepty-list — Discover Sessions and Check Status
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-listen
3
- description: Monitor telepty events and read session screen output. Covers listen (event bus) and read-screen commands.
3
+ description: Monitor telepty events and read session screen output. Covers listen (event bus) and read-screen commands. 키워드: 이벤트 모니터, 화면 확인, 화면 읽기, 이벤트 스트림, listen, read-screen, 모니터링
4
4
  ---
5
5
 
6
6
  # telepty-listen — Event Monitoring and Screen Reading
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-rename
3
- description: Rename, delete, and clean up telepty sessions. Session lifecycle management.
3
+ description: Rename, delete, and clean up telepty sessions. Session lifecycle management. 키워드: 세션 이름 변경, 세션 삭제, 세션 정리, 세션 청소, rename, 라이프사이클
4
4
  ---
5
5
 
6
6
  # telepty-rename — Session Lifecycle Management
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: telepty-session
3
- description: Multi-session orchestration — start multiple sessions at once and arrange terminal layouts. Covers session start and layout commands.
3
+ description: Multi-session orchestration — start multiple sessions at once and arrange terminal layouts. Covers session start and layout commands. 키워드: 멀티 세션 시작, 다중 세션, 세션 레이아웃, 세션 일괄 시작, 멀티 시작, layout
4
4
  ---
5
5
 
6
6
  # telepty-session — Multi-Session Orchestration
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ const fs = require('node:fs');
4
+ const path = require('node:path');
5
+ const { createHash } = require('node:crypto');
6
+
7
+ const VERSION = 'telepty-snippet/v1';
8
+ const TARGETS = ['claude', 'agents', 'gemini'];
9
+ const FORMATS = ['markdown', 'json'];
10
+ const SNIPPET_DIR = path.join(__dirname, 'snippets');
11
+ const HELP = 'usage: telepty init --print-snippet [--target {claude|agents|gemini|all}] [--format {markdown|json}]';
12
+
13
+ function sha256Hex(body) {
14
+ return createHash('sha256').update(body, 'utf8').digest('hex');
15
+ }
16
+
17
+ function loadBody(target, options = {}) {
18
+ const snippetDir = options.snippetDir || SNIPPET_DIR;
19
+ return fs.readFileSync(path.join(snippetDir, `${target}.md`), 'utf8');
20
+ }
21
+
22
+ function expandTargets(target) {
23
+ return target === 'all' ? TARGETS : [target];
24
+ }
25
+
26
+ function emitMarkdown(target, body) {
27
+ const sha8 = sha256Hex(body).slice(0, 8);
28
+ return `<!-- ${VERSION} BEGIN target=${target} sha256=${sha8} -->\n${body}<!-- ${VERSION} END target=${target} -->\n`;
29
+ }
30
+
31
+ function emitJson(target, body) {
32
+ return JSON.stringify({
33
+ version: VERSION,
34
+ target,
35
+ sha256: sha256Hex(body),
36
+ body
37
+ }) + '\n';
38
+ }
39
+
40
+ function parseArgs(args) {
41
+ const parsed = {
42
+ printSnippet: false,
43
+ target: 'all',
44
+ format: 'markdown',
45
+ help: false
46
+ };
47
+
48
+ for (let index = 0; index < args.length; index += 1) {
49
+ const arg = args[index];
50
+ if (arg === '--help' || arg === '-h') {
51
+ parsed.help = true;
52
+ } else if (arg === '--print-snippet') {
53
+ parsed.printSnippet = true;
54
+ } else if (arg === '--target') {
55
+ parsed.target = args[index + 1] || '';
56
+ index += 1;
57
+ } else if (arg.startsWith('--target=')) {
58
+ parsed.target = arg.slice('--target='.length);
59
+ } else if (arg === '--format') {
60
+ parsed.format = args[index + 1] || '';
61
+ index += 1;
62
+ } else if (arg.startsWith('--format=')) {
63
+ parsed.format = arg.slice('--format='.length);
64
+ }
65
+ }
66
+
67
+ return parsed;
68
+ }
69
+
70
+ function buildOutput(args, options = {}) {
71
+ const parsed = parseArgs(args);
72
+ const stdout = options.stdout || process.stdout;
73
+ const stderr = options.stderr || process.stderr;
74
+
75
+ if (parsed.help || !parsed.printSnippet) {
76
+ stdout.write(`${HELP}\n`);
77
+ return 0;
78
+ }
79
+
80
+ if (![...TARGETS, 'all'].includes(parsed.target)) {
81
+ stderr.write('error: --target must be one of claude, agents, gemini, all\n');
82
+ return 2;
83
+ }
84
+
85
+ if (!FORMATS.includes(parsed.format)) {
86
+ stderr.write('error: --format must be one of markdown, json\n');
87
+ return 2;
88
+ }
89
+
90
+ try {
91
+ const outputs = expandTargets(parsed.target).map((target) => {
92
+ const body = loadBody(target, options);
93
+ return parsed.format === 'json' ? emitJson(target, body) : emitMarkdown(target, body);
94
+ });
95
+
96
+ stdout.write(parsed.format === 'json' ? outputs.join('') : outputs.join('\n'));
97
+ return 0;
98
+ } catch (error) {
99
+ stderr.write(`error: failed to generate telepty snippet: ${error.message}\n`);
100
+ return 4;
101
+ }
102
+ }
103
+
104
+ module.exports = {
105
+ HELP,
106
+ TARGETS,
107
+ VERSION,
108
+ buildOutput,
109
+ emitJson,
110
+ emitMarkdown,
111
+ loadBody,
112
+ main: buildOutput,
113
+ sha256Hex
114
+ };
@@ -0,0 +1,15 @@
1
+ ## telepty-snippet:agents
2
+
3
+ **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.
4
+
5
+ Quick-start (5 commands):
6
+
7
+ telepty daemon
8
+ telepty allow --id <name> claude
9
+ telepty list
10
+ telepty inject <name> "<prompt>"
11
+ telepty attach <name>
12
+
13
+ `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.
14
+
15
+ Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
@@ -0,0 +1,15 @@
1
+ ## telepty-snippet:claude
2
+
3
+ **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.
4
+
5
+ Quick-start (5 commands):
6
+
7
+ telepty daemon
8
+ telepty allow --id <name> claude
9
+ telepty list
10
+ telepty inject <name> "<prompt>"
11
+ telepty attach <name>
12
+
13
+ `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.
14
+
15
+ Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
@@ -0,0 +1,15 @@
1
+ ## telepty-snippet:gemini
2
+
3
+ **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.
4
+
5
+ Quick-start (5 commands):
6
+
7
+ telepty daemon
8
+ telepty allow --id <name> claude
9
+ telepty list
10
+ telepty inject <name> "<prompt>"
11
+ telepty attach <name>
12
+
13
+ `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.
14
+
15
+ Run `telepty --help` for the full command list. Run `telepty <command> --help` for per-command flags.
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,17 @@
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 -->
@@ -0,0 +1,3 @@
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"}
@@ -0,0 +1,53 @@
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 -->
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,17 @@
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 -->
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,17 @@
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 -->