ftown-bridge 0.3.15 → 0.3.16
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.
- package/bin/ftown-sessions +5 -0
- package/dist/agent-commands.d.ts +17 -0
- package/dist/agent-commands.js +41 -0
- package/dist/agent-commands.js.map +1 -0
- package/dist/create-ftown-session.d.ts +33 -0
- package/dist/create-ftown-session.js +81 -0
- package/dist/create-ftown-session.js.map +1 -0
- package/dist/cursor-hook-installer.js +2 -2
- package/dist/cursor-hook-installer.js.map +1 -1
- package/dist/ftown-sessions-cli.d.ts +2 -0
- package/dist/ftown-sessions-cli.js +223 -0
- package/dist/ftown-sessions-cli.js.map +1 -0
- package/dist/harness-cli.d.ts +2 -0
- package/dist/harness-cli.js +432 -0
- package/dist/harness-cli.js.map +1 -0
- package/dist/harness-format.d.ts +3 -0
- package/dist/harness-format.js +14 -0
- package/dist/harness-format.js.map +1 -0
- package/dist/harness-installer.d.ts +16 -0
- package/dist/harness-installer.js +108 -0
- package/dist/harness-installer.js.map +1 -0
- package/dist/hook-installer.js +2 -2
- package/dist/hook-installer.js.map +1 -1
- package/dist/index.js +57 -33
- package/dist/index.js.map +1 -1
- package/dist/install-ftown-cli.d.ts +3 -0
- package/dist/install-ftown-cli.js +20 -0
- package/dist/install-ftown-cli.js.map +1 -0
- package/dist/install-ftown-skill.d.ts +4 -0
- package/dist/install-ftown-skill.js +50 -0
- package/dist/install-ftown-skill.js.map +1 -0
- package/dist/install-notify-script.d.ts +6 -0
- package/dist/install-notify-script.js +23 -0
- package/dist/install-notify-script.js.map +1 -0
- package/dist/local-api-server.d.ts +3 -0
- package/dist/local-api-server.js +49 -2
- package/dist/local-api-server.js.map +1 -1
- package/dist/terminal-manager.d.ts +3 -1
- package/dist/terminal-manager.js +13 -6
- package/dist/terminal-manager.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +9 -4
- package/skills/bridge-harness/SKILL.md +43 -0
- package/skills/ftown-sessions/SKILL.md +101 -0
- package/skills/ftown-sessions/scripts/ftown-sessions +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../src/terminal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,aAAgD,MAAM,iBAAiB,CAAC;AAC/E,OAAO,cAAc,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;AACnC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../src/terminal-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export interface Command {
|
|
|
34
34
|
export type CommandType = 'create_session' | 'stop_session' | 'list_sessions' | 'get_history' | 'retry_session' | 'send_message' | 'rename_session' | 'remove_session' | 'bridge_exec' | 'clear_terminal' | 'update_session_parent';
|
|
35
35
|
export interface CreateSessionPayload {
|
|
36
36
|
command: string;
|
|
37
|
+
prompt?: string;
|
|
37
38
|
name?: string;
|
|
38
39
|
workingDir?: string;
|
|
39
40
|
bridgeId?: string;
|
package/package.json
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ftown-bridge",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.16",
|
|
4
4
|
"description": "CLI bridge for ftown — generic PTY-over-Centrifugo relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"ftown-bridge": "dist/index.js"
|
|
8
|
+
"ftown-bridge": "dist/index.js",
|
|
9
|
+
"ftown-harness": "dist/harness-cli.js",
|
|
10
|
+
"ftown-sessions": "bin/ftown-sessions"
|
|
9
11
|
},
|
|
10
12
|
"files": [
|
|
11
13
|
"dist",
|
|
12
|
-
"
|
|
14
|
+
"bin",
|
|
15
|
+
"hooks",
|
|
16
|
+
"skills"
|
|
13
17
|
],
|
|
14
18
|
"scripts": {
|
|
15
19
|
"build": "tsc",
|
|
16
20
|
"prepublishOnly": "npm run build",
|
|
17
21
|
"start": "tsx src/index.ts",
|
|
18
|
-
"dev": "tsx watch src/index.ts"
|
|
22
|
+
"dev": "tsx watch src/index.ts",
|
|
23
|
+
"harness": "tsx src/harness-cli.ts"
|
|
19
24
|
},
|
|
20
25
|
"engines": {
|
|
21
26
|
"node": ">=22"
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bridge-harness
|
|
3
|
+
description: Control local ftown-bridge sessions via auto-deployed ~/.ftown/bin/ftown-harness. Triggers on bridge harness, /bridge-harness, bridge sessions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# bridge-harness
|
|
7
|
+
|
|
8
|
+
## Entry (auto-deployed)
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
~/.ftown/bin/ftown-harness <cmd>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Read `~/.ftown/harness-agent.md` on each bridge start. Never curl/lsof the local bridge API.
|
|
15
|
+
|
|
16
|
+
## Playbook
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
ftown-harness status
|
|
20
|
+
ftown-harness here -n 25 # tails log even if process dead (status=error)
|
|
21
|
+
ftown-harness ls --tail 3 # log=N on each row; previews dead sessions with logs
|
|
22
|
+
ftown-harness grep ftown "error|FAIL" -C 2
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Commands
|
|
26
|
+
|
|
27
|
+
| Cmd | Notes |
|
|
28
|
+
|-----|-------|
|
|
29
|
+
| `here -n N` | Workspace walk-up; **tails when dead** if log exists |
|
|
30
|
+
| `ls --tail N` | Shows `log=lines`; preview any session with logs |
|
|
31
|
+
| `tail` / `grep` | ANSI+OSC stripped; `grep -C 2` context |
|
|
32
|
+
| `send` | `--dry-run` first; `-s` submit; only when user asks |
|
|
33
|
+
| `--json` | `ftown-harness --json ls` etc. |
|
|
34
|
+
|
|
35
|
+
Lookup: exact name → substring → id prefix.
|
|
36
|
+
|
|
37
|
+
## Dead vs error
|
|
38
|
+
|
|
39
|
+
`status=error` + `alive=false` does **not** mean no logs. Use `here`/`tail` — they read persisted terminal logs.
|
|
40
|
+
|
|
41
|
+
## context-mode
|
|
42
|
+
|
|
43
|
+
Use `ftown-harness` in Bash only. No curl/wget to 127.0.0.1.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ftown-sessions
|
|
3
|
+
description: >-
|
|
4
|
+
Observe and control other ftown CLI agent sessions on the same machine. Use the
|
|
5
|
+
ftown-sessions CLI (~/.ftown/ftown-sessions) to list, create, read, and drive
|
|
6
|
+
sibling sessions while running inside a ftown-managed Claude Code or Cursor Agent
|
|
7
|
+
session.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# ftown cross-session CLI
|
|
11
|
+
|
|
12
|
+
**Prefer the CLI** — installed to `~/.ftown/ftown-sessions` whenever `ftown-bridge` is running. It reads `~/.ftown/bridge.json` automatically.
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
~/.ftown/ftown-sessions --help
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Skill copy (same binary via wrapper): `scripts/ftown-sessions` in this skill directory.
|
|
19
|
+
|
|
20
|
+
**Trust model:** anyone who can read `bridge.json` can control **every** ftown session on that bridge.
|
|
21
|
+
|
|
22
|
+
## Commands
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# List sessions (JSON)
|
|
26
|
+
~/.ftown/ftown-sessions list
|
|
27
|
+
|
|
28
|
+
# Spawn a child agent (uses FTOWN_SESSION_ID for --parent)
|
|
29
|
+
~/.ftown/ftown-sessions create \
|
|
30
|
+
--shell cursor \
|
|
31
|
+
--prompt "Review the auth module and summarize" \
|
|
32
|
+
--workdir /path/to/repo \
|
|
33
|
+
--name auth-review \
|
|
34
|
+
--parent
|
|
35
|
+
|
|
36
|
+
# Metadata
|
|
37
|
+
~/.ftown/ftown-sessions get <session-id>
|
|
38
|
+
|
|
39
|
+
# Terminal output (plain lines; add --json for structured)
|
|
40
|
+
~/.ftown/ftown-sessions screen <session-id> --limit 200
|
|
41
|
+
|
|
42
|
+
# Search output
|
|
43
|
+
~/.ftown/ftown-sessions grep <session-id> --pattern 'error|failed'
|
|
44
|
+
|
|
45
|
+
# Type into another running session
|
|
46
|
+
~/.ftown/ftown-sessions keys <session-id> 'y'
|
|
47
|
+
|
|
48
|
+
# Liveness
|
|
49
|
+
~/.ftown/ftown-sessions running <session-id>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Create options
|
|
53
|
+
|
|
54
|
+
| Flag | Description |
|
|
55
|
+
|------|-------------|
|
|
56
|
+
| `--shell` | `cursor`, `claude`, `shell`, `opencode`, … (default `claude`) |
|
|
57
|
+
| `--prompt` | Initial message sent after spawn |
|
|
58
|
+
| `--workdir` | Working directory |
|
|
59
|
+
| `--name` | Dashboard label |
|
|
60
|
+
| `--command` | Full command override (skips `--shell` builder) |
|
|
61
|
+
| `--parent` | Set parent to `$FTOWN_SESSION_ID` |
|
|
62
|
+
| `--parent-id` | Explicit parent session UUID |
|
|
63
|
+
| `--model` | Cursor model name |
|
|
64
|
+
|
|
65
|
+
Returns JSON with the new `session.id` — use that id for `screen` / `grep` / `keys`.
|
|
66
|
+
|
|
67
|
+
## Typical workflow
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
CLI=~/.ftown/ftown-sessions
|
|
71
|
+
|
|
72
|
+
$CLI list
|
|
73
|
+
$CLI create --shell cursor --prompt "Run tests and report" --workdir "$PWD" --parent
|
|
74
|
+
# -> note session.id from JSON
|
|
75
|
+
|
|
76
|
+
$CLI screen <child-id> --limit 100
|
|
77
|
+
$CLI grep <child-id> --pattern 'FAIL|Error'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Environment
|
|
81
|
+
|
|
82
|
+
Spawned ftown sessions receive:
|
|
83
|
+
|
|
84
|
+
- `FTOWN_SESSION_ID` — this session (use with `--parent`)
|
|
85
|
+
- `FTOWN_HOOK_PORT` / `FTOWN_HOOK_TOKEN` — hook forwarding (not for cross-session control)
|
|
86
|
+
|
|
87
|
+
## HTTP API (optional)
|
|
88
|
+
|
|
89
|
+
The CLI wraps the loopback API. Raw access if needed:
|
|
90
|
+
|
|
91
|
+
| Method | Path | Purpose |
|
|
92
|
+
|--------|------|---------|
|
|
93
|
+
| GET | `/api/sessions` | List |
|
|
94
|
+
| POST | `/api/sessions` | Create |
|
|
95
|
+
| GET | `/api/sessions/:id/screen` | Terminal lines |
|
|
96
|
+
| POST | `/api/sessions/:id/grep` | Search |
|
|
97
|
+
| POST | `/api/sessions/:id/keys` | Send keys |
|
|
98
|
+
|
|
99
|
+
## If the CLI is missing
|
|
100
|
+
|
|
101
|
+
Start or restart **ftown-bridge** on this machine. It installs `~/.ftown/ftown-sessions`, `~/.ftown/notify.sh`, and updates this skill under `~/.agents/skills/ftown-sessions/`.
|