ftown-bridge 0.19.49 → 0.19.51
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/dist/attention-store.d.ts +1 -1
- package/dist/attention-store.js +6 -2
- package/dist/attention-store.js.map +1 -1
- package/dist/installation-manifest.d.ts +1 -1
- package/dist/installation-manifest.js +1 -1
- package/dist/installation-manifest.js.map +1 -1
- package/dist/local-api-server.js +39 -4
- package/dist/local-api-server.js.map +1 -1
- package/dist/mcp/server.js +52 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/pull-request-url.d.ts +2 -0
- package/dist/pull-request-url.js +27 -0
- package/dist/pull-request-url.js.map +1 -0
- package/dist/session-controller.d.ts +3 -0
- package/dist/session-controller.js +43 -4
- package/dist/session-controller.js.map +1 -1
- package/dist/sessions-commands.js +57 -0
- package/dist/sessions-commands.js.map +1 -1
- package/dist/solo/contract.d.ts +7 -30
- package/dist/solo/contract.js +11 -34
- package/dist/solo/contract.js.map +1 -1
- package/dist/solo/hub-manager.js +31 -63
- package/dist/solo/hub-manager.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/wire-types.d.ts +1 -0
- package/dist/wire-types.js.map +1 -1
- package/package.json +3 -3
- package/skills/ftown/SKILL.md +40 -2
- package/skills/ftown/references/sessions.md +71 -1
package/dist/solo/contract.d.ts
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* exist.
|
|
25
25
|
*/
|
|
26
26
|
/** Contract revision — bump on any material change (re-gauntlet required). */
|
|
27
|
-
export declare const SOLO_CONTRACT_REVISION =
|
|
27
|
+
export declare const SOLO_CONTRACT_REVISION = 6;
|
|
28
28
|
/** Default public LAN port (--port overrides). Children NEVER use fixed
|
|
29
29
|
* ports: hub and panel bind 127.0.0.1:0 (OS-assigned ephemeral), eliminating
|
|
30
30
|
* child port collisions entirely. */
|
|
@@ -36,13 +36,13 @@ export declare const HUB_JWT_TTL_SECONDS: number;
|
|
|
36
36
|
/** Fixed solo subject. Solo mode is single-user by definition. */
|
|
37
37
|
export declare const SOLO_USER_ID = "solo";
|
|
38
38
|
/**
|
|
39
|
-
* Audience claim REQUIRED in every hub JWT and configured as
|
|
39
|
+
* Audience claim REQUIRED in every hub JWT and configured as client.token.audience
|
|
40
40
|
* in the hub config. Minting without aud, or configuring a different value,
|
|
41
41
|
* makes every WS handshake fail with an audience mismatch.
|
|
42
42
|
*/
|
|
43
43
|
export declare const HUB_JWT_AUDIENCE = "ftown:centrifugo";
|
|
44
44
|
/** Centrifugo release to download (pinned; checksums embedded below). */
|
|
45
|
-
export declare const CENTRIFUGO_VERSION = "
|
|
45
|
+
export declare const CENTRIFUGO_VERSION = "v6.10.2";
|
|
46
46
|
/**
|
|
47
47
|
* Embedded sha256 digests for the pinned centrifugo release assets, sourced
|
|
48
48
|
* from the release's official checksums.txt at prep time (never fetched at
|
|
@@ -50,34 +50,11 @@ export declare const CENTRIFUGO_VERSION = "v5.4.9";
|
|
|
50
50
|
* darwin-arm64, darwin-amd64, linux-amd64, linux-arm64.
|
|
51
51
|
*/
|
|
52
52
|
export declare const CENTRIFUGO_SHA256: Readonly<Record<string, string>>;
|
|
53
|
-
/**
|
|
54
|
-
*
|
|
55
|
-
* production hub config's top-level keys (centrifugo/config.json, the same
|
|
56
|
-
* keys namespaces without their own override inherit). Several HUB_NAMESPACES
|
|
57
|
-
* entries below (terminal-input, commands, events lacking force_recovery/
|
|
58
|
-
* allow_history_for_subscriber, bridges lacking history_size/ttl/
|
|
59
|
-
* force_recovery) rely on these top-level defaults for presence/join_leave/
|
|
60
|
-
* history/recovery behavior — omitting them means those namespaces silently
|
|
61
|
-
* fall back to Centrifugo's OWN stricter defaults instead of production's.
|
|
62
|
-
* Deliberately excludes non-channel-option top-level keys (token secrets,
|
|
63
|
-
* api/admin/address/port/allowed_origins, log/proxy settings) and the two
|
|
64
|
-
* top-level publish/subscribe defaults (`allow_publish_for_subscriber:
|
|
65
|
-
* false`, `allow_subscribe_for_client: false`) that every HUB_NAMESPACES
|
|
66
|
-
* entry already overrides to true, so their top-level value never applies.
|
|
67
|
-
*/
|
|
53
|
+
/** Options for channels without a namespace. Named namespaces use only their
|
|
54
|
+
* own explicit options; these are not inherited by HUB_NAMESPACES. */
|
|
68
55
|
export declare const HUB_CHANNEL_DEFAULTS: Readonly<Record<string, unknown>>;
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
71
|
-
* byte-for-byte (names + options) from the production hub config at
|
|
72
|
-
* centrifugo/config.json, which targets the SAME pinned CENTRIFUGO_VERSION
|
|
73
|
-
* (v5.4.9), so no key-format translation was needed. Every namespace prefix
|
|
74
|
-
* used by a real channel (bridges:presence#solo, commands:rpc#solo,
|
|
75
|
-
* sessions:*, terminal:*, terminal-input:*, events:*)
|
|
76
|
-
* MUST have a matching entry here or Centrifugo rejects the subscribe with
|
|
77
|
-
* code 102 "unknown channel" — this list existing at all is the fix for that
|
|
78
|
-
* bug; hub-manager.test.ts drift-guards it against centrifugo/config.json so
|
|
79
|
-
* the two can never silently diverge again.
|
|
80
|
-
*/
|
|
56
|
+
/** Explicit namespace options shared with centrifugo/config.json. Keep these
|
|
57
|
+
* values identical: each named namespace is independent of without_namespace. */
|
|
81
58
|
export declare const HUB_NAMESPACES: ReadonlyArray<Readonly<Record<string, unknown>>>;
|
|
82
59
|
/**
|
|
83
60
|
* Panel (UI standalone) bundle source. Published as a GitHub release asset of
|
package/dist/solo/contract.js
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* exist.
|
|
25
25
|
*/
|
|
26
26
|
/** Contract revision — bump on any material change (re-gauntlet required). */
|
|
27
|
-
export const SOLO_CONTRACT_REVISION =
|
|
27
|
+
export const SOLO_CONTRACT_REVISION = 6;
|
|
28
28
|
// ---------- Ports ----------
|
|
29
29
|
/** Default public LAN port (--port overrides). Children NEVER use fixed
|
|
30
30
|
* ports: hub and panel bind 127.0.0.1:0 (OS-assigned ephemeral), eliminating
|
|
@@ -59,13 +59,13 @@ export const HUB_JWT_TTL_SECONDS = 12 * 60 * 60;
|
|
|
59
59
|
/** Fixed solo subject. Solo mode is single-user by definition. */
|
|
60
60
|
export const SOLO_USER_ID = 'solo';
|
|
61
61
|
/**
|
|
62
|
-
* Audience claim REQUIRED in every hub JWT and configured as
|
|
62
|
+
* Audience claim REQUIRED in every hub JWT and configured as client.token.audience
|
|
63
63
|
* in the hub config. Minting without aud, or configuring a different value,
|
|
64
64
|
* makes every WS handshake fail with an audience mismatch.
|
|
65
65
|
*/
|
|
66
66
|
export const HUB_JWT_AUDIENCE = 'ftown:centrifugo';
|
|
67
67
|
/** Centrifugo release to download (pinned; checksums embedded below). */
|
|
68
|
-
export const CENTRIFUGO_VERSION = '
|
|
68
|
+
export const CENTRIFUGO_VERSION = 'v6.10.2';
|
|
69
69
|
/**
|
|
70
70
|
* Embedded sha256 digests for the pinned centrifugo release assets, sourced
|
|
71
71
|
* from the release's official checksums.txt at prep time (never fetched at
|
|
@@ -73,26 +73,13 @@ export const CENTRIFUGO_VERSION = 'v5.4.9';
|
|
|
73
73
|
* darwin-arm64, darwin-amd64, linux-amd64, linux-arm64.
|
|
74
74
|
*/
|
|
75
75
|
export const CENTRIFUGO_SHA256 = {
|
|
76
|
-
'darwin-arm64': '
|
|
77
|
-
'darwin-amd64': '
|
|
78
|
-
'linux-amd64': '
|
|
79
|
-
'linux-arm64': '
|
|
76
|
+
'darwin-arm64': 'ca1c7b02763280a97a4605a6a359ef90c831f6520727b48b09eab8281f07c792',
|
|
77
|
+
'darwin-amd64': 'cdb1ce846103750cc2eb24b2998aeaacb97dc189a7584b00f11a9bcb7d7bc2b5',
|
|
78
|
+
'linux-amd64': 'fea3767686d2bcc55df02094cc323268d9a02bb255eb60884d9e74ce4162eb45',
|
|
79
|
+
'linux-arm64': '5bfaf520235db64ea1339247f4d6b14c0738979fedae187c57aa24c1861db5c2',
|
|
80
80
|
};
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
* production hub config's top-level keys (centrifugo/config.json, the same
|
|
84
|
-
* keys namespaces without their own override inherit). Several HUB_NAMESPACES
|
|
85
|
-
* entries below (terminal-input, commands, events lacking force_recovery/
|
|
86
|
-
* allow_history_for_subscriber, bridges lacking history_size/ttl/
|
|
87
|
-
* force_recovery) rely on these top-level defaults for presence/join_leave/
|
|
88
|
-
* history/recovery behavior — omitting them means those namespaces silently
|
|
89
|
-
* fall back to Centrifugo's OWN stricter defaults instead of production's.
|
|
90
|
-
* Deliberately excludes non-channel-option top-level keys (token secrets,
|
|
91
|
-
* api/admin/address/port/allowed_origins, log/proxy settings) and the two
|
|
92
|
-
* top-level publish/subscribe defaults (`allow_publish_for_subscriber:
|
|
93
|
-
* false`, `allow_subscribe_for_client: false`) that every HUB_NAMESPACES
|
|
94
|
-
* entry already overrides to true, so their top-level value never applies.
|
|
95
|
-
*/
|
|
81
|
+
/** Options for channels without a namespace. Named namespaces use only their
|
|
82
|
+
* own explicit options; these are not inherited by HUB_NAMESPACES. */
|
|
96
83
|
export const HUB_CHANNEL_DEFAULTS = {
|
|
97
84
|
allow_history_for_subscriber: true,
|
|
98
85
|
presence: true,
|
|
@@ -103,18 +90,8 @@ export const HUB_CHANNEL_DEFAULTS = {
|
|
|
103
90
|
history_ttl: '24h',
|
|
104
91
|
force_recovery: true,
|
|
105
92
|
};
|
|
106
|
-
/**
|
|
107
|
-
*
|
|
108
|
-
* byte-for-byte (names + options) from the production hub config at
|
|
109
|
-
* centrifugo/config.json, which targets the SAME pinned CENTRIFUGO_VERSION
|
|
110
|
-
* (v5.4.9), so no key-format translation was needed. Every namespace prefix
|
|
111
|
-
* used by a real channel (bridges:presence#solo, commands:rpc#solo,
|
|
112
|
-
* sessions:*, terminal:*, terminal-input:*, events:*)
|
|
113
|
-
* MUST have a matching entry here or Centrifugo rejects the subscribe with
|
|
114
|
-
* code 102 "unknown channel" — this list existing at all is the fix for that
|
|
115
|
-
* bug; hub-manager.test.ts drift-guards it against centrifugo/config.json so
|
|
116
|
-
* the two can never silently diverge again.
|
|
117
|
-
*/
|
|
93
|
+
/** Explicit namespace options shared with centrifugo/config.json. Keep these
|
|
94
|
+
* values identical: each named namespace is independent of without_namespace. */
|
|
118
95
|
export const HUB_NAMESPACES = [
|
|
119
96
|
{
|
|
120
97
|
name: 'terminal',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/solo/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,8BAA8B;AAE9B;;qCAEqC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAE7E,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,mCAAmC;AACnC,+EAA+E;AAC/E,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAC9E,iDAAiD;AACjD,4EAA4E;AAC5E,gEAAgE;AAChE,yEAAyE;AACzE,8EAA8E;AAC9E,kEAAkE;AAElE,oDAAoD;AAEpD,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEhD,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/solo/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/solo/hub-manager.js
CHANGED
|
@@ -60,8 +60,8 @@ export function resolvePlatformTriple(platform = process.platform, arch = proces
|
|
|
60
60
|
}
|
|
61
61
|
export function assetUrl(version, triple) {
|
|
62
62
|
const bare = version.startsWith('v') ? version.slice(1) : version;
|
|
63
|
-
// Release assets use UNDERSCORES between parts (
|
|
64
|
-
// while our platform triple is dashed — verified against the
|
|
63
|
+
// Release assets use UNDERSCORES between parts (centrifugo_6.10.2_darwin_arm64.tar.gz)
|
|
64
|
+
// while our platform triple is dashed — verified against the v6.10.2 checksums.txt.
|
|
65
65
|
const assetTriple = triple.split('-').join('_');
|
|
66
66
|
return `https://github.com/centrifugal/centrifugo/releases/download/${version}/centrifugo_${bare}_${assetTriple}.tar.gz`;
|
|
67
67
|
}
|
|
@@ -198,69 +198,36 @@ export async function ensureHubBinary(opts) {
|
|
|
198
198
|
}
|
|
199
199
|
// ---------- Config write (frozen keys, S7) ----------
|
|
200
200
|
/**
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
* means no anonymous client connections. address/port are operational keys so
|
|
206
|
-
* the child binds loopback on the ephemeral port the integrator assigned.
|
|
201
|
+
* Nested Centrifugo v6 configuration. Admin and server HTTP API stay disabled;
|
|
202
|
+
* the hub binds only loopback on the port assigned by the Solo integrator.
|
|
203
|
+
* Named namespaces retain their own explicit permission/retention settings;
|
|
204
|
+
* HUB_CHANNEL_DEFAULTS applies only to channels without a namespace.
|
|
207
205
|
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
* allow_history_for_subscriber) that several HUB_NAMESPACES entries below
|
|
212
|
-
* have no per-namespace override for and therefore inherit — without this,
|
|
213
|
-
* those namespaces would silently fall back to Centrifugo's own stricter
|
|
214
|
-
* built-in defaults instead of production's.
|
|
215
|
-
*
|
|
216
|
-
* `namespaces: HUB_NAMESPACES` is the production namespace table (contract-
|
|
217
|
-
* frozen, drift-guarded in hub-manager.test.ts against centrifugo/config.json)
|
|
218
|
-
* — WITHOUT it every namespaced channel (bridges:presence#solo, commands:rpc
|
|
219
|
-
* #solo, sessions:*, terminal:*, terminal-input:*,
|
|
220
|
-
* events:*) is rejected by Centrifugo with code 102 "unknown channel", which
|
|
221
|
-
* is why the panel could never see the bridge or create sessions in solo
|
|
222
|
-
* mode. `allow_user_limited_channels: true` is required alongside it because
|
|
223
|
-
* every one of those channels carries the `#solo` user-limited-channel
|
|
224
|
-
* suffix. `client_channel_limit` / `client_queue_max_size` /
|
|
225
|
-
* `client_stale_close_delay` / `websocket_message_size_limit` /
|
|
226
|
-
* `ping_interval` / `pong_timeout` are carried over from production so a
|
|
227
|
-
* single-user LAN client isn't held to defaults tuned for a multi-tenant
|
|
228
|
-
* deployment. `websocket_compression` stays false (see below) even though
|
|
229
|
-
* production enables it — that divergence is deliberate, not part of this
|
|
230
|
-
* fix.
|
|
231
|
-
*
|
|
232
|
-
* `allowed_origins: []` is deliberate, not an oversight: centrifugo v5
|
|
233
|
-
* rejects (403s) any handshake that carries an Origin header when this list
|
|
234
|
-
* is empty. That's fine here because same-origin is enforced ourselves, one
|
|
235
|
-
* hop earlier, in the front proxy (ws-proxy.ts `handleHubUpgrade` /
|
|
236
|
-
* `isSameOrigin`), which also strips the Origin header before forwarding —
|
|
237
|
-
* so centrifugo never sees one to judge. The hub additionally only ever
|
|
238
|
-
* binds loopback (127.0.0.1, see `address` below), so it is never reachable
|
|
239
|
-
* directly from a browser regardless. Do not "fix" this by populating
|
|
240
|
-
* allowed_origins; that would just duplicate — and could drift from — the
|
|
241
|
-
* check ws-proxy.ts already owns.
|
|
206
|
+
* Empty client.allowed_origins is deliberate: ws-proxy.ts enforces same-origin
|
|
207
|
+
* at the public front and strips Origin before forwarding to this private hub.
|
|
208
|
+
* WebSocket compression stays disabled for Solo, matching its previous policy.
|
|
242
209
|
*/
|
|
243
210
|
function hubConfigObject(port, secret) {
|
|
244
211
|
return {
|
|
245
|
-
address: '127.0.0.1',
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
212
|
+
http_server: { address: '127.0.0.1', port },
|
|
213
|
+
client: {
|
|
214
|
+
token: { hmac_secret_key: secret, audience: HUB_JWT_AUDIENCE },
|
|
215
|
+
allowed_origins: [],
|
|
216
|
+
allow_anonymous_connect_without_token: false,
|
|
217
|
+
channel_limit: 256,
|
|
218
|
+
queue_max_size: 67108864,
|
|
219
|
+
stale_close_delay: '30s',
|
|
220
|
+
ping_interval: '10s',
|
|
221
|
+
pong_timeout: '5s',
|
|
222
|
+
},
|
|
223
|
+
websocket: { compression: false, message_size_limit: 33554432 },
|
|
224
|
+
admin: { enabled: false },
|
|
225
|
+
http_api: { disabled: true },
|
|
226
|
+
health: { enabled: true },
|
|
227
|
+
channel: {
|
|
228
|
+
without_namespace: { ...HUB_CHANNEL_DEFAULTS, allow_user_limited_channels: true },
|
|
229
|
+
namespaces: HUB_NAMESPACES,
|
|
230
|
+
},
|
|
264
231
|
};
|
|
265
232
|
}
|
|
266
233
|
export async function writeHubConfig(configPath, opts) {
|
|
@@ -333,8 +300,9 @@ export async function startHub(opts) {
|
|
|
333
300
|
let secret;
|
|
334
301
|
try {
|
|
335
302
|
const parsed = JSON.parse(await readFile(opts.configPath, 'utf8'));
|
|
336
|
-
port = Number(parsed.port);
|
|
337
|
-
|
|
303
|
+
port = Number(parsed.http_server?.port);
|
|
304
|
+
const configuredSecret = parsed.client?.token?.hmac_secret_key;
|
|
305
|
+
secret = typeof configuredSecret === 'string' ? configuredSecret : '';
|
|
338
306
|
}
|
|
339
307
|
catch (err) {
|
|
340
308
|
throw new HubStartError(`cannot read hub config ${opts.configPath}: ${errorMessage(err)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-manager.js","sourceRoot":"","sources":["../../src/solo/hub-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hub-manager.js","sourceRoot":"","sources":["../../src/solo/hub-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
package/dist/wire-types.d.ts
CHANGED
package/dist/wire-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire-types.js","sourceRoot":"","sources":["../src/wire-types.ts"],"names":[],"mappings":"AAAA,0EAA0E;
|
|
1
|
+
{"version":3,"file":"wire-types.js","sourceRoot":"","sources":["../src/wire-types.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAyD1E,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAgB3F,MAAM,CAAC,MAAM,uBAAuB,GAAG,oBAA6B,CAAC;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,0DAA0D,CAAC;AAErG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,UAAmB;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,CAAc;IAC9C,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AACpE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ftown-bridge",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.51",
|
|
4
4
|
"description": "CLI bridge for ftown — generic PTY-over-Centrifugo relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"mcp": "tsx src/mcp-cli.ts"
|
|
33
33
|
},
|
|
34
34
|
"engines": {
|
|
35
|
-
"node": ">=
|
|
35
|
+
"node": "^22.23.4 || ^24.22.1 || >=26.12.1"
|
|
36
36
|
},
|
|
37
37
|
"keywords": [
|
|
38
38
|
"pty",
|
|
@@ -74,5 +74,5 @@
|
|
|
74
74
|
"tsx": "^4.19.0",
|
|
75
75
|
"typescript": "^5.7.0"
|
|
76
76
|
},
|
|
77
|
-
"gitHead": "
|
|
77
|
+
"gitHead": "c2d5e7b453399931f75f6fcf5e83407aed6f822f"
|
|
78
78
|
}
|
package/skills/ftown/SKILL.md
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
name: ftown
|
|
3
3
|
description: >-
|
|
4
4
|
Control ftown sessions: create/list/read/drive sibling sessions, send ftown
|
|
5
|
-
mail, and coordinate worker agents.
|
|
6
|
-
agents, bridge mail/inbox, or explicitly
|
|
5
|
+
mail, request human attention, link session PRs, and coordinate worker agents.
|
|
6
|
+
Use for ftown sessions, child/sibling agents, bridge mail/inbox, or explicitly
|
|
7
|
+
requested orchestration.
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
# ftown
|
|
@@ -39,6 +40,9 @@ entrypoint with `--repair`.
|
|
|
39
40
|
ftown sessions list
|
|
40
41
|
ftown sessions create --prompt "Review the auth module" --workdir "$PWD" --parent
|
|
41
42
|
ftown sessions screen <session-id> --limit 200
|
|
43
|
+
ftown sessions attention --message "Please review the migration plan" --title "Review requested"
|
|
44
|
+
ftown sessions pr https://github.com/owner/repo/pull/123
|
|
45
|
+
ftown sessions pr --clear
|
|
42
46
|
ftown harness mail send <session-id> --type task "review the API client"
|
|
43
47
|
ftown harness mail read
|
|
44
48
|
ftown env --help
|
|
@@ -66,6 +70,40 @@ Prefer mail for agent communication; use terminal key injection only when the
|
|
|
66
70
|
task needs it. Inspect peers with `ftown sessions list` and
|
|
67
71
|
`ftown sessions screen <id> --limit 100`.
|
|
68
72
|
|
|
73
|
+
## Human attention and pull requests
|
|
74
|
+
|
|
75
|
+
Use `ftown sessions attention --message "..."` when you need human input. It
|
|
76
|
+
creates a durable attention record and uses the dashboard's existing notice flow;
|
|
77
|
+
it does not answer a prompt or guarantee a push notification. Push remains opt-in
|
|
78
|
+
and requires a supported hosted session. Repeating an unresolved request updates
|
|
79
|
+
its occurrence count; after an uncertain result, inspect the existing request
|
|
80
|
+
before retrying.
|
|
81
|
+
|
|
82
|
+
Attach one GitHub pull request with `ftown sessions pr <URL>`; another URL
|
|
83
|
+
replaces it and `--clear` removes it. This records a link without fetching GitHub
|
|
84
|
+
or creating a PR. Both commands target trimmed `$FTOWN_SESSION_ID` unless you
|
|
85
|
+
supply `--session-id <id>`; they never guess identity from the working directory.
|
|
86
|
+
Older bridges report `bridge_upgrade_required` before mutation.
|
|
87
|
+
|
|
88
|
+
Remote MCP callers use `attention_request` with explicit `machine` and
|
|
89
|
+
`sessionId`, or `sessions_update` with `pullRequestUrl` (string to set, null to
|
|
90
|
+
clear). Mutation tools require control access; remote callers have no automatic
|
|
91
|
+
local self identity. Keep the returned attention event ID for existing inbox,
|
|
92
|
+
acknowledge and resolve operations, which do not answer the agent's question.
|
|
93
|
+
|
|
94
|
+
For tasks performed in an FTown session, associate the task's GitHub PR when
|
|
95
|
+
created or updated, before the completion notice: use `ftown sessions pr <URL>`
|
|
96
|
+
or MCP `sessions_update.pullRequestUrl`. Omit this step for tasks without a PR;
|
|
97
|
+
never invent a PR or guess a session identity.
|
|
98
|
+
|
|
99
|
+
Once the task is complete, request user attention **once per completed task**,
|
|
100
|
+
before the final handoff, using `ftown sessions attention --title 'Work complete'
|
|
101
|
+
--message "<truthful outcome, checks and PR summary>"` or MCP `attention_request`.
|
|
102
|
+
Do not send a completion notice every turn; retain the uncertain-result guidance
|
|
103
|
+
above. Children must still report their result to the parent as assigned; user
|
|
104
|
+
attention does not replace that reporting. See the completion example in
|
|
105
|
+
`references/sessions.md`.
|
|
106
|
+
|
|
69
107
|
## Cleanup
|
|
70
108
|
|
|
71
109
|
Session cleanup is an explicit user or orchestrator action. Reporting a result
|
|
@@ -51,6 +51,51 @@ ftown sessions archive
|
|
|
51
51
|
ftown sessions revive <session-id>
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
## Ask the human or associate a pull request
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Request human input for this session (JSON {event} by default)
|
|
58
|
+
ftown sessions attention --message "Please review the migration plan" --title "Review requested"
|
|
59
|
+
|
|
60
|
+
# Set or replace this session's single GitHub PR link (JSON {session})
|
|
61
|
+
ftown sessions pr https://github.com/owner/repo/pull/123
|
|
62
|
+
|
|
63
|
+
# Clear the association
|
|
64
|
+
ftown sessions pr --clear
|
|
65
|
+
|
|
66
|
+
# Explicit target overrides FTOWN_SESSION_ID for either command
|
|
67
|
+
ftown sessions attention --session-id <id> --message "Which approach should I take?"
|
|
68
|
+
ftown sessions pr --session-id <id> https://github.com/owner/repo/pull/123
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Both commands use trimmed `FTOWN_SESSION_ID` when `--session-id` is omitted;
|
|
72
|
+
missing/invalid identity, empty/oversized text, malformed URLs and contradictory
|
|
73
|
+
arguments fail before transport. There is no working-directory or latest-session
|
|
74
|
+
fallback. Title is optional (default `Session needs your input`, max 200 characters);
|
|
75
|
+
message is required (max 2000). Controls and common credentials are sanitized.
|
|
76
|
+
`--plain` prints a concise success summary. `--help` is read-only.
|
|
77
|
+
|
|
78
|
+
Attention persists an `agent_needs_input` event, returns its exact ID and updates
|
|
79
|
+
the existing dashboard attention flow. Logical duplicate unresolved requests
|
|
80
|
+
coalesce while recording occurrences; resolving it permits a new incident.
|
|
81
|
+
Only creation triggers notification, and hosted push remains opt-in with existing
|
|
82
|
+
session/harness eligibility. Do not automatically retry an uncertain mutation.
|
|
83
|
+
Acknowledging/resolving an event never answers or approves a CLI prompt.
|
|
84
|
+
|
|
85
|
+
PR links accept only HTTPS GitHub `/owner/repo/pull/<positive-number>` URLs.
|
|
86
|
+
Outer whitespace, query/fragment and a trailing slash are normalized; credentials,
|
|
87
|
+
nondefault ports and other paths/hosts are rejected. No GitHub request is made.
|
|
88
|
+
Attaching/replacing/clearing is metadata-only; omitting it on an update preserves
|
|
89
|
+
its value. New sessions/children do not implicitly inherit a parent's PR.
|
|
90
|
+
|
|
91
|
+
New commands probe the exact bridge capability before writing; update old bridges
|
|
92
|
+
with the exact version setup command in their readiness hint. For remote MCP,
|
|
93
|
+
`attention_request` requires explicit `{machine, sessionId, message, title?}` and
|
|
94
|
+
returns `{machine, sessionId, event}`. `sessions_update` accepts `pullRequestUrl`
|
|
95
|
+
(string or null), alongside existing name/parent fields. A mixed PR+name update
|
|
96
|
+
rejects an old bridge before changing either field. Read-only MCP clients cannot
|
|
97
|
+
see these mutation tools; control authorization and machine ownership still apply.
|
|
98
|
+
|
|
54
99
|
## Messaging (mail)
|
|
55
100
|
|
|
56
101
|
`tell` posts to the target session's **inbox**. Mail is delivered into the
|
|
@@ -117,6 +162,30 @@ ftown sessions screen <child-id> --limit 100
|
|
|
117
162
|
ftown sessions grep <child-id> --pattern 'FAIL|Error'
|
|
118
163
|
```
|
|
119
164
|
|
|
165
|
+
### Completion handoff
|
|
166
|
+
|
|
167
|
+
When the task creates or updates a GitHub PR, associate its actual URL with the
|
|
168
|
+
FTown session before the completion notice. Then request user attention once the
|
|
169
|
+
task is complete, before the final handoff. Replace the sample URL and summary
|
|
170
|
+
below with truthful outcomes and checks (including checks not run):
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
ftown sessions pr https://github.com/owner/repo/pull/123
|
|
174
|
+
ftown sessions attention --title 'Work complete' \
|
|
175
|
+
--message 'Outcome: <actual result>. Checks: <actual results or not run>. PR: https://github.com/owner/repo/pull/123'
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
For tasks without a PR, omit the PR command and PR summary. Use the verified
|
|
179
|
+
`FTOWN_SESSION_ID` or explicit `--session-id`; never guess a target. MCP callers
|
|
180
|
+
instead use `sessions_update` with `pullRequestUrl` when applicable, then
|
|
181
|
+
`attention_request` with title `Work complete` and the same truthful summary,
|
|
182
|
+
always supplying explicit `machine` and `sessionId`.
|
|
183
|
+
|
|
184
|
+
Send one completion request per completed task, not repeated per-turn notices.
|
|
185
|
+
Logical duplicate coalescing does not justify retries after an uncertain outcome;
|
|
186
|
+
inspect the existing request first, as described above. Child agents still send
|
|
187
|
+
their assigned result to the parent; the user attention request is additional.
|
|
188
|
+
|
|
120
189
|
## Environment
|
|
121
190
|
|
|
122
191
|
Spawned ftown sessions receive:
|
|
@@ -145,7 +214,8 @@ The CLI wraps the loopback API. Raw access if needed:
|
|
|
145
214
|
|--------|------|---------|
|
|
146
215
|
| GET | `/api/sessions` | List |
|
|
147
216
|
| POST | `/api/sessions` | Create |
|
|
148
|
-
| PATCH | `/api/sessions/:id` | Rename
|
|
217
|
+
| PATCH | `/api/sessions/:id` | Rename, move or associate a PR (`{ name?, parentSessionId?, pullRequestUrl? }`; `null` detaches/clears) |
|
|
218
|
+
| POST | `/api/sessions/:id/attention` | Request human input (`{ message, title? }`) → `{ event }` |
|
|
149
219
|
| GET | `/api/sessions/:id/screen` | Terminal lines |
|
|
150
220
|
| POST | `/api/sessions/:id/grep` | Search |
|
|
151
221
|
| POST | `/api/sessions/:id/keys` | Send keys |
|