@knpkv/herdr-connect 0.2.0
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/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/activity-store.d.ts +11 -0
- package/dist/activity-store.d.ts.map +1 -0
- package/dist/activity-store.js +76 -0
- package/dist/activity-store.js.map +1 -0
- package/dist/client-entry.d.ts +2 -0
- package/dist/client-entry.d.ts.map +1 -0
- package/dist/client-entry.js +11 -0
- package/dist/client-entry.js.map +1 -0
- package/dist/client.d.ts +86 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +453 -0
- package/dist/client.js.map +1 -0
- package/dist/directory.d.ts +159 -0
- package/dist/directory.d.ts.map +1 -0
- package/dist/directory.js +186 -0
- package/dist/directory.js.map +1 -0
- package/dist/errors.d.ts +62 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +36 -0
- package/dist/errors.js.map +1 -0
- package/dist/forest.d.ts +61 -0
- package/dist/forest.d.ts.map +1 -0
- package/dist/forest.js +90 -0
- package/dist/forest.js.map +1 -0
- package/dist/id.d.ts +4 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +10 -0
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/terminal-release.d.ts +6 -0
- package/dist/internal/terminal-release.d.ts.map +1 -0
- package/dist/internal/terminal-release.js +13 -0
- package/dist/internal/terminal-release.js.map +1 -0
- package/dist/keyboard.d.ts +2 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +19 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/model.d.ts +144 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +104 -0
- package/dist/model.js.map +1 -0
- package/dist/relationship-store.d.ts +66 -0
- package/dist/relationship-store.d.ts.map +1 -0
- package/dist/relationship-store.js +246 -0
- package/dist/relationship-store.js.map +1 -0
- package/dist/target.d.ts +83 -0
- package/dist/target.d.ts.map +1 -0
- package/dist/target.js +56 -0
- package/dist/target.js.map +1 -0
- package/dist/terminal-input.d.ts +30 -0
- package/dist/terminal-input.d.ts.map +1 -0
- package/dist/terminal-input.js +95 -0
- package/dist/terminal-input.js.map +1 -0
- package/dist/terminal-setup.d.ts +10 -0
- package/dist/terminal-setup.d.ts.map +1 -0
- package/dist/terminal-setup.js +11 -0
- package/dist/terminal-setup.js.map +1 -0
- package/dist/terminal-theme.d.ts +3 -0
- package/dist/terminal-theme.d.ts.map +1 -0
- package/dist/terminal-theme.js +3 -0
- package/dist/terminal-theme.js.map +1 -0
- package/dist/terminal-viewport.d.ts +12 -0
- package/dist/terminal-viewport.d.ts.map +1 -0
- package/dist/terminal-viewport.js +21 -0
- package/dist/terminal-viewport.js.map +1 -0
- package/dist/terminal.d.ts +794 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +166 -0
- package/dist/terminal.js.map +1 -0
- package/dist/view.d.ts +51 -0
- package/dist/view.d.ts.map +1 -0
- package/dist/view.js +210 -0
- package/dist/view.js.map +1 -0
- package/package.json +84 -0
- package/src/styles.css +527 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { decodeBoundedResponseJson } from "@knpkv/herdr-fleet";
|
|
2
|
+
import { Effect, Result, Schema } from "effect";
|
|
3
|
+
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
4
|
+
import { ConnectPeerError } from "./errors.js";
|
|
5
|
+
import { buildConnectForest } from "./forest.js";
|
|
6
|
+
import { connectAgentId } from "./id.js";
|
|
7
|
+
import { connectAgentPageMaxRecords, FleetConnectAgentPage, FleetConnectAgents, LocalConnectAgents } from "./model.js";
|
|
8
|
+
const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
9
|
+
const compareConnectAgents = (left, right) => {
|
|
10
|
+
const host = compareText(left.host.toLowerCase(), right.host.toLowerCase());
|
|
11
|
+
return host === 0 ? compareText(left.id, right.id) : host;
|
|
12
|
+
};
|
|
13
|
+
export const pageFleetConnectAgents = Effect.fn("HerdrConnect.pageFleetAgents")(function* (directory, cursor) {
|
|
14
|
+
const sorted = directory.agents.toSorted(compareConnectAgents);
|
|
15
|
+
const nextIndex = cursor === null
|
|
16
|
+
? 0
|
|
17
|
+
: sorted.findIndex(({ host, id }) => {
|
|
18
|
+
const hostOrder = compareText(host.toLowerCase(), cursor.host.toLowerCase());
|
|
19
|
+
return hostOrder > 0 || (hostOrder === 0 && compareText(id, cursor.id) > 0);
|
|
20
|
+
});
|
|
21
|
+
const start = nextIndex === -1 ? sorted.length : nextIndex;
|
|
22
|
+
const agents = sorted.slice(start, start + connectAgentPageMaxRecords);
|
|
23
|
+
const last = agents.at(-1);
|
|
24
|
+
const nextCursor = start + agents.length < sorted.length && last !== undefined
|
|
25
|
+
? { host: last.host, id: last.id }
|
|
26
|
+
: null;
|
|
27
|
+
return yield* Schema.decodeUnknownEffect(FleetConnectAgentPage)({
|
|
28
|
+
agents,
|
|
29
|
+
failures: cursor === null ? directory.failures : [],
|
|
30
|
+
nextCursor
|
|
31
|
+
}).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: "fleet", reason: "invalid_response" })));
|
|
32
|
+
});
|
|
33
|
+
export const localConnectAgents = Effect.fn("HerdrConnect.localAgents")(function* (config, source, store, relationshipStore, observedAt) {
|
|
34
|
+
const durableWorkers = yield* source.workers().pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "unavailable" })));
|
|
35
|
+
const inventory = yield* source.agents().pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "unavailable" })));
|
|
36
|
+
if (!inventory.available) {
|
|
37
|
+
return yield* new ConnectPeerError({
|
|
38
|
+
cause: inventory.error,
|
|
39
|
+
host: config.host,
|
|
40
|
+
reason: "unavailable"
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const identified = yield* Effect.forEach(inventory.agents, (agent) => Effect.gen(function* () {
|
|
44
|
+
const id = agent.agentId === null
|
|
45
|
+
? yield* connectAgentId(config.host, agent.paneId).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "unavailable" })))
|
|
46
|
+
: agent.agentId;
|
|
47
|
+
return { agent, id };
|
|
48
|
+
}));
|
|
49
|
+
const durableObservations = durableWorkers.map((worker) => ({
|
|
50
|
+
metadata: worker.relationship === undefined
|
|
51
|
+
? {
|
|
52
|
+
agentId: worker.agentId,
|
|
53
|
+
host: worker.host,
|
|
54
|
+
observedAt: worker.terminalObservedAt ?? 0,
|
|
55
|
+
paneId: worker.paneId
|
|
56
|
+
}
|
|
57
|
+
: {
|
|
58
|
+
agentId: worker.agentId,
|
|
59
|
+
host: worker.host,
|
|
60
|
+
observedAt: worker.terminalObservedAt ?? 0,
|
|
61
|
+
paneId: worker.paneId,
|
|
62
|
+
relationship: worker.relationship
|
|
63
|
+
},
|
|
64
|
+
source: "durable_worker"
|
|
65
|
+
}));
|
|
66
|
+
const liveObservations = identified.map(({ agent, id }) => ({
|
|
67
|
+
metadata: agent.parentAgentId === null || agent.relation === null
|
|
68
|
+
? {
|
|
69
|
+
agentId: id,
|
|
70
|
+
host: config.host,
|
|
71
|
+
observedAt,
|
|
72
|
+
paneId: agent.paneId
|
|
73
|
+
}
|
|
74
|
+
: {
|
|
75
|
+
agentId: id,
|
|
76
|
+
host: config.host,
|
|
77
|
+
observedAt,
|
|
78
|
+
paneId: agent.paneId,
|
|
79
|
+
relationship: {
|
|
80
|
+
parentAgentId: agent.parentAgentId,
|
|
81
|
+
relation: agent.relation
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
source: "trusted_live_inventory"
|
|
85
|
+
}));
|
|
86
|
+
const persisted = yield* relationshipStore.persistAll([
|
|
87
|
+
...durableObservations,
|
|
88
|
+
...liveObservations
|
|
89
|
+
]).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "invalid_response" })));
|
|
90
|
+
const persistedByAgent = new Map(persisted.map((metadata) => [
|
|
91
|
+
`${metadata.host.toLowerCase()}\u0000${metadata.agentId}`,
|
|
92
|
+
metadata
|
|
93
|
+
]));
|
|
94
|
+
const counts = new Map();
|
|
95
|
+
const agents = yield* Effect.forEach(identified, ({ agent, id }) => Effect.gen(function* () {
|
|
96
|
+
const next = (counts.get(agent.kind) ?? 0) + 1;
|
|
97
|
+
counts.set(agent.kind, next);
|
|
98
|
+
const relationship = persistedByAgent.get(`${config.host.toLowerCase()}\u0000${id}`);
|
|
99
|
+
if (relationship === undefined) {
|
|
100
|
+
return yield* new ConnectPeerError({ cause: id, host: config.host, reason: "invalid_response" });
|
|
101
|
+
}
|
|
102
|
+
const lastActivityAt = yield* store
|
|
103
|
+
.observe(config.host, id, agent.activityRevision, observedAt)
|
|
104
|
+
.pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "unavailable" })));
|
|
105
|
+
const connectAgent = {
|
|
106
|
+
host: config.host,
|
|
107
|
+
id,
|
|
108
|
+
kind: agent.kind,
|
|
109
|
+
lastActivityAt,
|
|
110
|
+
name: agent.name.includes(agent.paneId) ? `${agent.kind} agent ${next}` : agent.name,
|
|
111
|
+
state: agent.status,
|
|
112
|
+
work: agent.work
|
|
113
|
+
};
|
|
114
|
+
return relationship.relationship === undefined
|
|
115
|
+
? connectAgent
|
|
116
|
+
: {
|
|
117
|
+
...connectAgent,
|
|
118
|
+
relationship: relationship.relationship
|
|
119
|
+
};
|
|
120
|
+
}));
|
|
121
|
+
const local = yield* Schema.decodeUnknownEffect(LocalConnectAgents)({ agents, host: config.host }).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "invalid_response" })));
|
|
122
|
+
yield* buildConnectForest(local.agents).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: config.host, reason: "invalid_response" })));
|
|
123
|
+
return local;
|
|
124
|
+
});
|
|
125
|
+
export const fetchPeerConnectAgents = Effect.fn("HerdrConnect.fetchPeerAgents")(function* (peer) {
|
|
126
|
+
if (!peer.online) {
|
|
127
|
+
return yield* new ConnectPeerError({ cause: peer.host, host: peer.host, reason: "offline" });
|
|
128
|
+
}
|
|
129
|
+
if (peer.agentsUrl === null) {
|
|
130
|
+
return yield* new ConnectPeerError({ cause: peer.host, host: peer.host, reason: "unavailable" });
|
|
131
|
+
}
|
|
132
|
+
const client = yield* HttpClient.HttpClient;
|
|
133
|
+
const response = yield* client.get(peer.agentsUrl).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: peer.host, reason: "request_failed" })));
|
|
134
|
+
if (response.status < 200 || response.status >= 300) {
|
|
135
|
+
return yield* new ConnectPeerError({
|
|
136
|
+
cause: response.status,
|
|
137
|
+
host: peer.host,
|
|
138
|
+
reason: "request_failed"
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const summary = yield* decodeBoundedResponseJson(response, LocalConnectAgents).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: peer.host, reason: "invalid_response" })));
|
|
142
|
+
if (summary.host.toLowerCase() !== peer.host.toLowerCase()) {
|
|
143
|
+
return yield* new ConnectPeerError({
|
|
144
|
+
cause: summary.host,
|
|
145
|
+
host: peer.host,
|
|
146
|
+
reason: "invalid_response"
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
const foreignAgent = summary.agents.find((agent) => agent.host.toLowerCase() !== peer.host.toLowerCase());
|
|
150
|
+
if (foreignAgent !== undefined) {
|
|
151
|
+
return yield* new ConnectPeerError({
|
|
152
|
+
cause: foreignAgent.host,
|
|
153
|
+
host: peer.host,
|
|
154
|
+
reason: "invalid_response"
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
yield* buildConnectForest(summary.agents).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: peer.host, reason: "invalid_response" })));
|
|
158
|
+
return summary;
|
|
159
|
+
}, (effect, peer) => effect.pipe(Effect.timeoutOrElse({
|
|
160
|
+
duration: "1500 millis",
|
|
161
|
+
orElse: () => Effect.fail(new ConnectPeerError({ cause: 1_500, host: peer.host, reason: "timeout" }))
|
|
162
|
+
})));
|
|
163
|
+
export const fleetConnectAgents = Effect.fn("HerdrConnect.fleetAgents")(function* (local, peers) {
|
|
164
|
+
const localResult = yield* Effect.result(local);
|
|
165
|
+
const agents = Result.isSuccess(localResult) ? [...localResult.success.agents] : [];
|
|
166
|
+
const failures = Result.isFailure(localResult)
|
|
167
|
+
? [{ host: localResult.failure.host, reason: localResult.failure.reason }]
|
|
168
|
+
: [];
|
|
169
|
+
const results = yield* Effect.all(peers.map((peer) => Effect.result(fetchPeerConnectAgents(peer)).pipe(Effect.map((result) => ({ peer, result })))), { concurrency: 4 });
|
|
170
|
+
for (const { peer, result } of results) {
|
|
171
|
+
if (Result.isSuccess(result)) {
|
|
172
|
+
for (const agent of result.success.agents)
|
|
173
|
+
agents.push(agent);
|
|
174
|
+
}
|
|
175
|
+
else
|
|
176
|
+
failures.push({ host: peer.host, reason: result.failure.reason });
|
|
177
|
+
}
|
|
178
|
+
const fleet = yield* Schema.decodeUnknownEffect(FleetConnectAgents)({ agents, failures }).pipe(Effect.mapError((cause) => new ConnectPeerError({
|
|
179
|
+
cause,
|
|
180
|
+
host: "fleet",
|
|
181
|
+
reason: "invalid_response"
|
|
182
|
+
})));
|
|
183
|
+
yield* buildConnectForest(fleet.agents).pipe(Effect.mapError((cause) => new ConnectPeerError({ cause, host: "fleet", reason: "invalid_response" })));
|
|
184
|
+
return fleet;
|
|
185
|
+
});
|
|
186
|
+
//# sourceMappingURL=directory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.js","sourceRoot":"","sources":["../src/directory.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
declare const ConnectTargetError_base: Schema.Class<ConnectTargetError, Schema.TaggedStruct<"ConnectTargetError", {
|
|
3
|
+
readonly reason: Schema.Literals<readonly ["malformed", "unknown"]>;
|
|
4
|
+
}>, import("effect/Cause").YieldableError>;
|
|
5
|
+
export declare class ConnectTargetError extends ConnectTargetError_base {
|
|
6
|
+
}
|
|
7
|
+
declare const ConnectBootstrapError_base: Schema.Class<ConnectBootstrapError, Schema.TaggedStruct<"ConnectBootstrapError", {
|
|
8
|
+
readonly detail: Schema.String;
|
|
9
|
+
}>, import("effect/Cause").YieldableError>;
|
|
10
|
+
export declare class ConnectBootstrapError extends ConnectBootstrapError_base {
|
|
11
|
+
}
|
|
12
|
+
declare const ConnectPeerError_base: Schema.Class<ConnectPeerError, Schema.TaggedStruct<"ConnectPeerError", {
|
|
13
|
+
readonly cause: Schema.Defect;
|
|
14
|
+
readonly host: Schema.String;
|
|
15
|
+
readonly reason: Schema.Literals<readonly ["offline", "unavailable", "timeout", "request_failed", "invalid_response"]>;
|
|
16
|
+
}>, import("effect/Cause").YieldableError>;
|
|
17
|
+
export declare class ConnectPeerError extends ConnectPeerError_base {
|
|
18
|
+
}
|
|
19
|
+
declare const ConnectAgentIdError_base: Schema.Class<ConnectAgentIdError, Schema.TaggedStruct<"ConnectAgentIdError", {
|
|
20
|
+
readonly cause: Schema.Defect;
|
|
21
|
+
}>, import("effect/Cause").YieldableError>;
|
|
22
|
+
export declare class ConnectAgentIdError extends ConnectAgentIdError_base {
|
|
23
|
+
}
|
|
24
|
+
declare const ConnectRelationshipError_base: Schema.Class<ConnectRelationshipError, Schema.TaggedStruct<"ConnectRelationshipError", {
|
|
25
|
+
readonly detail: Schema.String;
|
|
26
|
+
readonly reason: Schema.Literals<readonly ["malformed", "stale", "cyclic", "missing_parent", "cross_host", "ambiguous_ownership"]>;
|
|
27
|
+
}>, import("effect/Cause").YieldableError>;
|
|
28
|
+
export declare class ConnectRelationshipError extends ConnectRelationshipError_base {
|
|
29
|
+
}
|
|
30
|
+
declare const ConnectRelationshipStoreError_base: Schema.Class<ConnectRelationshipStoreError, Schema.TaggedStruct<"ConnectRelationshipStoreError", {
|
|
31
|
+
readonly cause: Schema.Defect;
|
|
32
|
+
readonly operation: Schema.String;
|
|
33
|
+
}>, import("effect/Cause").YieldableError>;
|
|
34
|
+
export declare class ConnectRelationshipStoreError extends ConnectRelationshipStoreError_base {
|
|
35
|
+
}
|
|
36
|
+
declare const TerminalAgentNotFoundError_base: Schema.Class<TerminalAgentNotFoundError, Schema.TaggedStruct<"TerminalAgentNotFoundError", {
|
|
37
|
+
readonly agentId: Schema.String;
|
|
38
|
+
readonly host: Schema.String;
|
|
39
|
+
}>, import("effect/Cause").YieldableError>;
|
|
40
|
+
export declare class TerminalAgentNotFoundError extends TerminalAgentNotFoundError_base {
|
|
41
|
+
}
|
|
42
|
+
declare const TerminalBusyError_base: Schema.Class<TerminalBusyError, Schema.TaggedStruct<"TerminalBusyError", {
|
|
43
|
+
readonly agentId: Schema.String;
|
|
44
|
+
readonly host: Schema.String;
|
|
45
|
+
}>, import("effect/Cause").YieldableError>;
|
|
46
|
+
export declare class TerminalBusyError extends TerminalBusyError_base {
|
|
47
|
+
}
|
|
48
|
+
declare const TerminalProtocolError_base: Schema.Class<TerminalProtocolError, Schema.TaggedStruct<"TerminalProtocolError", {
|
|
49
|
+
readonly cause: Schema.Defect;
|
|
50
|
+
readonly detail: Schema.String;
|
|
51
|
+
}>, import("effect/Cause").YieldableError>;
|
|
52
|
+
export declare class TerminalProtocolError extends TerminalProtocolError_base {
|
|
53
|
+
}
|
|
54
|
+
declare const TerminalTransportError_base: Schema.Class<TerminalTransportError, Schema.TaggedStruct<"TerminalTransportError", {
|
|
55
|
+
readonly cause: Schema.Defect;
|
|
56
|
+
readonly detail: Schema.String;
|
|
57
|
+
readonly operation: Schema.String;
|
|
58
|
+
}>, import("effect/Cause").YieldableError>;
|
|
59
|
+
export declare class TerminalTransportError extends TerminalTransportError_base {
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;;;;AAE/B,qBAAa,kBAAmB,SAAQ,uBAGvC;CAAG;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAG1C;CAAG;;;;;;AAEJ,qBAAa,gBAAiB,SAAQ,qBAOrC;CAAG;;;;AAEJ,qBAAa,mBAAoB,SAAQ,wBAGxC;CAAG;;;;;AAEJ,qBAAa,wBAAyB,SAAQ,6BAa7C;CAAG;;;;;AAEJ,qBAAa,6BAA8B,SAAQ,kCAGlD;CAAG;;;;;AAEJ,qBAAa,0BAA2B,SAAQ,+BAG/C;CAAG;;;;;AAEJ,qBAAa,iBAAkB,SAAQ,sBAGtC;CAAG;;;;;AAEJ,qBAAa,qBAAsB,SAAQ,0BAG1C;CAAG;;;;;;AAEJ,qBAAa,sBAAuB,SAAQ,2BAG3C;CAAG"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
export class ConnectTargetError extends Schema.TaggedError()("ConnectTargetError", { reason: Schema.Literals(["malformed", "unknown"]) }) {
|
|
3
|
+
}
|
|
4
|
+
export class ConnectBootstrapError extends Schema.TaggedError()("ConnectBootstrapError", { detail: Schema.String }) {
|
|
5
|
+
}
|
|
6
|
+
export class ConnectPeerError extends Schema.TaggedError()("ConnectPeerError", {
|
|
7
|
+
cause: Schema.Defect(),
|
|
8
|
+
host: Schema.String,
|
|
9
|
+
reason: Schema.Literals(["offline", "unavailable", "timeout", "request_failed", "invalid_response"])
|
|
10
|
+
}) {
|
|
11
|
+
}
|
|
12
|
+
export class ConnectAgentIdError extends Schema.TaggedError()("ConnectAgentIdError", { cause: Schema.Defect() }) {
|
|
13
|
+
}
|
|
14
|
+
export class ConnectRelationshipError extends Schema.TaggedError()("ConnectRelationshipError", {
|
|
15
|
+
detail: Schema.String,
|
|
16
|
+
reason: Schema.Literals([
|
|
17
|
+
"malformed",
|
|
18
|
+
"stale",
|
|
19
|
+
"cyclic",
|
|
20
|
+
"missing_parent",
|
|
21
|
+
"cross_host",
|
|
22
|
+
"ambiguous_ownership"
|
|
23
|
+
])
|
|
24
|
+
}) {
|
|
25
|
+
}
|
|
26
|
+
export class ConnectRelationshipStoreError extends Schema.TaggedError()("ConnectRelationshipStoreError", { cause: Schema.Defect(), operation: Schema.String }) {
|
|
27
|
+
}
|
|
28
|
+
export class TerminalAgentNotFoundError extends Schema.TaggedError()("TerminalAgentNotFoundError", { agentId: Schema.String, host: Schema.String }) {
|
|
29
|
+
}
|
|
30
|
+
export class TerminalBusyError extends Schema.TaggedError()("TerminalBusyError", { agentId: Schema.String, host: Schema.String }) {
|
|
31
|
+
}
|
|
32
|
+
export class TerminalProtocolError extends Schema.TaggedError()("TerminalProtocolError", { cause: Schema.Defect(), detail: Schema.String }) {
|
|
33
|
+
}
|
|
34
|
+
export class TerminalTransportError extends Schema.TaggedError()("TerminalTransportError", { cause: Schema.Defect(), detail: Schema.String, operation: Schema.String }) {
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,CACtD;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CACpF,uBAAuB,EACvB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC1B;CAAG;AAEJ,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,EAAoB,CAC1E,kBAAkB,EAClB;IACE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;CACrG,CACF;CAAG;AAEJ,MAAM,OAAO,mBAAoB,SAAQ,MAAM,CAAC,WAAW,EAAuB,CAChF,qBAAqB,EACrB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAC3B;CAAG;AAEJ,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;QACtB,WAAW;QACX,OAAO;QACP,QAAQ;QACR,gBAAgB;QAChB,YAAY;QACZ,qBAAqB;KACtB,CAAC;CACH,CACF;CAAG;AAEJ,MAAM,OAAO,6BAA8B,SAAQ,MAAM,CAAC,WAAW,EAAiC,CACpG,+BAA+B,EAC/B,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CACrD;CAAG;AAEJ,MAAM,OAAO,0BAA2B,SAAQ,MAAM,CAAC,WAAW,EAA8B,CAC9F,4BAA4B,EAC5B,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAChD;CAAG;AAEJ,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAC5E,mBAAmB,EACnB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAChD;CAAG;AAEJ,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,WAAW,EAAyB,CACpF,uBAAuB,EACvB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAClD;CAAG;AAEJ,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,CAC5E;CAAG"}
|
package/dist/forest.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { ConnectRelationshipError } from "./errors.js";
|
|
3
|
+
import { ConnectAgentRelation } from "./model.js";
|
|
4
|
+
export declare const ConnectForestEdge: Schema.Struct<{
|
|
5
|
+
readonly host: Schema.String;
|
|
6
|
+
readonly agentId: Schema.String;
|
|
7
|
+
readonly parentHost: Schema.String;
|
|
8
|
+
readonly parentAgentId: Schema.String;
|
|
9
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
10
|
+
}>;
|
|
11
|
+
export type ConnectForestEdge = typeof ConnectForestEdge.Type;
|
|
12
|
+
export declare const ConnectForest: Schema.Struct<{
|
|
13
|
+
readonly edges: Schema.$Array<Schema.Struct<{
|
|
14
|
+
readonly host: Schema.String;
|
|
15
|
+
readonly agentId: Schema.String;
|
|
16
|
+
readonly parentHost: Schema.String;
|
|
17
|
+
readonly parentAgentId: Schema.String;
|
|
18
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
19
|
+
}>>;
|
|
20
|
+
readonly roots: Schema.$Array<Schema.Struct<{
|
|
21
|
+
readonly host: Schema.String;
|
|
22
|
+
readonly agentId: Schema.String;
|
|
23
|
+
}>>;
|
|
24
|
+
}>;
|
|
25
|
+
export type ConnectForest = typeof ConnectForest.Type;
|
|
26
|
+
export interface ConnectRelationshipNode {
|
|
27
|
+
readonly host: string;
|
|
28
|
+
readonly id: string;
|
|
29
|
+
readonly relationship?: {
|
|
30
|
+
readonly parentAgentId: string;
|
|
31
|
+
readonly relation: ConnectAgentRelation;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export declare const connectRelationshipViolation: (agents: ReadonlyArray<ConnectRelationshipNode>) => ConnectRelationshipError | undefined;
|
|
35
|
+
export declare const validateConnectRelationships: (agents: readonly ConnectRelationshipNode[]) => Effect.Effect<undefined, ConnectRelationshipError, never>;
|
|
36
|
+
export declare const buildConnectForest: (input: readonly {
|
|
37
|
+
readonly id: string;
|
|
38
|
+
readonly host: string;
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly kind: string;
|
|
41
|
+
readonly state: string;
|
|
42
|
+
readonly work: string;
|
|
43
|
+
readonly lastActivityAt: number;
|
|
44
|
+
readonly relationship?: {
|
|
45
|
+
readonly parentAgentId: string;
|
|
46
|
+
readonly relation: "delegated" | "pair" | "review";
|
|
47
|
+
};
|
|
48
|
+
}[]) => Effect.Effect<{
|
|
49
|
+
readonly edges: readonly {
|
|
50
|
+
readonly host: string;
|
|
51
|
+
readonly agentId: string;
|
|
52
|
+
readonly parentHost: string;
|
|
53
|
+
readonly parentAgentId: string;
|
|
54
|
+
readonly relation: "delegated" | "pair" | "review";
|
|
55
|
+
}[];
|
|
56
|
+
readonly roots: readonly {
|
|
57
|
+
readonly host: string;
|
|
58
|
+
readonly agentId: string;
|
|
59
|
+
}[];
|
|
60
|
+
}, ConnectRelationshipError, never>;
|
|
61
|
+
//# sourceMappingURL=forest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forest.d.ts","sourceRoot":"","sources":["../src/forest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAgB,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE7D,eAAO,MAAM,aAAa;;;;;;;;;;;;EAMxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;KACxC,CAAA;CACF;AAUD,eAAO,MAAM,4BAA4B,WAC/B,aAAa,CAAC,uBAAuB,CAAC,KAC7C,wBAAwB,GAAG,SAgD7B,CAAA;AAED,eAAO,MAAM,4BAA4B,2GAKxC,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;mCAuC9B,CAAA"}
|
package/dist/forest.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Effect, Schema } from "effect";
|
|
2
|
+
import { ConnectRelationshipError } from "./errors.js";
|
|
3
|
+
import { ConnectAgent, ConnectAgentRelation } from "./model.js";
|
|
4
|
+
export const ConnectForestEdge = Schema.Struct({
|
|
5
|
+
host: ConnectAgent.fields.host,
|
|
6
|
+
agentId: ConnectAgent.fields.id,
|
|
7
|
+
parentHost: ConnectAgent.fields.host,
|
|
8
|
+
parentAgentId: ConnectAgent.fields.id,
|
|
9
|
+
relation: ConnectAgentRelation
|
|
10
|
+
});
|
|
11
|
+
export const ConnectForest = Schema.Struct({
|
|
12
|
+
edges: Schema.Array(ConnectForestEdge),
|
|
13
|
+
roots: Schema.Array(Schema.Struct({
|
|
14
|
+
host: ConnectAgent.fields.host,
|
|
15
|
+
agentId: ConnectAgent.fields.id
|
|
16
|
+
}))
|
|
17
|
+
});
|
|
18
|
+
const relationshipError = (reason, detail) => new ConnectRelationshipError({ detail, reason });
|
|
19
|
+
const keyOf = (agent) => `${agent.host.toLowerCase()}\u0000${agent.id}`;
|
|
20
|
+
export const connectRelationshipViolation = (agents) => {
|
|
21
|
+
const byKey = new Map();
|
|
22
|
+
for (const agent of agents) {
|
|
23
|
+
const key = keyOf(agent);
|
|
24
|
+
if (byKey.has(key)) {
|
|
25
|
+
return relationshipError("ambiguous_ownership", `agent ${agent.id} has more than one owner on ${agent.host}`);
|
|
26
|
+
}
|
|
27
|
+
byKey.set(key, agent);
|
|
28
|
+
}
|
|
29
|
+
for (const agent of agents) {
|
|
30
|
+
if (agent.relationship === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
const parent = byKey.get(`${agent.host.toLowerCase()}\u0000${agent.relationship.parentAgentId}`);
|
|
33
|
+
if (parent === undefined) {
|
|
34
|
+
const foreignParent = agents.find((candidate) => candidate.id === agent.relationship?.parentAgentId);
|
|
35
|
+
if (foreignParent !== undefined) {
|
|
36
|
+
return relationshipError("cross_host", `agent ${agent.id} and its parent belong to different hosts`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
for (const agent of agents) {
|
|
41
|
+
const path = new Set();
|
|
42
|
+
let current = agent;
|
|
43
|
+
while (current !== undefined) {
|
|
44
|
+
const key = keyOf(current);
|
|
45
|
+
if (path.has(key)) {
|
|
46
|
+
return relationshipError("cyclic", `agent ${current.id} closes a relationship cycle`);
|
|
47
|
+
}
|
|
48
|
+
path.add(key);
|
|
49
|
+
current = current.relationship === undefined
|
|
50
|
+
? undefined
|
|
51
|
+
: byKey.get(`${current.host.toLowerCase()}\u0000${current.relationship.parentAgentId}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
export const validateConnectRelationships = Effect.fn("HerdrConnect.validateRelationships")(function* (agents) {
|
|
56
|
+
const violation = connectRelationshipViolation(agents);
|
|
57
|
+
if (violation !== undefined)
|
|
58
|
+
return yield* violation;
|
|
59
|
+
});
|
|
60
|
+
export const buildConnectForest = Effect.fn("HerdrConnect.buildForest")(function* (input) {
|
|
61
|
+
const agents = yield* Schema.decodeUnknownEffect(Schema.Array(ConnectAgent).check(Schema.isMaxLength(1_024)))(input).pipe(Effect.mapError(() => relationshipError("malformed", "agent relationship input is malformed")));
|
|
62
|
+
yield* validateConnectRelationships(agents);
|
|
63
|
+
const byKey = new Map();
|
|
64
|
+
for (const agent of agents) {
|
|
65
|
+
const key = keyOf(agent);
|
|
66
|
+
byKey.set(key, agent);
|
|
67
|
+
}
|
|
68
|
+
const roots = [];
|
|
69
|
+
const edges = [];
|
|
70
|
+
for (const agent of agents) {
|
|
71
|
+
if (agent.relationship === undefined) {
|
|
72
|
+
roots.push({ agentId: agent.id, host: agent.host });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const parent = byKey.get(`${agent.host.toLowerCase()}\u0000${agent.relationship.parentAgentId}`);
|
|
76
|
+
if (parent === undefined) {
|
|
77
|
+
roots.push({ agentId: agent.id, host: agent.host });
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
edges.push({
|
|
81
|
+
host: agent.host,
|
|
82
|
+
agentId: agent.id,
|
|
83
|
+
parentHost: parent.host,
|
|
84
|
+
parentAgentId: agent.relationship.parentAgentId,
|
|
85
|
+
relation: agent.relationship.relation
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return yield* Schema.decodeUnknownEffect(ConnectForest)({ edges, roots }).pipe(Effect.mapError(() => relationshipError("malformed", "validated forest could not be encoded")));
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=forest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forest.js","sourceRoot":"","sources":["../src/forest.ts"],"names":[],"mappings":"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"}
|
package/dist/id.d.ts
ADDED
package/dist/id.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAY,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,cAAc,6FAYzB,CAAA"}
|
package/dist/id.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Crypto, Effect, Encoding } from "effect";
|
|
2
|
+
import { ConnectAgentIdError } from "./errors.js";
|
|
3
|
+
export const connectAgentId = Effect.fn("HerdrConnect.agentId")(function* (host, paneId) {
|
|
4
|
+
const cryptoService = yield* Crypto.Crypto;
|
|
5
|
+
const digest = yield* cryptoService
|
|
6
|
+
.digest("SHA-256", new TextEncoder().encode(`${host.toLowerCase()}\0${paneId}`))
|
|
7
|
+
.pipe(Effect.mapError((cause) => new ConnectAgentIdError({ cause })));
|
|
8
|
+
return `agent-${Encoding.encodeBase64Url(digest)}`;
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=id.js.map
|
package/dist/id.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EACvE,IAAY,EACZ,MAAc;IAEd,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa;SAChC,MAAM,CACL,SAAS,EACT,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC,CAC7D;SACA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACvE,OAAO,SAAS,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAA;AACpD,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./activity-store.js";
|
|
2
|
+
export * from "./directory.js";
|
|
3
|
+
export * from "./errors.js";
|
|
4
|
+
export * from "./forest.js";
|
|
5
|
+
export * from "./id.js";
|
|
6
|
+
export * from "./keyboard.js";
|
|
7
|
+
export * from "./model.js";
|
|
8
|
+
export * from "./relationship-store.js";
|
|
9
|
+
export * from "./target.js";
|
|
10
|
+
export * from "./terminal-input.js";
|
|
11
|
+
export * from "./terminal.js";
|
|
12
|
+
export * from "./view.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA;AACvC,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./activity-store.js";
|
|
2
|
+
export * from "./directory.js";
|
|
3
|
+
export * from "./errors.js";
|
|
4
|
+
export * from "./forest.js";
|
|
5
|
+
export * from "./id.js";
|
|
6
|
+
export * from "./keyboard.js";
|
|
7
|
+
export * from "./model.js";
|
|
8
|
+
export * from "./relationship-store.js";
|
|
9
|
+
export * from "./target.js";
|
|
10
|
+
export * from "./terminal-input.js";
|
|
11
|
+
export * from "./terminal.js";
|
|
12
|
+
export * from "./view.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,yBAAyB,CAAA;AACvC,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Effect } from "effect";
|
|
2
|
+
export declare const terminalKillOptions: {
|
|
3
|
+
forceKillAfter: "1 second";
|
|
4
|
+
};
|
|
5
|
+
export declare const releaseTerminalControl: <ReleaseError, ExitError, KillError, ReleaseRequirements, ExitRequirements, KillRequirements>(release: Effect.Effect<void, ReleaseError, ReleaseRequirements>, exitCode: Effect.Effect<unknown, ExitError, ExitRequirements>, kill: Effect.Effect<unknown, KillError, KillRequirements>) => Effect.Effect<void, never, ExitRequirements | KillRequirements | ReleaseRequirements>;
|
|
6
|
+
//# sourceMappingURL=terminal-release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-release.d.ts","sourceRoot":"","sources":["../../src/internal/terminal-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwB,MAAM,QAAQ,CAAA;AAGrD,eAAO,MAAM,mBAAmB;;CAET,CAAA;AAEvB,eAAO,MAAM,sBAAsB,GACjC,YAAY,EACZ,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,qRAyBhB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect, Fiber, Option, Scope } from "effect";
|
|
2
|
+
export const terminalKillOptions = {
|
|
3
|
+
forceKillAfter: "1 second"
|
|
4
|
+
};
|
|
5
|
+
export const releaseTerminalControl = Effect.fn("HerdrTerminal.releaseControl")(function* (release, exitCode, kill) {
|
|
6
|
+
yield* Effect.acquireUseRelease(Scope.make(), (releaseScope) => Effect.gen(function* () {
|
|
7
|
+
const releaseFiber = yield* Effect.forkIn(release.pipe(Effect.ignore, Effect.andThen(exitCode), Effect.ignore), releaseScope);
|
|
8
|
+
const released = yield* Fiber.await(releaseFiber).pipe(Effect.timeoutOption(terminalKillOptions.forceKillAfter));
|
|
9
|
+
if (Option.isNone(released))
|
|
10
|
+
yield* kill.pipe(Effect.ignore);
|
|
11
|
+
}), (releaseScope, exit) => Scope.close(releaseScope, exit));
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=terminal-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-release.js","sourceRoot":"","sources":["../../src/internal/terminal-release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAGrD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc,EAAE,UAAU;CACL,CAAA;AAEvB,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,QAAQ,CAAC,EAQvF,OAA+D,EAC/D,QAA6D,EAC7D,IAAyD;IAEzD,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAC7B,KAAK,CAAC,IAAI,EAAE,EACZ,CAAC,YAAY,EAAE,EAAE,CACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CACvC,OAAO,CAAC,IAAI,CACV,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,MAAM,CACd,EACD,YAAY,CACb,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,cAAc,CAAC,CACzD,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9D,CAAC,CAAC,EACJ,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CACxD,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,QAAS,MAAM,gBAAgB,MAAM,SAAS,MAAM,KAAG,MAAM,GAAG,IAgBjG,CAAA"}
|
package/dist/keyboard.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const nextConnectAgentIndex = (key, currentIndex, count) => {
|
|
2
|
+
if (count === 0)
|
|
3
|
+
return null;
|
|
4
|
+
switch (key) {
|
|
5
|
+
case "ArrowDown":
|
|
6
|
+
case "j":
|
|
7
|
+
return (currentIndex + 1) % count;
|
|
8
|
+
case "ArrowUp":
|
|
9
|
+
case "k":
|
|
10
|
+
return (currentIndex - 1 + count) % count;
|
|
11
|
+
case "Home":
|
|
12
|
+
return 0;
|
|
13
|
+
case "End":
|
|
14
|
+
return count - 1;
|
|
15
|
+
default:
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,YAAoB,EAAE,KAAa,EAAiB,EAAE;IACvG,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,GAAG;YACN,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;QACnC,KAAK,SAAS,CAAC;QACf,KAAK,GAAG;YACN,OAAO,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAA;QAC3C,KAAK,MAAM;YACT,OAAO,CAAC,CAAA;QACV,KAAK,KAAK;YACR,OAAO,KAAK,GAAG,CAAC,CAAA;QAClB;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC,CAAA"}
|