@principal-ai/control-tower-core 0.2.1 → 0.3.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/dist/client/BaseClient.d.ts +23 -0
- package/dist/client/BaseClient.d.ts.map +1 -1
- package/dist/client/BaseClient.js +60 -0
- package/dist/client/PresenceClient.d.ts +43 -8
- package/dist/client/PresenceClient.d.ts.map +1 -1
- package/dist/client/PresenceClient.js +72 -18
- package/dist/generated/client-connection-auth.types.d.ts +312 -0
- package/dist/generated/client-connection-auth.types.d.ts.map +1 -0
- package/dist/generated/client-connection-auth.types.js +11 -0
- package/dist/generated/control-tower-execution.types.d.ts +445 -0
- package/dist/generated/control-tower-execution.types.d.ts.map +1 -0
- package/dist/generated/control-tower-execution.types.js +11 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +6 -6
- package/dist/index.mjs +94 -7
- package/dist/index.mjs.map +6 -6
- package/dist/server/BaseServer.d.ts +18 -1
- package/dist/server/BaseServer.d.ts.map +1 -1
- package/dist/server/BaseServer.js +15 -1
- package/dist/server/ServerBuilder.d.ts +22 -1
- package/dist/server/ServerBuilder.d.ts.map +1 -1
- package/dist/server/ServerBuilder.js +24 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/telemetry/EventValidationIntegration.d.ts +135 -0
- package/dist/telemetry/EventValidationIntegration.d.ts.map +1 -0
- package/dist/telemetry/EventValidationIntegration.js +253 -0
- package/dist/telemetry/EventValidationIntegration.test.d.ts +7 -0
- package/dist/telemetry/EventValidationIntegration.test.d.ts.map +1 -0
- package/dist/telemetry/EventValidationIntegration.test.js +322 -0
- package/dist/telemetry/TelemetryCapture.d.ts +268 -0
- package/dist/telemetry/TelemetryCapture.d.ts.map +1 -0
- package/dist/telemetry/TelemetryCapture.js +263 -0
- package/dist/telemetry/TelemetryCapture.test.d.ts +7 -0
- package/dist/telemetry/TelemetryCapture.test.d.ts.map +1 -0
- package/dist/telemetry/TelemetryCapture.test.js +396 -0
- package/dist/telemetry-example.d.ts +33 -0
- package/dist/telemetry-example.d.ts.map +1 -0
- package/dist/telemetry-example.js +124 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/presence.d.ts +69 -0
- package/dist/types/presence.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -5485,6 +5485,7 @@ class BaseClient extends TypedEventEmitter {
|
|
|
5485
5485
|
reconnectTimer = null;
|
|
5486
5486
|
lastConnectionUrl = null;
|
|
5487
5487
|
lastToken = null;
|
|
5488
|
+
pendingRequests = new Map;
|
|
5488
5489
|
constructor(config) {
|
|
5489
5490
|
super();
|
|
5490
5491
|
this.config = config;
|
|
@@ -5656,6 +5657,34 @@ class BaseClient extends TypedEventEmitter {
|
|
|
5656
5657
|
};
|
|
5657
5658
|
await this.transport.send(message);
|
|
5658
5659
|
}
|
|
5660
|
+
async request(type, payload, timeoutMs = 5000) {
|
|
5661
|
+
if (this.connectionState !== "connected") {
|
|
5662
|
+
throw new Error("Client must be connected to send requests");
|
|
5663
|
+
}
|
|
5664
|
+
const id = this.generateId();
|
|
5665
|
+
const message = {
|
|
5666
|
+
id,
|
|
5667
|
+
type,
|
|
5668
|
+
payload,
|
|
5669
|
+
timestamp: Date.now()
|
|
5670
|
+
};
|
|
5671
|
+
return new Promise((resolve, reject) => {
|
|
5672
|
+
const timeout = setTimeout(() => {
|
|
5673
|
+
this.pendingRequests.delete(id);
|
|
5674
|
+
reject(new Error(`Request '${type}' timed out after ${timeoutMs}ms`));
|
|
5675
|
+
}, timeoutMs);
|
|
5676
|
+
this.pendingRequests.set(id, {
|
|
5677
|
+
resolve,
|
|
5678
|
+
reject,
|
|
5679
|
+
timeout
|
|
5680
|
+
});
|
|
5681
|
+
this.transport.send(message).catch((error) => {
|
|
5682
|
+
this.pendingRequests.delete(id);
|
|
5683
|
+
clearTimeout(timeout);
|
|
5684
|
+
reject(error);
|
|
5685
|
+
});
|
|
5686
|
+
});
|
|
5687
|
+
}
|
|
5659
5688
|
getConnectionState() {
|
|
5660
5689
|
return this.connectionState;
|
|
5661
5690
|
}
|
|
@@ -5672,6 +5701,13 @@ class BaseClient extends TypedEventEmitter {
|
|
|
5672
5701
|
return this.userId;
|
|
5673
5702
|
}
|
|
5674
5703
|
async handleMessage(message) {
|
|
5704
|
+
if (message.id && this.pendingRequests.has(message.id)) {
|
|
5705
|
+
const pending = this.pendingRequests.get(message.id);
|
|
5706
|
+
clearTimeout(pending.timeout);
|
|
5707
|
+
this.pendingRequests.delete(message.id);
|
|
5708
|
+
pending.resolve(message.payload);
|
|
5709
|
+
return;
|
|
5710
|
+
}
|
|
5675
5711
|
try {
|
|
5676
5712
|
switch (message.type) {
|
|
5677
5713
|
case "auth_result":
|
|
@@ -5874,13 +5910,46 @@ class PresenceClient extends TypedEventEmitter {
|
|
|
5874
5910
|
}
|
|
5875
5911
|
}
|
|
5876
5912
|
async getOnlineUsers() {
|
|
5877
|
-
|
|
5913
|
+
const response = await this.client.request("presence:get_users", {});
|
|
5914
|
+
return response.users;
|
|
5878
5915
|
}
|
|
5879
|
-
async
|
|
5880
|
-
|
|
5916
|
+
async getUserPresence(userId) {
|
|
5917
|
+
const response = await this.client.request("presence:get_user", { userId });
|
|
5918
|
+
return response.user;
|
|
5919
|
+
}
|
|
5920
|
+
async getRepoUsers(owner, repo) {
|
|
5921
|
+
const response = await this.client.request("presence:get_repo_users", { owner, repo });
|
|
5922
|
+
return response.users;
|
|
5923
|
+
}
|
|
5924
|
+
async setStatus(status, statusMessage) {
|
|
5925
|
+
const response = await this.client.request("presence:set_status", { status, statusMessage });
|
|
5926
|
+
if (!response.success) {
|
|
5927
|
+
throw new Error(response.error || "Failed to set status");
|
|
5928
|
+
}
|
|
5881
5929
|
}
|
|
5882
5930
|
async setVisibility(visible) {
|
|
5883
|
-
|
|
5931
|
+
const response = await this.client.request("presence:set_visibility", { visible });
|
|
5932
|
+
if (!response.success) {
|
|
5933
|
+
throw new Error(response.error || "Failed to set visibility");
|
|
5934
|
+
}
|
|
5935
|
+
}
|
|
5936
|
+
async reportRepoOpened(repoId, branch) {
|
|
5937
|
+
const response = await this.client.request("presence:repo_open", { repoId, branch });
|
|
5938
|
+
if (!response.success) {
|
|
5939
|
+
throw new Error(response.error || "Failed to report repo opened");
|
|
5940
|
+
}
|
|
5941
|
+
}
|
|
5942
|
+
async reportRepoClosed(repoId) {
|
|
5943
|
+
const response = await this.client.request("presence:repo_close", { repoId });
|
|
5944
|
+
if (!response.success) {
|
|
5945
|
+
throw new Error(response.error || "Failed to report repo closed");
|
|
5946
|
+
}
|
|
5947
|
+
}
|
|
5948
|
+
async reportRepoFocused(repoId) {
|
|
5949
|
+
const response = await this.client.request("presence:repo_focus", { repoId });
|
|
5950
|
+
if (!response.success) {
|
|
5951
|
+
throw new Error(response.error || "Failed to report repo focused");
|
|
5952
|
+
}
|
|
5884
5953
|
}
|
|
5885
5954
|
getClient() {
|
|
5886
5955
|
return this.client;
|
|
@@ -6491,11 +6560,23 @@ class BaseServer extends TypedEventEmitter {
|
|
|
6491
6560
|
timestamp: Date.now()
|
|
6492
6561
|
});
|
|
6493
6562
|
break;
|
|
6494
|
-
default:
|
|
6563
|
+
default: {
|
|
6564
|
+
if (this.config.customMessageHandler) {
|
|
6565
|
+
const sendResponse = async (response) => {
|
|
6566
|
+
await this.sendToClient(clientId, {
|
|
6567
|
+
id: message.id,
|
|
6568
|
+
...response
|
|
6569
|
+
});
|
|
6570
|
+
};
|
|
6571
|
+
const handled = await this.config.customMessageHandler(clientId, message, sendResponse);
|
|
6572
|
+
if (handled)
|
|
6573
|
+
break;
|
|
6574
|
+
}
|
|
6495
6575
|
await this.sendToClient(clientId, {
|
|
6496
6576
|
type: "error",
|
|
6497
6577
|
error: `Unknown message type: ${message.type}`
|
|
6498
6578
|
});
|
|
6579
|
+
}
|
|
6499
6580
|
}
|
|
6500
6581
|
} catch (error) {
|
|
6501
6582
|
await this.sendToClient(clientId, {
|
|
@@ -6823,6 +6904,7 @@ class ServerBuilder {
|
|
|
6823
6904
|
webSocketPath;
|
|
6824
6905
|
webSocketServer;
|
|
6825
6906
|
experimentalFeatures;
|
|
6907
|
+
customMessageHandler;
|
|
6826
6908
|
withTransport(transport) {
|
|
6827
6909
|
this.transport = transport;
|
|
6828
6910
|
return this;
|
|
@@ -6867,6 +6949,10 @@ class ServerBuilder {
|
|
|
6867
6949
|
this.experimentalFeatures = features;
|
|
6868
6950
|
return this;
|
|
6869
6951
|
}
|
|
6952
|
+
withCustomMessageHandler(handler) {
|
|
6953
|
+
this.customMessageHandler = handler;
|
|
6954
|
+
return this;
|
|
6955
|
+
}
|
|
6870
6956
|
build() {
|
|
6871
6957
|
if (!this.transport) {
|
|
6872
6958
|
throw new Error("Transport adapter is required");
|
|
@@ -6896,7 +6982,8 @@ class ServerBuilder {
|
|
|
6896
6982
|
enableBroadcast: false,
|
|
6897
6983
|
warnOnExperimentalUse: true,
|
|
6898
6984
|
trackUsageMetrics: false
|
|
6899
|
-
}
|
|
6985
|
+
},
|
|
6986
|
+
customMessageHandler: this.customMessageHandler
|
|
6900
6987
|
};
|
|
6901
6988
|
const server = new BaseServer(config);
|
|
6902
6989
|
if (this.roomManager.constructor.name === "DefaultRoomManager") {
|
|
@@ -6970,4 +7057,4 @@ export {
|
|
|
6970
7057
|
BaseClient
|
|
6971
7058
|
};
|
|
6972
7059
|
|
|
6973
|
-
//# debugId=
|
|
7060
|
+
//# debugId=A1A2F55B1633C22A64756E2164756E21
|